linux文件的输入与输出

编程入门 行业动态 更新时间:2024-10-10 19:25:55

linux<a href=https://www.elefans.com/category/jswz/34/1771438.html style=文件的输入与输出"/>

linux文件的输入与输出

目录

  • 1、什么是输入输出
  • 2、输出重定向
    • 3 、输入重定向


1、什么是输入输出

1)字符设备
字符设备就是显示字符到屏幕上的设备文件

2)stdin
标准输入
编号为0
键盘 鼠标 打字机

3)stdout
标准正确输出
标号为1

4)stderr
标准错误输出
标号为2


打开shell输入的命令都会保存在打开shell的进程pid/fd/0里面,回车后通过cpu计算,正确输出保存到pid/fd/1里面,错误输出保存到pid/fd/2里面,他们共同显示到字符设备/dev/pts/x里

2、输出重定向

通俗的讲,重定向输出就是把输出的文件信息写入到一个文件中去,而不是将要输出的文件信息输出到控制台(显示屏)

1>
重定向正确输出
利用root用户在/etc目录下查询passwd文件:将查询的正确结果保存在file文件中,使用cat查询。

[root@foundation50 Desktop]# find /etc/ -name passwd > file
[root@foundation50 Desktop]# cat file 
/etc/pam.d/passwd
/etc/passwd

2>
重定向错误输出
利用root用户在/etc目录下查询passwd文件:将查询的错误结果保存在file1文件中,使用cat查询,没有!。
利用普通用户在/etc目录下查询passwd文件:将查询的错误结果保存在file2文件中,使用cat查询。

[root@foundation50 Desktop]# su -- westos
[westos@foundation50 Desktop]$ find /etc -name passwd  
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
/etc/pam.d/passwd
/etc/passwd
find: ‘/etc/cups/ssl’: Permission denied
find: ‘/etc/grub.d’: Permission denied
find: ‘/etc/nftables’: 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/sssd’: Permission denied
find: ‘/etc/firewalld’: Permission denied
find: ‘/etc/sudoers.d’: Permission denied
[westos@foundation50 Desktop]$ find /etc -name passwd 2> file2  把错误输出存到file2
/etc/pam.d/passwd
/etc/passwd
[westos@foundation50 Desktop]$ cat file2
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
find: ‘/etc/grub.d’: Permission denied
find: ‘/etc/nftables’: 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/sssd’: Permission denied
find: ‘/etc/firewalld’: Permission denied
find: ‘/etc/sudoers.d’: Permission denied

&>
重定向所有输出
在/etc目录下查询passwd文件:将查询的所有结果保存在file3文件中,使用cat查询

[westos@foundation50 Desktop]$ find /etc -name passwd &> file3
[westos@foundation50 Desktop]$ cat file3
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
/etc/pam.d/passwd
/etc/passwd
find: ‘/etc/cups/ssl’: Permission denied
find: ‘/etc/grub.d’: Permission denied
find: ‘/etc/nftables’: 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/sssd’: Permission denied
find: ‘/etc/firewalld’: Permission denied
find: ‘/etc/sudoers.d’: Permission denied

利用重定向清空文件

[westos@foundation50 Desktop]$ > file3
[westos@foundation50 Desktop]$ cat file3
[westos@foundation50 Desktop]$ 

“>> 输出正确的追加,原内容不会被清空”

[westos@foundation50 Desktop]$ cat file3  原文件
/etc/pam.d/passwd
/etc/passwd
[westos@foundation50 Desktop]$ find /etc -name passwd >> file3
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
find: ‘/etc/grub.d’: Permission denied
find: ‘/etc/nftables’: 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/sssd’: Permission denied
find: ‘/etc/firewalld’: Permission denied
find: ‘/etc/sudoers.d’: Permission denied
[westos@foundation50 Desktop]$ cat file3
/etc/pam.d/passwd
/etc/passwd
/etc/pam.d/passwd
/etc/passwd

2>> 追加错误输出

[westos@foundation50 Desktop]$ cat file3  原文件
/etc/pam.d/passwd
/etc/passwd
[westos@foundation50 Desktop]$ find /etc -name passwd 2>> file3
/etc/pam.d/passwd
/etc/passwd
[westos@foundation50 Desktop]$ cat file3
/etc/pam.d/passwd
/etc/passwd
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
find: ‘/etc/grub.d’: Permission denied
find: ‘/etc/nftables’: 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/sssd’: Permission denied
find: ‘/etc/firewalld’: Permission denied
find: ‘/etc/sudoers.d’: Permission denied

&>>

追加所有输出到文件最后

