Linux系统中输入输出的管理

1.理解系统的输入与输出

在执行一个命令的时候,这个命令可能会由文件读入数据,经过处理后,再将数据输出到屏幕上。在下图当中,standard output 与 standard error output 分别代表【标准输出(STDOUT)】与【标准错误输出(STDERR)】,这两个标志默认都是输出到屏幕上面来的。标准输出指的是命令执行所返回的正确信息,而标准错误输出可理解为命令执行失败后,所返回的错误信息。

  • 标准输入(stdin):代码为0,使用 < 或 <<
  • 标准输出(stdout):代码为1,使用 > 或 >>
  • 标准错误输出(stderr):代码为2,使用2> 或 2>>

2.管理输出的符号

1.输出重定向

>重定向正确输出
2>重定向错误输出
&>重定向所有输出

eg: (以下操作在student用户下完成)

find/etc/ -name passwd > file定向正确输出到file
find/etc/ -name passwd 2> file.err定向错误输出到file
find/etc/ -name passwd &> file.all定向所有输出到file

命令 find/etc/ -name passwd > file 的含义是查找/etc下所有名称含passwd的文件的输出到file文件里
命令 find/etc/ -name passwd 2> file.err的含义是查找/etc下所有名称不含passwd的文件输出到file.err文件里
命令 find/etc/ -name passwd &> file.all的含义是查找/etc下不管名称是否含passwd的文件都输出到file.all文件里
注意: 重定向之后,会覆盖原文件内容。若不覆盖,则用2个>,即追加,将现在的内容加入到原文件里
输出定向是将/etc/下名字含有passwd的文件放在file里,定向正确输出是将正确的信息放在file里,错误的输出则会显示在shell里,定向错误输出则相反,定向所有输出是将所有的信息放在file里

[kiosk@foundation79 ~]$ find /etc/ -name passwd > a
find: ‘/etc/pki/CA/private’: Permission denied
find: ‘/etc/pki/rsyslog’: Permission denied
find: ‘/etc/dhcp’: Permission denied
find: ‘/etc/lvm/archive’: Permission denied
find: ‘/etc/lvm/backup’: Permission denied
find: ‘/etc/lvm/cache’: Permission denied
find: ‘/etc/selinux/targeted/active’: Permission denied
find: ‘/etc/selinux/final’: Permission denied
find: ‘/etc/polkit-1/rules.d’: Permission denied
find: ‘/etc/polkit-1/localauthority’: Permission denied
find: ‘/etc/redhat-access-insights’: Permission denied
find: ‘/etc/libvirt’: Permission denied
find: ‘/etc/ipsec.d’: Permission denied
find: ‘/etc/audisp’: Permission denied
find: ‘/etc/audit’: Permission denied
find: ‘/etc/grub.d’: Permission denied
find: ‘/etc/firewalld’: Permission denied
find: ‘/etc/sudoers.d’: Permission denied
find: ‘/etc/virt-who.d’: Permission denied
[kiosk@foundation79 ~]$ find /etc/ -name passwd 2> a.err
/etc/passwd
/etc/pam.d/passwd
[kiosk@foundation79 ~]$ find /etc/ -name passwd &> a.all

2.输出追加
>> 追加正确输出到文件最后
补充:
echo ##显示内容到文件里
echo aa > file 显示aa到文件file里
wc ##统计文件行数l、单词数w、字节数c、字符数m
/dev/null无限空设备,即可以吃掉任何导向这个设备的信息

3.输入重定向

tr ‘a-z’ ‘A-Z’ < westos ##将westos文件里的’a-z’转换成’A-Z’

eg:

[root@foundation133 Desktop]#cat >file << EOF
>HELLO
>WORLD
>EOF
[root@foundation133 Desktop]#cat file
HELLO
WORLD

注:标识符出现时输入文件的内容,再次出现时,输入结束,标识符一般为EOF

4.管道的应用

管道 “|” 的作用是把前一条命令的输出变成后一条命令的输入
注意:

  • 管道只允许正确输出通过,对错误会予以忽略
  • 管道命令必须要能够接受来自前一个命令的数据成为标准输入继续处理才行
  • 通过管道的输出将会变成输入,而变成输入的这些输出是会被第二条命令处理的
  • 如果需要保存输出内容,需要复制一份输出,用到的命令是tee,tee显示并保存,共2份
    此实验在普通用户下操作:
    find /etc/ -name passwd | wc -l ##会看到的结果为2个,因为错误输出不能通过管道
    find /etc/ -name passwd 2>&1 | wc -l ##会看到21个,因为代码为2的输出被"2>&1"转换为代码1
    | 将正确的通过,2>&1| 将错误的转变成正确的通过管道
    find /etc/ -name passwd 2>&1 |tee file | wc -l ##保存一份输出到file再统计行数
[kiosk@foundation79 ~]$ find /etc/ -name passwd | wc -l
find: ‘/etc/pki/CA/private’: Permission denied
find: ‘/etc/pki/rsyslog’: Permission denied
find: ‘/etc/dhcp’: Permission denied
find: ‘/etc/lvm/archive’: Permission denied
find: ‘/etc/lvm/backup’: Permission denied
find: ‘/etc/lvm/cache’: Permission denied
find: ‘/etc/selinux/targeted/active’: Permission denied
find: ‘/etc/selinux/final’: Permission denied
find: ‘/etc/polkit-1/rules.d’: Permission denied
find: ‘/etc/polkit-1/localauthority’: Permission denied
find: ‘/etc/redhat-access-insights’: Permission denied
find: ‘/etc/libvirt’: Permission denied
find: ‘/etc/ipsec.d’: Permission denied
find: ‘/etc/audisp’: Permission denied
find: ‘/etc/audit’: Permission denied
find: ‘/etc/grub.d’: Permission denied
find: ‘/etc/firewalld’: Permission denied
find: ‘/etc/sudoers.d’: Permission denied
find: ‘/etc/virt-who.d’: Permission denied
2
[kiosk@foundation79 ~]$ find /etc/ -name passwd 2>&1 | wc -l
21

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值