Reference
》查看
cat
从第一行开始显示文件内容。
-n显示行号
tac
从最后一行开始显示。
nl
显示时,输出行号。
more
一页一页的显示文件内容空格代表翻页,回车代表向下看一行。
空白键代表向下翻一页Enter代表向下翻一行/字串代表在这个显示的内容中,向下搜索『字串』关键字:f输出文件名和当前行的行号ctrl + f向下滚动一屏b或ctrl + b返回上一屏q退出more
less
与 more 类似,但是比 more 更好的是,他可以往前翻页,上下键可以实现上下翻页。
空白键向下翻一页pagedown向下翻一页pageup向上翻一页/字串向下搜索『字串』?字串向上搜索『字串』n重复前一个搜索 (与/或?有关)N反向的重复前一个搜索 (与/或?有关)q退出less
head
只看头几行
-n后面接数字,显示几行的意思
tail
只看尾巴几行
-n后面接数字,显示几行的意思-f实时更新
例子:
# 滚动显示最新日志
tail -f -n50 access.log》过滤
| 管道符
多个命令通过 | 链接,前一个命令的输出,是后一个命令的输入
ps -ef | grep dockergrep
查找文件里符合条件的字符串
grep [选项] 关键字 文件名-n显示行号-c计算找到“关键字”的次数-i忽略大小写的不同--color彩色字体-A<行数>除了显示符合搜索条件的那一行之外,并显示该行之后的 N 行内容-B<行数>除了显示符合搜索条件的那一行之外,并显示该行之前的 N 行内容
例子:
# 除了显示符合搜索条件的那一行之外,并显示该行之后的 10 行内容
grep "aaa" log.log -A 10
# 除了显示符合搜索条件的那一行之外,并显示该行之前的 10 行内容
grep "aaa" log.log -B 10
# 同时搜索满足条件以上两个条件的结果,并向下在打印剩下的 10 行
grep "aaa" log.log | grep "bb" -A 10
# 统计满足条件的的次数
grep "aaa" log.log | wc -lawk
Tip
对文本根据 空格 或者 tab 切割,然后根据操作获取符合条件的某行中某列的数据。
$n 获取第几个内容,$0 获取当前行,$NF 获取最后一个字段。
# a2
echo "a1 a2 a3" | awk '{print $2}'
# a3
echo "a1 a2 a3" | awk '{print $NF}'
# a2
echo "a1 a2 a3" | awk '{print $(NF-1)}'
内置函数:
toupper()字符转为大写tolower()字符转为小写length()返回字符串长度substr()返回子字符串
sed
diff
逐行比较文件的差异。 如果指定要比较目录,则 diff 会比较目录中相同文件名的文件,但不会比较其中子目录。
-<行数>指定要显示多少行的文本。此参数必须与-c或-u参数一并使用-a预设只会逐行比较文本文件-b不检查空格字符的不同-B不检查空白行-c显示全部内文,并标出不同之处-C<行数>与执行”-c<行数>“指令相同-H比较大文件时,可加快速度-i不检查大小写的不同-u<列数>,-U<列数>以合并的方式来显示文件内容的不同-w忽略全部的空格字符-W<宽度>在使用 -y 参数时,指定栏宽-y以并列的方式显示文件的异同之处
例子:
# 并排输出两个文件的不同
diff log1.log log2.log -y -W 50echo
echo [-e] [输出内容]-e支持反斜线控制的字符转换
| 控制字符 | 作用 |
|---|---|
\ | 输出\本身 |
\n | 换行符 |
\t | 制表符,也就是 Tab 键 |
输入/输出重定向
重定向命令列表如下:
| 命令 | 说明 |
|---|---|
| command > file | 将输出重定向到 file |
| command < file | 将输入重定向到 file |
| command >> file | 将输出以追加的方式重定向到 file |
| n > file | 将文件描述符为 n 的文件重定向到 file |
| n >> file | 将文件描述符为 n 的文件以追加的方式重定向到 file |
| n >& m | 将输出文件 m 和 n 合并 |
| n <& m | 将输入文件 m 和 n 合并 |
| << tag | 将开始标记 tag 和结束标记 tag 之间的内容作为输入 |
文件描述符:
- 0 通常是标准输入(STDIN)
- 1 是标准输出(STDOUT)
- 2 是标准错误输出(STDERR)
输出重定向
将 command 的结果输出到 file,file 内的已经存在的内容将被新内容覆盖
如果不希望文件内容被覆盖,可以使用 >> 追加到文件末尾
[command] > [file]例子:
echo "hello Linux" > file
# hello Linux
cat file
echo "hello Linux 2" >> file
# hello Linux
# hello Linux2
cat file
echo "hello Linux 3" > file
# hello Linux 3
cat file输入重定向
从 file 获取输入内容,重定向到 command
[command] < [file]例子:
echo "hello" > file
# hello
cat < file
# 读取 file 的内容,并将内容输出到 file2
cat < file > file2错误重定向
# 2 表示错误文件描述符
command 2>file例子:
aaa 2> file
# -bash: aaa: command not found
cat file# 有时候我们需要将标准输出流和标准错误流输入到一个文件。a.txt 存在,bb.txt 不存在。
ls a.txt bb.txt > error.log 2>&1
# 如果内容需要追加
ls a.txt bb.txt >> error.log 2>&1
# 如果不想要输出内容, 写入到 /dev/null 的内容都会被丢弃掉
ls a.txt bb.txt >> /dev/null 2>&1