I/O(input/output)是输入和输出的缩写,可以定向的从指定文件中获得内容,也可以将命令行的输出结果存储到文件中,并且可以通过将多个命令行关联起来,从而形成强大的管道命令。常用的输入、输出命令如下:
命令 | 内容 | 备注 |
---|---|---|
cat | 合并文件 | |
sort | 对文本排序 | |
uniq | 报告或删除文件中重复的行 | |
wc | 打印文件中的换行符、字和字节的个数 | |
grep | 打印匹配行 | |
head | 输出文件的第一部分内容 | |
tail | 输出文件的最后一部分内容 | |
tee | 读取标准输入的数据,并将其内容输出到标准输出和文件中 |
命令的运行结果会发送到被称为标准输出(standard output)的特殊文件,状态信息被发送到被称为标准错误(standard error)的文件中。默认情况下,标准输出和标准错误的文件内容都被链接到屏幕,而不会存储在文件中。通常情况下,标准输入(standard input)通过键盘进行输入。
通常情况下,输入内容来自于键盘,输出内容显示于屏幕上。
输出的重定向
通过标准输出的重定向可以实现输出内容到指定位置。重定向的操作符为">"。
例如下例会将命令的输出内容保存至一个文件中,而不是显示在屏幕上:
ls > ls_output.txt
运行后屏幕上不会显示ls命令的结果,但是通过less命令则可以查看ls_output.txt中所存储的ls命令的运行结果。
如果ls命令指定了一个不存在的目录,则会在屏幕上显示错误提示,这是因为只重定向了标准输出,而没有重定向标准错误。每个输出内容的3个文件流分别对应于标准输入文件、标准输出文件和标准错误文件,对应的序号分别为0、1和2,因此想将错误提示存入文件时,加上文件描述符2即可,例如:
ls /not/exist/direction 2> ls_error.txt
当文件存在时,">"会在文件头部加入命令的标准输出结果,当我们要从文件的尾部添加输出内容时,使用重定向操作符">>"即可。当所指定的文档文件不存在时,两个重定向操作符均会生成新的文档文件。
如果想将标准输出和标准错误均输出到同一个文档中时可以使用"&>"操作符。例如:
ls maybe/not/exist/ &> ls_output.txt
处理不想要的信息:(后续添加,看的不太懂)
标准输入的重定向
cat命令可以读取一个或多个文件,并把它们复制到标准输出文件中,格式如下:cat file1...。当cat后接单个的文档文件时,可用于显示短的文本文件,例如:
cat ls_output.txt
当cat后接多个文件时,会将这些文件合并后放入标准输出文件中。通过之前介绍过的重定向操作符">"可以将合并后的标准输出文件转存至一个文件中。
例如当有多个被拆分的视频分别为 gameOfThrones1.mp4、gameOfThrones2.mp4、gameOfThrones3.mp4、gameOfThrones4.mp4时,可以通过下述命令合并:
cat gameOfThrones*.mp4 > gameOfThrones.mp4
未完待续,p147
网友评论