Linux中的的输入输出控制

输入与输出

输入:

##Stdin【标准输入流】 输入是指系统外接向系统中传递的信息,输出编号为0

[student@workstation Desktop]$ ps      #查看进程

PID TTY TIME CMD

6211 pts/0 00:00:00 bash

7205 pts/0 00:00:00 ps

[student@workstation Desktop]$ cd /proc/6211/fd
[student@workstation fd]$ ls
0 1 2 255 3 4
[student@workstation fd]$ ls -l 0
lrwx------. 1 student student 64 Dec 27 13:34 0 -> /dev/pts/0
#输入的信息一般存放在 /dev/pts/0中

echo   “woaini”  |  passwd  --stdin  westos

输出:

stdout【标准 正确输出】 Linux中输出编号为1
stderr【标准错误输出】 linux中输出编号为2

重定向输出:> 2> &>

  • > 标准正确输出
  • 2 > 标准错误输出
  • & > 全部输出

#用student用户登陆执行以下操作

[student@workstation fd]$ find /etc/ -name passwd:

find: ‘/etc/pki/rsyslog’: Permission denied      #stderr 错误输出
find: ‘/etc/dhcp’: Permission denied
/etc/pam.d/passwd            #stdout 正确输出
/etc/passwd
find: ‘/etc/polkit-1/rules.d’: Permission denied
find: ‘/etc/polkit-1/localauthority’: Permission denied
find: ‘/etc/sssd’: Permission denied
find: ‘/etc/grub.d’: Permission denied
find: ‘/etc/audit’: Permission denied
find: ‘/etc/firewalld’: Permission denied
find: ‘/etc/sudoers.d’: Permission denied
find: ‘/etc/lvm/archive’: Permission denied
find: ‘/etc/lvm/backup’: Permission denied
find: ‘/etc/lvm/cache’: Permission denied
find: ‘/etc/libvirt’: Permission denied
find: ‘/etc/cups/ssl’: Permission denied

  • find /etc/ -name passwd > westos.out    > 默认输出标准正确输出

[student@workstation Desktop]$ find /etc/ -name passwd > westos.out
find: ‘/etc/pki/rsyslog’: Permission denied
find: ‘/etc/dhcp’: Permission denied
find: ‘/etc/polkit-1/rules.d’: Permission denied
find: ‘/etc/polkit-1/localauthority’: Permission denied
find: ‘/etc/sssd’: Permission denied
find: ‘/etc/grub.d’: Permission denied
find: ‘/etc/audit’: Permission denied
find: ‘/etc/firewalld’: Permission denied
find: ‘/etc/sudoers.d’: Permission denied
find: ‘/etc/lvm/archive’: Permission denied
find: ‘/etc/lvm/backup’: Permission denied
find: ‘/etc/lvm/cache’: Permission denied
find: ‘/etc/libvirt’: Permission denied
find: ‘/etc/cups/ssl’: Permission denied
#正确内容在westos.out中,屏幕上不再显示

  • find /etc/ -name passwd 2> westos.err      2> 错误输出

[student@workstation Desktop]$ find /etc/ -name passwd 2> westos.err
/etc/pam.d/passwd
/etc/passwd
#错误内容在westos.err中,屏幕显示正确内容,
可将错误文件放入/dev/null垃圾桶黑洞设备

  • find /etc/ -name passwd &> westos.out    &>全部输出

[student@workstation Desktop]$ find /etc/ -name passwd &> westos.all
[student@workstation Desktop]$
#内容都在westos.all 中
执行 > westos.all 可清空文件中的内容

#当存在westos文件时 find /etc/ -name passwd > westos
重定向会覆盖掉源文件(westos中的内容)

追加  >>

  • 注意:追加动作不会覆盖源文件内容,而把定向内容放到原文件最后

test:

[student@workstation Desktop]$ echo woaini > test       #生成一个有内容的文件
[student@workstation Desktop]$ find /etc/ -name passwd > test     #执行重定向
/etc/pam.d/passwd
/etc/passwd
#可以看出文件内容被覆盖

[student@workstation Desktop]$ find /etc/ -name passwd >> test    #执行追加
[student@workstation Desktop]$ cat test
woaini       #文件内容未覆盖
/etc/pam.d/passwd
/etc/passwd
/etc/pam.d/passwd
/etc/passwd

  • [student@workstation Desktop]$ find /etc/ -name passwd  >> test    #追加正确输出
  • [student@workstation Desktop]$ find /etc/ -name passwd  2>>test    #追加错误输出
  • [student@workstation Desktop]$ find /etc/ -name passwd  &>>test    #追加所有输出

管道

  • 前面的输出是后面的输入

ls /bin/ | wc -l                #统计/bin/有多少文件
find /etc/ -name passwd | wc -l         #默认只有正确输出可以通过管道
find /etc/ -name passwd 2>&1 | wc -l        #将错误输出定向到正确输出存放位置在统计
find /etc/ -name passwd 2>&1 | tee file | wc -l     #复制输出到file文件再通过管道统计,tee是双向重定向

[root@workstation Desktop]# cat westos.sh
date
passwd << EOF
tee
tee
EOF

[root@workstation Desktop]# cat westos.sh | tr ‘a-z’ ‘A-Z’
DATE
PASSWD << EOF
TEE
TEE
EOF

输入重定向

#用root用户登录

一次输入重定向

[root@workstation Desktop]# tr ‘a-z’ ‘A-Z’ westos.sh   
tr: extra operand ‘westos.sh’        
Try ‘tr --help’ for more information.    #看出不能执行tr
[root@workstation Desktop]# tr ‘a-z’ ‘A-Z’ < westos.sh
DATE
PASSWD << EOF
TEE
TEE
EOF

echo westos WESTOS > file
tr ‘a-z’ ‘A-Z’ < file
WESTOS WESTOS

vim westos.sh
passwdw
:wq

[root@workstation Desktop]# sh westos.sh
Fri Dec 27 14:42:02 EST 2019
Changing password for user root.
New password:     #因为passwd命令执行时需要密码

  • 可用多行输入解决此问题

[root@workstation Desktop]# vim westos.sh
1 date
2 passwd << EOF       # <<表示多行录入,EOF为多行录入起始
3 tee
4 tee
5 EOF            #当起始符再次出现表示结束录入

[root@workstation Desktop]# sh westos.sh
Fri Dec 27 14:43:30 EST 2019
Changing password for user root.
New password: BAD PASSWORD: The password is shorter than 8 characters
Retype new password: passwd: all authentication tokens updated successfully.
#成功将密码改为tee

linux中获得帮助

  1. whatis command   #查看命令的用途
  2. command --help   #基本用法
  3. man level target   #man命令的用法
manman命令本身
levelman的级别
targetman的对象

level

1#命令
2#系统调用
3#函数调用
4#系统特殊文件
5#系统配置文件
6#游戏
7#特殊包
8#系统管理命令
9#内核规则

man -k passwd    #查看 passwd有多少个级别

e.g. 83天以后是几号?

  • man date 查找参数说明
    得到-d参数符合

root@workstation Desktop]# date -d 83day +%y/Y-%m-%d #查找今天往后83天的日期,并按照标准格式输出
 2020-3-23
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值