[westos@foundation50 Desktop]$ cat file3
[westos@foundation50 Desktop]$ find /etc -name passwd &>> file3
[westos@foundation50 Desktop]$ cat file3
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
/etc/pam.d/passwd
/etc/passwd
find: ‘/etc/cups/ssl’: Permission denied
find: ‘/etc/grub.d’: Permission denied
find: ‘/etc/nftables’: 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/sssd’: Permission denied
find: ‘/etc/firewalld’: Permission denied
find: ‘/etc/sudoers.d’: Permission denied

输出重定向会覆盖文件内容,追加重定向不会覆盖文件原来的内容

| 管道

"|"管道的作用是把前一条命令的 正确输出 变成后一条命令的输入
通过管道的输出将会变成输入,会被第二条命令处理

[westos@foundation50 Desktop]$ find /etc -name passwd | 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
find: ‘/etc/grub.d’: Permission denied
find: ‘/etc/nftables’: 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/sssd’: Permission denied
find: ‘/etc/firewalld’: Permission denied
find: ‘/etc/sudoers.d’: Permission denied
2

如果让错误的输出也要被管道符通过,则需要把错误的输出追加到正确的输出里 2>&1

[westos@foundation50 Desktop]$ find /etc -name passwd 2>&1 | wc -l
17

若需要将输出内容保存一份,可以通过tee 复制两份,一份保存到文件里,一份通过管道让wc -l 来处理

[westos@foundation50 Desktop]$ find /etc -name passwd 2>&1 |tee file1 | wc -l
17
[westos@foundation50 Desktop]$ cat file1
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
/etc/pam.d/passwd
/etc/passwd
find: ‘/etc/cups/ssl’: Permission denied
find: ‘/etc/grub.d’: Permission denied
find: ‘/etc/nftables’: 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/sssd’: Permission denied
find: ‘/etc/firewalld’: Permission denied
find: ‘/etc/sudoers.d’: Permission denied

3 、输入重定向

<

[root@foundation50 Desktop]# cat test 
hello
HELLO
[root@foundation50 Desktop]# tr 'a-z' 'A-Z' < test   将shell的0(输入)定向到tr 程序的0里面,因为shell不具备转换大小写的功能
HELLO
HELLO

<<

多行输入重定向

vim westos.sh
date
passwd root << EOF        << 表示多行输入  EOF 表示起始字符串
westos
westos
EOF   遇到EOF j结束
[root@foundation50 Desktop]# sh westos.sh    运行
Wed Aug  4 21:50:50 CST 2021
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.

练习:

4、[westos@foundation50 Desktop]$ find /etc -name passwd 2>&1 | tee /dev/pts/0 | wc -l  #/dev/pts/o 放入字符设备,能显示出来的就叫字符设备
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
/etc/pam.d/passwd
/etc/passwd
find: ‘/etc/cups/ssl’: Permission denied
find: ‘/etc/grub.d’: Permission denied
find: ‘/etc/nftables’: 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/sssd’: Permission denied
find: ‘/etc/firewalld’: Permission denied
find: ‘/etc/sudoers.d’: Permission denied
17
5、[westos@foundation50 Desktop]$ tr 'a-z' 'A-Z' < /etc/passwd | cat -n1	ROOT:X:0:0:ROOT:/ROOT:/BIN/BASH2	BIN:X:1:1:BIN:/BIN:/SBIN/NOLOGIN3	DAEMON:X:2:2:DAEMON:/SBIN:/SBIN/NOLOGIN4	ADM:X:3:4:ADM:/VAR/ADM:/SBIN/NOLOGIN5	LP:X:4:7:LP:/VAR/SPOOL/LPD:/SBIN/NOLOGIN6	SYNC:X:5:0:SYNC:/SBIN:/BIN/SYNC7	SHUTDOWN:X:6:0:SHUTDOWN:/SBIN:/SBIN/SHUTDOWN8	HALT:X:7:0:HALT:/SBIN:/SBIN/HALT9	MAIL:X:8:12:MAIL:/VAR/SPOOL/MAIL:/SBIN/NOLOGIN10	OPERATOR:X:11:0:OPERATOR:/ROOT:/SBIN/NOLOGIN11	GAMES:X:12:100:GAMES:/USR/GAMES:/SBIN/NOLOGIN12	FTP:X:14:50:FTP USER:/VAR/FTP:/SBIN/NOLOGIN13	NOBODY:X:65534:65534:KERNEL OVERFLOW USER:/:/SBIN/NOLOGIN14	DBUS:X:81:81:SYSTEM MESSAGE BUS:/:/SBIN/NOLOGIN15	SYSTEMD-COREDUMP:X:999:997:SYSTEMD CORE DUMPER:/:/SBIN/NOLOGIN16	SYSTEMD-RESOLVE:X:193:193:SYSTEMD RESOLVER:/:/SBIN/NOLOGIN17	TSS:X:59:59:ACCOUNT USED BY THE TROUSERS PACKAGE TO SANDBOX THE TCSD DAEMON:/DEV/NULL:/SBIN/NOLOGIN18	POLKITD:X:998:996:USER FOR POLKITD:/:/SBIN/NOLOGIN19	GEOCLUE:X:997:995:USER FOR GEOCLUE:/VAR/LIB/GEOCLUE:/SBIN/NOLOGIN20	RTKIT:X:172:172:REALTIMEKIT:/PROC:/SBIN/NOLOGIN21	PIPEWIRE:X:996:994:PIPEWIRE SYSTEM DAEMON:/VAR/RUN/PIPEWIRE:/SBIN/NOLOGIN22	PULSE:X:171:171:PULSEAUDIO SYSTEM DAEMON:/VAR/RUN/PULSE:/SBIN/NOLOGIN23	LIBSTORAGEMGMT:X:995:991:DAEMON ACCOUNT FOR LIBSTORAGEMGMT:/VAR/RUN/LSM:/SBIN/NOLOGIN24	QEMU:X:107:107:QEMU USER:/:/SBIN/NOLOGIN25	USBMUXD:X:113:113:USBMUXD USER:/:/SBIN/NOLOGIN26	UNBOUND:X:994:989:UNBOUND DNS RESOLVER:/ETC/UNBOUND:/SBIN/NOLOGIN27	RPC:X:32:32:RPCBIND DAEMON:/VAR/LIB/RPCBIND:/SBIN/NOLOGIN28	GLUSTER:X:993:988:GLUSTERFS DAEMONS:/RUN/GLUSTER:/SBIN/NOLOGIN29	CHRONY:X:992:987::/VAR/LIB/CHRONY:/SBIN/NOLOGIN30	SETROUBLESHOOT:X:991:985::/VAR/LIB/SETROUBLESHOOT:/SBIN/NOLOGIN31	SASLAUTH:X:990:76:SASLAUTHD USER:/RUN/SASLAUTHD:/SBIN/NOLOGIN32	DNSMASQ:X:984:984:DNSMASQ DHCP AND DNS SERVER:/VAR/LIB/DNSMASQ:/SBIN/NOLOGIN33	RADVD:X:75:75:RADVD USER:/:/SBIN/NOLOGIN34	CLEVIS:X:983:982:CLEVIS DECRYPTION FRAMEWORK UNPRIVILEGED USER:/VAR/CACHE/CLEVIS:/SBIN/NOLOGIN35	COCKPIT-WS:X:982:980:USER FOR COCKPIT WEB SERVICE:/NONEXISTING:/SBIN/NOLOGIN36	COCKPIT-WSINSTANCE:X:981:979:USER FOR COCKPIT-WS INSTANCES:/NONEXISTING:/SBIN/NOLOGIN37	SSSD:X:980:978:USER FOR SSSD:/:/SBIN/NOLOGIN38	FLATPAK:X:979:977:USER FOR FLATPAK SYSTEM HELPER:/:/SBIN/NOLOGIN39	COLORD:X:978:976:USER FOR COLORD:/VAR/LIB/COLORD:/SBIN/NOLOGIN40	GDM:X:42:42::/VAR/LIB/GDM:/SBIN/NOLOGIN41	RPCUSER:X:29:29:RPC SERVICE USER:/VAR/LIB/NFS:/SBIN/NOLOGIN42	GNOME-INITIAL-SETUP:X:977:975::/RUN/GNOME-INITIAL-SETUP/:/SBIN/NOLOGIN43	SSHD:X:74:74:PRIVILEGE-SEPARATED SSH:/VAR/EMPTY/SSHD:/SBIN/NOLOGIN44	AVAHI:X:70:70:AVAHI MDNS/DNS-SD STACK:/VAR/RUN/AVAHI-DAEMON:/SBIN/NOLOGIN45	RNGD:X:976:974:RANDOM NUMBER GENERATOR DAEMON:/VAR/LIB/RNGD:/SBIN/NOLOGIN46	TCPDUMP:X:72:72::/:/SBIN/NOLOGIN47	WESTOS:X:1000:1000::/HOME/WESTOS:/BIN/BASH48	APACHE:X:48:48:APACHE:/USR/SHARE/HTTPD:/SBIN/NOLOGIN
7、cat > westos.file << EOF
hello linux
hello westos
hello linux
westos linux is very nice 
EOF
1、[westos@foundation50 Desktop]$ find /etc -name passwd 2> /dev/null 
/etc/pam.d/passwd
/etc/passwd

内容补充
若让文件内容倒则显示 使用tac 命令

[root@foundation50 Desktop]# cat test
1
2
3
4
[root@foundation50 Desktop]# tac test 
4
3
2
1

更多推荐

linux文件的输入与输出

本文发布于:2023-07-28 19:49:51,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1292360.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:文件   linux

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!