1. 输入输出重定向
1.1 标准输出重定向
使用 >
符号将命令的标准输出重定向到文件:
date > date.txt
这将把 date 命令的输出保存到名为 date.txt
的文件中。
大多数进程中都有0,1,2,这三个文件描述符,0表示标准输入,可以理解为键盘输入;1表示标准输出,输出到终端;2表示标准错误,输出到终端;3以上表示为常规文件的描述符。其中,">"表示覆盖, ">>"表示追加。
1.2 标准错误输出重定向
使用 2>
符号将命令的标准错误输出重定向到文件:
cat nonexistent_file 2> error_log.txt
这将把尝试读取不存在文件的错误信息保存到名为 error_log.txt
的文件中。
1.3 标准输入重定向
使用 <
符号将文件内容作为命令的标准输入:
wc -w < input_text.txt
这将统计 input_text.txt
文件中的单词数量。
2. 管道
管道实际上也是一种重定向,重定向字符控制输出到文件,管道控制输出到其他程序。管道的作用是把上一个进程的输出作为下一个进程的输入,利用管道可以把若干个命令连接在一起。如下图所示:
使用 |
符号将一个命令的输出作为另一个命令的输入:
ps aux | grep "bash"
这将列出所有包含 "bash" 关键字的进程。
将/etc/passwd中的用户按UID数值大小排序并显示前3行。
sort -t " : " -k3 -n /etc/passwd | head -3
其中,-t指定字段分隔符,-k指定字段,-n表示按数值大小排序。