linux 文件输入输出,Linux中的输入输出

字符设备

一、在开始输入输出的解释之前,需要了解到什么是字符设备,简单来说,字符设备就是显示到字符到屏幕上的设备,分为标准输入,标准正确输出,标准错误输出,下面一一解释下。

1、标准输入 stdin

简单来说就是在命令行写下命令的过程,系统会把这些命令加载到内存中并执行

文件描述符:/dev/pts/0

常见输入设备:键盘、鼠标、打字机

42add01dd6bcbaf37640d27e005e4930.png

2、标准正确输出 stdout

文件描述符 :/dev/pts/1

f0baf8d67f262581e5d18b734c770983.png

3、标准错误输出 stderra

文件描述符:/dev/pts/2

a

二、输入管理

1、< 输入重定向 把要执行的命令重定向到tr命令中

tr ‘a-z’ ‘A-Z’ < test 把test文件中的所有字母变为大写(test文件中的内容输入到tr中)

31316ae5bf8e5142c1ca4d285180d390.png

2、<< 多行录入

tr ‘a-z‘ ’A-Z‘ << EOF

test

test1

EOF ##EOF表示开始录入以下字符,此处的test为字符,不在表示文件,第二个EOF表示录入结束, 整个命令表示将字符输入到tr命令中并执行

8fd93749e7c913d957c30a0cadf52fe1.png

三、输出管理

输出管理类似于输入管理,箭头的指向一般代表命令的走向

1、> 重定向正确输出

file1文件是先建立好的,,重定向正确输出后把原本该输出到屏幕上的元数据信息 打印到了/tmp/file.in中

9ff8ab2bf38c47c6da03dade9e770074.png

2、**2> 重定向错误输出

422d40f780880758f91a82c9635c6b24.png

123423这个命令是不存在的,所以会把错误信息写到/tmp/file.in中,cat后发现确实如此

c2a430c4b016e5438f14b0b25a35f7e8.png

如果是正确的命令,2> 是不起作用的,,所以可以看到ls的结果打印到了屏幕中

3、 &> "重定向所有输出**

799b14e72b3e13c47a461400df7077b3.png

重定向所有输出会把 输出的所有结果放到指定的文件中

4、追加

2>>

&>>

三种追加的用法和重定向用法类似,,不一样的就是追加不会覆盖原来文件中的内容,会把后打印的信息写到文件内容的后面

aecbc426e4bc412154a0363524f13a29.png

正确的输出内容被追加到file2的后面

7c70a50236af08e0cad81e5d4807739e.png

错误的内容被追加到file2文件内容中

四、管道符 |

| :把前一条命令的正确输出传输到下一条命令中

93c6a19ec08f768abf4af145c812f116.png

正确的输出在wc -l命令下统计出了行数,错误的命令会直接报错,不能传输到wc -l 命令中

五、tee命令

tee 是一个既保存文件又让文件显示的命令,需要注意的是在使用管道线时,前一个命令的标准错误输出不会被tee读取

2a63b162081c75972cabf50114e4009c.png

1be412d9a3b4fc17cd5ed65cfa69afaf.png

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值