##########系统中输入输出的管理##########
1.理解系统的输入输出
编号 | 通道名称 | 描述 | 默认连接 | 用法 |
0 | stdin | 标准输入 | 键盘 | 仅读取 |
1 | stdout | 标准输出 | 显示屏 | 仅写入 |
2 | stderr | 标准错误 | 显示屏 | 仅写入 |
2.管理输入输出的符号
####输入重定向####
指在文件中保存某些输入和指令,当需要执行文件中的这些指令时,不需要每次输入这些指令,只需执行包含这些命令的文件即可,这些命令会自然执行
command < file ##将输入重定向到file
command << EOF
haha
xixi
EOF ##将两个EOF之间的内容(haha,xixi)作为输入传递给command
注意:结尾的EOF一定要顶格写,前面不能有任何字符,后面也不能有任何字符,包括空格和Tab缩进
开始的EOF前后的空格会被忽略掉
示例:用输入重定向执行date、cal、passwd命令
先建立一个file.sh文件,写入以下内容:
结果如下:
####输出重定向####
> | 重定向正确输出 |
2> | 重定向错误输出 |
&> | 重定向所有输出 |
注意:重定向会覆盖源文件内容
示例:
find /etc/ -name passwd > file ##定向正确输出到file
find /etc/ -name passwd 2> file.err ##定向错误输出到file.err
find /etc/ -name passwd &> file.all ##定向所有输出到file
> file ##清空file
注意:如果希望执行某个命令,但是不希望在屏幕上显示输出结果,那么可以将输出重定向到/dev/null
command > /dev/null
/dev/null 是一个特殊的文件,写入到它的内容都会被丢弃;如果尝试从该文件中读取内容,那么什么也读不到。将命令的输出重定向到它,会起到“禁止输出”的效果。
3.输出的追加
>> ##追加正确输出到文件最后
示例:find /etc/ -name passwd >> file ##追加正确输出到file
2>> ##追加错误输出到文件最后
示例:find /etc/ -name passwd 2>> file ##追加错误输出到file
&>> ##追加所有输出到文件最后
示例:find /etc/ -name passwd &>> file ##追加所有输出到file
注意:追加不会覆盖原内容
4.管道的应用
1)管道的作用
“|”管道的作用是把前一条命令的输出变成后一条命令的输入
注意:
管道只允许正确输出通过
通过管道的输出将会变成输入,而变成输入的这些输出是会被第二条命令处理的
如果需要保存输出内容,那么需要复制一份输出,用的命令是“tee”
示例:此操作在普通用户下操作
find /etc/ -name passwd | wc -l ##会看到的结果为2,因为错误输出不能通过管道
find /etc/ -name passwd 2>&1 | wc -l ##会看到结果19,因为编号为2的输出被“2&>1”转换为编号1
find /etc/ -name passwd 2>&1 tee file |wc -l ##保存一份文件到file中再统计行数
注意:tee复制输出到指定位置
补充:
wc命令:
-c ##输出比特数
-m ##输出字符数
-l ##输出行数
-L ##输出最长行的长度
-w ##输出单词数