三、Linux中的输入输出管理
目录
1.理解输入输出的定义
1)字符设备
字符设备就是显示字符到屏幕上的设备文件
2)stdin
标准输入 标号为0
键盘 鼠标 打字机
3)stdout
标准正确输出 标号为1
4)stderr
标准错误输出 标号为2
2. 如何管理输入
外界传递到程序中的信息
1)< #输入重定向
tr 'a-z' 'A-Z' < test #把test文件中的内容重定向到 tr 程序中
2)<< #多行录入
tr 'a-z' 'A-Z' << END(字符任意)
test #此处test只表示字符不表示test文件
END
3.如何管理系统输出
1)输出重定向
> #重定向正确输出
2> #重定向错误输出
&> #重定向所有输出
[jiangjiang@localhost Desktop]$ find /etc -name passwd > westos.out
[jiangjiang@localhost Desktop]$ find /etc -name passwd 2> westos.out
[jiangjiang@localhost Desktop]$ find /etc -name passwd &> westos.out
2)追加
>> #追加正确输出
2>> #追加错误输出
&>> #追加所有输出
[jiangjiang@localhost Desktop]$ find /etc -name passwd >> westos.out
[jiangjiang@localhost Desktop]$ find /etc -name passwd 2>> westos.out
[jiangjiang@localhost Desktop]$ find /etc -name passwd &>> westos.out
追加和重定向功能类似,但是不会覆盖原文件内容
3)管道
把前一条命令的输出变成输入传递到下一条命令进行操作
注意:
- 管道只处理正确输出
2>&1
把编号为2的输入转换到编号为1的输入中tee
复制输出到指定位置- 管道在一条命令中可以使用多次
练习:
- 1
[jiangjiang@localhost Desktop]$ find /etc -name passwd 2> /dev/null
/etc/pam.d/passwd
/etc/passwd
- 2
[jiangjiang@localhost Desktop]$ find /etc -name passwd > /tmp/westos.out
[jiangjiang@localhost Desktop]$ find /etc -name passwd 2> /tmp/westos.err
- 3
[jiangjiang@localhost tmp]$ find /etc -name passwd 2>&1 | tee /tmp/westos.all | wc -l
16
- 4
[jiangjiang@localhost Desktop]$ find /etc -name passwd 2>&1 | tee /dev/pts/0 | wc -l
find: ‘/etc/pki/rsyslog’: Permission denied
find: ‘/etc/lvm/archive’: Permission denied
find: ‘/etc/lvm/backup’: Permission denied
find: ‘/etc/lvm/cache’: Permission denied
find: ‘/etc/dhcp’: Permission denied
find: ‘/etc/cups/ssl’: Permission denied
/etc/pam.d/passwd
/etc/passwd
find: ‘/etc/grub.d’: Permission denied
find: ‘/etc/sssd’: Permission denied
find: ‘/etc/polkit-1/rules.d’: Permission denied
find: ‘/etc/polkit-1/localauthority’: Permission denied
find: ‘/etc/audit’: Permission denied
find: ‘/etc/libvirt’: Permission denied
find: ‘/etc/firewalld’: Permission denied
find: ‘/etc/sudoers.d’: Permission denied
16
- 5
[jiangjiang@localhost Desktop]$ tr 'a-z' 'A-Z' < /etc/passwd |cat -b
1 ROOT:X:0:0:ROOT:/ROOT:/BIN/BASH
2 BIN:X:1:1:BIN:/BIN:/SBIN/NOLOGIN
3 DAEMON:X:2:2:DAEMON:/SBIN:/SBIN/NOLOGIN
4 ADM:X:3:4:ADM:/VAR/ADM:/SBIN/NOLOGIN
5 LP:X:4:7:LP:/VAR/SPOOL/LPD:/SBIN/NOLOGIN
6 SYNC:X:5:0:SYNC:/SBIN:/BIN/SYNC
7 SHUTDOWN:X:6:0:SHUTDOWN:/SBIN:/SBIN/SHUTDOWN
8 HALT:X:7:0:HALT:/SBIN:/SBIN/HALT
9 MAIL:X:8:12:MAIL:/VAR/SPOOL/MAIL:/SBIN/NOLOGIN
10 OPERATOR:X:11:0:OPERATOR:/ROOT:/SBIN/NOLOGIN
11 GAMES:X:12:100:GAMES:/USR/GAMES:/SBIN/NOLOGIN
12 FTP:X:14:50:FTP USER:/VAR/FTP:/SBIN/NOLOGIN
13 NOBODY:X:65534:65534:KERNEL OVERFLOW USER:/:/SBIN/NOLOGIN
14 DBUS:X:81:81:SYSTEM MESSAGE BUS:/:/SBIN/NOLOGIN
15 SYSTEMD-COREDUMP:X:999:997:SYSTEMD CORE DUMPER:/:/SBIN/NOLOGIN
16 SYSTEMD-RESOLVE:X:193:193:SYSTEMD RESOLVER:/:/SBIN/NOLOGIN
17 TSS:X:59:59:ACCOUNT USED BY THE TROUSERS PACKAGE TO SANDBOX THE TCSD DAEMON:/DEV/NULL:/SBIN/NOLOGIN
18 POLKITD:X:998:996:USER FOR POLKITD:/:/SBIN/NOLOGIN
19 GEOCLUE:X:997:994:USER FOR GEOCLUE:/VAR/LIB/GEOCLUE:/SBIN/NOLOGIN
20 GLUSTER:X:996:993:GLUSTERFS DAEMONS:/RUN/GLUSTER:/SBIN/NOLOGIN
21 RTKIT:X:172:172:REALTIMEKIT:/PROC:/SBIN/NOLOGIN
22 PULSE:X:171:171:PULSEAUDIO SYSTEM DAEMON:/VAR/RUN/PULSE:/SBIN/NOLOGIN
23 QEMU:X:107:107:QEMU USER:/:/SBIN/NOLOGIN
24 USBMUXD:X:113:113:USBMUXD USER:/:/SBIN/NOLOGIN
25 RPC:X:32:32:RPCBIND DAEMON:/VAR/LIB/RPCBIND:/SBIN/NOLOGIN
26 UNBOUND:X:995:990:UNBOUND DNS RESOLVER:/ETC/UNBOUND:/SBIN/NOLOGIN
27 CHRONY:X:994:989::/VAR/LIB/CHRONY:/SBIN/NOLOGIN
28 PIPEWIRE:X:993:987:PIPEWIRE SYSTEM DAEMON:/VAR/RUN/PIPEWIRE:/SBIN/NOLOGIN
29 LIBSTORAGEMGMT:X:992:986:DAEMON ACCOUNT FOR LIBSTORAGEMGMT:/VAR/RUN/LSM:/SBIN/NOLOGIN
30 SETROUBLESHOOT:X:991:985::/VAR/LIB/SETROUBLESHOOT:/SBIN/NOLOGIN
31 SASLAUTH:X:990:76:SASLAUTHD USER:/RUN/SASLAUTHD:/SBIN/NOLOGIN
32 DNSMASQ:X:983:983:DNSMASQ DHCP AND DNS SERVER:/VAR/LIB/DNSMASQ:/SBIN/NOLOGIN
33 RADVD:X:75:75:RADVD USER:/:/SBIN/NOLOGIN
34 ABRT:X:173:173::/ETC/ABRT:/SBIN/NOLOGIN
35 CLEVIS:X:982:981:CLEVIS DECRYPTION FRAMEWORK UNPRIVILEGED USER:/VAR/CACHE/CLEVIS:/SBIN/NOLOGIN
36 COCKPIT-WS:X:981:979:USER FOR COCKPIT-WS:/:/SBIN/NOLOGIN
37 SSSD:X:980:978:USER FOR SSSD:/:/SBIN/NOLOGIN
38 COLORD:X:979:977:USER FOR COLORD:/VAR/LIB/COLORD:/SBIN/NOLOGIN
39 GDM:X:42:42::/VAR/LIB/GDM:/SBIN/NOLOGIN
40 RPCUSER:X:29:29:RPC SERVICE USER:/VAR/LIB/NFS:/SBIN/NOLOGIN
41 GNOME-INITIAL-SETUP:X:978:976::/RUN/GNOME-INITIAL-SETUP/:/SBIN/NOLOGIN
42 SSHD:X:74:74:PRIVILEGE-SEPARATED SSH:/VAR/EMPTY/SSHD:/SBIN/NOLOGIN
43 INSIGHTS:X:977:975:RED HAT INSIGHTS:/VAR/LIB/INSIGHTS:/SBIN/NOLOGIN
44 AVAHI:X:70:70:AVAHI MDNS/DNS-SD STACK:/VAR/RUN/AVAHI-DAEMON:/SBIN/NOLOGIN
45 TCPDUMP:X:72:72::/:/SBIN/NOLOGIN
46 JIANGJIANG:X:1000:1000:JIANGJIANG,,,,:/HOME/JIANGJIANG:/BIN/BASH
- 7
[jiangjiang@localhost Desktop]$ vim westos.sh
[jiangjiang@localhost Desktop]$ sh westos.sh
[jiangjiang@localhost Desktop]$ cat westos.file
hello linux
hello westos
hello linux
westos linux is very nice!!
## vim westos.sh
cat > westos.file <<END ##将westos.file的文件传到cat
hello linux
hello westos
hello linux
westos linux is very nice!!
END