
Linux-红帽认证 RHCSA-08-标准输入与输出、重定向、过滤器和管道
一、标准输入与输出、重定向
1、Linux 的标准输入与输出
在 Linux 中一切都使用文件表示,/dev/stdin 文件为标准输入设备通常是键盘,/dev/stdout 与 /dev/stderr 文件为标准输出和标准错误输出设备,通常是显示器。
设备 | 设备文件 | 文件描述符 | 类型 |
---|---|---|---|
键盘 | /dev/stdin | 0 | 标准输入 |
显示器 | /dev/stdout | 1 | 标准输出 |
显示器 | /dev/stderr | 2 | 标准错误输出 |
2、输入重定向
重新指定输入文件,即将标准输入的文件从 /dev/stdin 更改为另一个文件。
比如,默认情况下使用 cat 命令会接受默认标准输入设备键盘的输入,并输出到控制台,但是可以通过 < 符号修改标准输入设备,指定其他文件作为标准输入设备,并将文件中的内容读取并显示到控制台。
cat [0]< [file]
:将 cat 的标准输入文件从 /dev/stdin 重定向为 [file](0 可省略)
3、输出重定向
重新指定输出文件,即将标准输出的文件从 /dev/stdout 更改为另一个文件。
比如,cat /etc/passwd 会将文件信息标准输出到控制台,我们可以使用 > 修饰符修改标准输出设备,使用指定的文件做为标准输出设备。
cat [file] [1]> [File]
:将 cat [file] 的标准输出文件从 /dev/stdout 重定向为 [File],输出方式为覆盖(1 可省略)
cat [file] [1]>> [File]
:将 cat [file] 的标准输出文件从 /dev/stdout 重定向为 [File],输出方式为追加(1 可省略)
ls -l [file] [errFile] 1>[file.out] 2>[errFile.out]
:将 ls -l [file] 的标准输出和标准错误输出分别从 /dev/stdout 和 /dev/stderr 重定向为 [file.out] 和 [errFile.out],输出方式为追加。
二、使用 grep 过滤器搜索和过滤文件内容
grep "H" [grepText]
:在 [grepText] 中查找含 "H" 字符串所在的行
grep "^H" [grepText]
:在 [grepText] 中查找以 "H" 开头的字符串所在的行
grep "?" [grepText]
:在 [grepText] 中查找以 "?" 结尾的字符串所在的行
grep "l[ail]" [grepText]
:在 [grepText] 中查找包含 "la"、"li"、 "ll" 字符串所在的行
grep "e[a-z]" [grepText]
:在 [grepText] 中查找包含 "ea"、"eb"、"ec"、......、"ey"、"ez" 字符串所在的行
-
-n
:打印匹配的行及其行号,行号打印在行首 -
-c
:打印匹配的行数量 -
-v
:反选匹配的行
二、管道
在命令执行时有时输出的数据过于繁杂,这时我们就能够通过管道命令 "|" 去处理这些数据。
注意管道命令 "|" 仅仅能处理前面一个命令传来的正确信息,也就是标准输出,对于标准错误输出没有直接处理的能力,这样的命令才可为管道命令。
在每个管道后面接的第一个数据是命令,且这个命令必须要能够接受标准输入的数据才行。比如 less、more、head、tail 等是可以接受标准输入的管道命令,而 ls、cp、mv 等就不是管道命令。
ls -al [/etc] | more
:当我们想查看 [/etc] 中的文件可以利用 ls -al 命令,但是命令的输出会将屏幕占满,这时我们就可以将 ls -al 的命令的标准输出作为 more 命令的标准输入,使用 more 命令翻页查看输出信息