输入与输出
输入:
##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中获得帮助
- whatis command #查看命令的用途
- command --help #基本用法
- man level target #man命令的用法
man | man命令本身 |
---|---|
level | man的级别 |
target | man的对象 |
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