RedHat Linux 中如何管理命令输入和输出
Linux中: Stdin表示标准输入
输出分为两种“Stdout表示正确输出,Linux中表示为1
Stderr表示错误输出,Linux中表示为2
如何在系统中看到这两种输出结果位置
su - student 先切换到普通用户 ,输入ps’查看当前shell的进程号,
cd命令切换到该进程下,例图中进程为2826,cd /proc/2826/fd 进入,ls -l 列出结果可看到0、1、2,0是当前shell的输入,1是正确输出,2是错误的输出。
重定向输出
> | 表示重定向正确输出 |
---|---|
2> | 表示重定向错误输出 |
&> | 表示重定向所有输出 |
用法:我们使用find /etc/ -name passwd 命令 来查找passwd看看结果,很显然出现的结果有正确有错误:如图
然后我们使用 > 符号保存正确的输出到文件aaa.out中:
可以看到正错误输出被展示出来,正确输出储存到aaa.out中。
使用 2> 保存错误输出到aaa.err中:
可以看到正确输出被展示出来,错误输出储存到aaa.err中。
使用 &> 符号将正确和错误储存到aaa.out中:
可以发现这次的输出覆盖了之前保存的内容,如何使保存的内容可以呢?我们可以使用追加符号来追加保存的输出内容
>> | 追加正确输出 |
---|---|
2>> | 追加错误输出 |
&>> | 追加全部输出 |
例: >> 追加正确输出符号的使用方法展示如图
ps:以上实验环境皆为普通用户中进行
重新定向输入“<”“<<”
符号<,表示输入,
例:创建文件aaa,在其中写入随机内容
使用tr ‘a-z’ ‘A-Z’ < aaa ,更改aaa文件内全部小写字符为大写:
符号<< , 可用作多行录入我们在aaa中写入两行命令:date、passwd ,用bash aaa来执行,可以发现passwd命令弹出需要我们来再次手动输入密码来完成操作:
下来我们使用<<来实行多行录入:
ps: EOF是一个行业规范符号,表示输入的起始和结束。
管道符说明
“ | ” 叠加两个命令
例:针对 /proc 目录同时使用ls 和 cat -l 统计 /proc 中文件数
结合>输出符使用:
发现管道 | 会过滤错误结果,统计正确结果,如何使所有结果统计呢,使用 2>&1 ,把2中错的结果放到1中一起统计:
还有就是我们可以统计结果并把结果再保存出来: