字符设备
一、在开始输入输出的解释之前,需要了解到什么是字符设备,简单来说,字符设备就是显示到字符到屏幕上的设备,分为标准输入,标准正确输出,标准错误输出,下面一一解释下。
1、标准输入 stdin
简单来说就是在命令行写下命令的过程,系统会把这些命令加载到内存中并执行
文件描述符:/dev/pts/0
常见输入设备:键盘、鼠标、打字机
2、标准正确输出 stdout
文件描述符 :/dev/pts/1
3、标准错误输出 stderra
文件描述符:/dev/pts/2
a
二、输入管理
1、< 输入重定向 把要执行的命令重定向到tr命令中
tr ‘a-z’ ‘A-Z’ < test 把test文件中的所有字母变为大写(test文件中的内容输入到tr中)
2、<< 多行录入
tr ‘a-z‘ ’A-Z‘ << EOF
test
test1
EOF ##EOF表示开始录入以下字符,此处的test为字符,不在表示文件,第二个EOF表示录入结束, 整个命令表示将字符输入到tr命令中并执行
三、输出管理
输出管理类似于输入管理,箭头的指向一般代表命令的走向
1、> 重定向正确输出
file1文件是先建立好的,,重定向正确输出后把原本该输出到屏幕上的元数据信息 打印到了/tmp/file.in中
2、**2> 重定向错误输出
123423这个命令是不存在的,所以会把错误信息写到/tmp/file.in中,cat后发现确实如此
如果是正确的命令,2> 是不起作用的,,所以可以看到ls的结果打印到了屏幕中
3、 &> "重定向所有输出**
重定向所有输出会把 输出的所有结果放到指定的文件中
4、追加
2>>
&>>
三种追加的用法和重定向用法类似,,不一样的就是追加不会覆盖原来文件中的内容,会把后打印的信息写到文件内容的后面
正确的输出内容被追加到file2的后面
错误的内容被追加到file2文件内容中
四、管道符 |
| :把前一条命令的正确输出传输到下一条命令中
正确的输出在wc -l命令下统计出了行数,错误的命令会直接报错,不能传输到wc -l 命令中
五、tee命令
tee 是一个既保存文件又让文件显示的命令,需要注意的是在使用管道线时,前一个命令的标准错误输出不会被tee读取
1、tee 复制之前命令的 输出 复制到新的文件中,例如(如果前一个命令没有输出将不会保存到新文件中,但是会产生文件)
find /etc -name passwd 2> /tmp/file1.err
/etc/pam.d/passwd
/etc/passwd
[ehiiurs@localhost Desktop]$
find /etc -name passwd 2> /tmp/file1.err |tee file
/etc/pam.d/passwd
/etc/passwd
[ehiiurs@localhost Desktop]$ cat file
/etc/pam.d/passwd
/etc/passwd
[root@localhost Desktop]# lsblk |tee device.txt >/dev/null |tee devicetest.txt
[root@localhost Desktop]# cat devicetest.txt
You have new mail in /var/spool/mail/root
[root@localhost Desktop]# lsblk |tee device.txt >/dev/null
[root@localhost Desktop]# ls
devicetest.txt device.txt
2、静默输出(隐藏或禁止tee命令在屏幕上打印输出//将文件保存为一个新文件但是不打印在屏幕上)
[root@localhost Desktop]# lsblk |tee devicetest.txt >/dev/null
[root@localhost Desktop]# cat devicetest.txt
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 30G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 29G 0 part
├─centos-root 253:0 0 27G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sr0 11:0 1 4.4G 0 rom /run/media/root/CentOS 7 x86_64
标签:输出,文件,输入输出,tee,Desktop,命令,Linux,root
来源: https://blog.csdn.net/zn500766/article/details/112760767