linux输入输出管理

  • 输入输出:
  • 输入重定向
  • 输出重定向
  • 管道符“ | ”及其应用


输入输出:

输入命令 --> 管理输入的内存,输入放到/dev/fd/0里(stdin,标准输入,编号为0,键盘、鼠标、打字机) --> cpu --> 管理输出的内存,正确输出放到/dev/fd/1里(stdout,标准正确输出,标号为1),错误输出放到/dev/fd/2里(stderr,标准错误输出,标号为2) --> 显示到屏幕。

liunx echo 追加判定_liunx echo 追加判定

输入重定向

<   #输入重定向

  1. tr ‘a-z’ ‘A-Z’ < file1    ##把test文件中的内容定向到tr程序中将小写字母转换为大写字母
    ##重定向符号将file1里的内容放到tr程序文件下的/fd/0里进行相应的处理
    ##tr命令用于转换或删除文件中的字符
  2. <<  多行录入
    tr ‘a-z’ ‘A-Z’ <<EOF(可以是任意字符)
    123    ##此处不能表示为文件名称只表示字符
    456    ##此处不能表示为文件名称只表示字符
    EOF (当首字母再次出现表示录入结束)

    用脚本非交互式的编写文件并显示内容(用到了输出重定向)

输出重定向

  1. 输出重定向
    “ > ”、“ 2> ”、“ &> ”
    find /etc -name passwd > westos.out   ##重定向正确输出
    find /etc -name passwd 2> westos.out   ##重定向错误输出
    find /etc -name passwd &> westos.out   ##重定向所有输出
    注意:重定向管理输出后会覆盖原文件内容
  2. 追加
    “ >> ”、“ 2>> ”、“ &>> ”
    find /etc -name passwd >> westos.out ##追加正确输出
    find /etc -name passwd 2>> westos.out ##追加错误输出
    find /etc -name passwd &>> westos.out ##追加所有输出
    注意:追加和重定向功能类似,但是不会覆盖原文件内容

以上命令需在普通用户下执行才有效果,因为普通用户权限不够有的文件无权查看,而root用户可以看所有文件所以不会有错误输出。

管道符“ | ”及其应用

把前一条命令的输出变成输入传递到下一条命令进行操作。

注意:
1、管道只处理正确输出!!!(即只能处理1里的内容)
	2>&1 把编号为2(错误的输出)的输出转换到编号为1(正确的输出)的输出中。
2、通过管道的输出将会变成输入,而变成输入的这些输出是会被第二条命令处理的
3、如果需要保存输出内容,那么需要复制一份输出,用到的命令是“tee”
	tee命令:复制输出到指定位置。即用于读取标准输入的数据,并将其内容输出成文件
4、管道在一条命令中可以使用多次

liunx echo 追加判定_文件名_02


liunx echo 追加判定_liunx echo 追加判定_03


错误输出被转到正确输出里了

liunx echo 追加判定_linux_04


将passwd文件内容小写变大写并输出内容统计行号

liunx echo 追加判定_linux_05

管道符和定位符是时刻监控的!
当我们作为普通用户想查找一个文件并且统计错误输出用如下命令时可能会出现如下情况:

liunx echo 追加判定_文件名_06


第一条命令的意思是将正确输出放到回收站,为了让错误输出通过管道符再将错误输出放到1里最后统计行数,但是会出现0,是因为

定位符>已经开启且在时刻监控

,在2>&1执行后被转到正确的1里的内容又会被丢掉。


第二条命令换了下位置后,这样定位符还没运行,先处理错误输出再处理正确输出,这样即可让我们想要的通过管道符。