Linux 终端输入和输出详解


Linux 终端的输入和输出是我们调试过程中经常打交道的界面,但是其基本的内容,多数人不甚了解,这里我将详细进行说明,介绍一下有关终端界面的输入和输出的一些知识,做一个抛砖引玉。

1.  基本概念

标准输入[stdin  ] –0–  终端的输入的所有指令和字符都是输出标准输入
标准输出[stdout] –1–  标准输出,是按照正常的指令执行的输出,如:ls -al 显示文件夹所有的文件和文件夹的情况。
标准错误[stderr] –2– 出现异常情况下的输出,如在不存a.txt的路径下,输入 cat a.txt ,会输出: cat: a.txt: 没有那个文件或目录。

2.   管道  |  

管道作为一个标准输出和标准输入的连接器,从左往右执行,最后输出的是最右侧的指令的标准输出。
特点:
1)管道命令只处理前一个命令正确输出,不处理错误输出,需要错误指令也处理,可以使用 2>&1 进行重定向输出。
2)管道命令右边命令,必须能够接收标准输入流命令才行。
如下图为管道的作用方式:
管道的作用方式

3.  重定向 > 、 >> 和 <

1) > 将输出重新定向到其他,如:输出到文件或者把错误输出定向到标准输出,2>&1 合成到一输出
2) >> 输出时追加
3) < 选择其他的输入方式,不从终端输入,如: tee a.txt < b.txt | cat -n 即将b.txt的内容输出到 a.txt 并显示。

4.  输出黑洞 /dev/null

/dev/null 可视作一个只写的设备,通常用于不需要输出的场合,如下方式可以忽略输出:如:ls -al > /dev/null 你将不会看到如何的输出。

5.  tee

标准格式: tee [-ai] [–help] [–version] [filename1]..[filename2]
参数含义:
-a 追加模式写入
-i  忽略中断,即在进入tee输入时,无法通过ctrl-c的方式中断输入。
–help 帮助信息
–version 显示版本并退出
说明:
1)tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。如:输入 tee a.txt,可进入输入界面,输入的所有内容会在当前窗口输出的同时保存到a.txt文件中;我们也可以同时将输入内容保存到2个或者更多文件中去,如:tee a.txt b.txt
2) 作为管道的前端时,还可以将输入内容输出到管道后端。
如:输入 tee a.txt | cat -n ,可以看到如下输出:

3)tee常作为各种log保存的机制的管道后端,既可以在终端看到log,也可以保存log,方便后续检查以下是常见指令:

make -j6 2>&1 | tee build.log

6. 其他常见操作标准输入和输出的指令

1) cat / more / less
cat 用于显示整个文件内容,常与| 配合查找文件中的内容,如:

cat a.txt | grep key

more / less 用于分页显示,包含有搜索和上下浏览。
2) grep
用于搜索指定字符串,并输出到终端,常用于的关键字符串的检索。如:

grep -i "key word" -nR ./

更多请看:grep 用法详解

版权所有丨如未注明,均为原创,转载请注明转自:https://whonee.net/linux-input-and-output-instruction.html

历史上的今天:

  1. 2017:  SMedia视频播放解析:重点解析(0)

《Linux 终端输入和输出详解》有2个想法

发表评论

电子邮件地址不会被公开。 必填项已用*标注