Linux命令,进行命令的组合,协同工作,高效处理数据。提供管道和重定向机制,多命令协作就是通过管道和重定向来完成。
重定向
重定向:主要解决输出信息的保存问题,以及输入的形式
输入从定向:把文件导入到命令中
输出重定向:把原本要输出到屏幕的数据信息写道指定的文件中
日常学习中,相较于输入重定向,使用输出重定向的评率会更高。所以将输出重定向分为标准重定向和错误输出重定向
标准输入重定向(stdin,文件描述符为0):默认从键盘输入,也可以从其他文件或命令中输入。
标准输出重定向(stdout,文件描述符为1):默认输出到屏幕
标准错误重定向(stderr,文件描述符为2):默认输出到屏幕
输入重定向中用到的符号及作用
符号 | 作用 |
---|---|
命令<文件 | 将文件作为命令的标准输入 |
命令<<分界符 | 从标准输入中读取,知道遇见分解符才停止 |
命令<文件1<文件2 | 将文件1作为命令的标准输入,并将标准输出到文件2 |
输出重定向中用到的符号及作用
符号 | 作用 |
---|---|
命令>文件 | 将输出标准输出重定向到一个文件中(清空原有文件数据) |
命令 2>文件 | 将错误输出重定向到一个文件中(清空原有文件数据) |
命令>>文件 | 将标准输出重定向到一个文件中(追加到原有内容的后面) |
命令 2>>文件 | 将错误输出重定向到一个文件中(追加到原有内容的后面) |
命令>>文件 2>&1 或 命令 & >>文件 | 将标准输出与错误输出共同写入到文件中(追加到原有内容的后面) |
对于重定向中的标准输出模式,可以省略文件描述符1不写,而错误输出模式的文件描述符2是必须要写的
例:
#在一个文件下创建三个文件,并在第一和第二个文件写入内容
touch test1.txt test2.txt test3.txt
vi test1.txt
vi test2.txt
# 利用标准输出重定向,将内容写入text3.txt
ll > test3.txt
cat test3.txt
#总用量 8
#-rw-rw-r--. 1 summer summer 0 4月 4 14:19 test2.txt
#-rw-rw-r--. 1 summer summer 21 4月 4 14:18 test3.txt
#-rw-rw-r--. 1 summer summer 21 4月 4 14:18 test.txt
#利用标准输出重定向将文件加在test2.txt文件内
ll >> test2.txt
cat test2.txt
#hello World
#welcome!
#总用量 12
#-rw-rw-r--. 1 summer summer 185 4月 4 14:19 test2.txt
#-rw-rw-r--. 1 summer summer 21 4月 4 14:18 test3.txt
#-rw-rw-r--. 1 summer summer 21 4月 4 14:18 test.txt
管道
管道命令符:|
作用:把前面一个命令原本要输出到屏幕的标准正常数据当做是最后一个命令的标准输入
管道可以把一系列命令连接起来,将前面命令的输出作为后面命令的输入,第1个命令利用管道传给第二个命令,第二个命令的输出传递给第三个命令的输入,依次递推
例:
touch 1 2
vim 1
cat 1 | grep hello > 2
cat 2
#hello