linux系统中输入输出管理
一、理解系统的输入输出
在shell程序中输入指令,送到cpu中运算产生结果 ,在送到字符设备中显示。通俗的讲输入就是我们使用键盘敲击的命令,输出为命令执行时系统所给的反馈。在做输入输出实验时通常切换到普通用户(student用户),不能使用超级用户,因为超级用户在运行指令时很少出现报错(gnome-session-quit --force关闭图形退出)。
文件描述符 | 缩写 | 描述 |
0 | STDIN | 标准输入 |
1 | STDOUT | 标准输出 |
2 | STDERR | 标准错误输出 |
二、如何定向输出
输出重定向
> ##重定向正确输出
2> ##重定向错误输出
&> ##重定向所有输出
注意: 重定向会覆盖源文件内容
注意:以下实验必须在student用户下完成
find /etc/ -name passwd 在etc中搜索passwd显示输出正确输出和错误输出
find /etc/ -name passwd > westos ##定向正确输入到westos.out
find /etc/ -name passwd 2> file.err ##定向错误输出到file
find /etc/ -name passwd &> file.all ##定向所有输出到file
三、如何追加输出
> 2> 和&>均会覆盖文件,如果不想覆盖文件就必须使用追加
>> 追加正确输出
2>> 追加错误输出
&>> 追加所有的输出
cat westos.err >> westos.out
echo haha > file1
find /etc/ -name passwd file1
四、linux下管道的应用(|)
管道的作用是把一个程序的输出直接连接到另一个程序的输入。 管道符号只允许正确的输出通过,即只允许编号位为1的通过。通过管道的输入将会变成输入,而变成输入的这些输出时会被第二条命令处理的,如果需要保存输出内容,那么需要复制一份输出,用到的命令时tee。
先介绍wc指令
wc -m file 字符数
wc -c file 字节数(文件大小)
wc -l file 行数
wc -w 字数
管道将前者的输出作为后者的输入
ls | wc -w
find 查找名称查找文件的基本查找命令
find /etc/ -name passwd | wc -l 显示etc下名字为passwd的正确输出的行数
find /etc/ -name passwd 2>&1|wc -l (2>&1将输出为2的错误输出转换为1的正确输出)
显示etc下名字为passwd的所有输出的行数
tee file1 file2 #在两个文件中复制内容,tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。
find /etc/ -name passwd 2>&1 | tee file |wc -l
五、linux中的输入重定向
tr 'a-z' 'A-Z' <westos #将文件中的a-z小写转换为大写A-Z (<单次)
(<<多次)westos.sh 内容:
"date
cal
passwd << EOF
haha
haha
EOF"
sh westos.sh