Linux中的输入与输出

mac2026-01-01  1

Linux中的输入与输出

一、什么是输入输出

在linux系统中,0表示为标准输入,1表示为标准输出,2表示为错误输出。 上图中,键盘为标准输入也就是编号0,而标准输出1和标准错误2都可以显示在显示屏上。 运行一个程序时 , 需要从某个位置读取输入信息 , 然后 cpu 处理, 最后将输出显示到屏幕或文件进程通过文件描述符的编号通道来获取输入并输出。

编号通道名称描述默认连接用法0stdin标准输入键盘仅读取1stdout标准输出显示屏仅写入2stderr错误输出显示屏仅写入

二、管理输入输出

1、输入重定向

输入重定向就是不使用标准输入端口输入文件,而是使用指定的文件作为标准输入设备。 输入重定向有两种类型:

类型格式功能重定向标准输入命令 < 文件命令把文件的内容作为标准的输入设备标识符限定输入命令 << 标识符命令把标准输入读入内容,直到遇到“标识符”分解符为止

(1)重定向标准输入 先编辑一个file文件,内容如下: 然后, 使用命令 tr ‘a-z’ ‘A-Z’ < file 将file文件的内容作为标准输入。( tr 命令用于转换或删除文件中的字符,在这里的意思是将小写转换成大写) 可以看到,通过输入重定向使小写转换成大写字母并输出到屏幕上。

(2)标识符限定输入

格式化输入内容到文件 cat > file << EOF

这里EOF为标识符,也可以换成其它的字符,只要有开始的还要有结束的就行。

2、输出重定向

如果想找到需要的信息,可以用重定向的方法使无用的信息保存在某个指定文件中,让其不再屏幕进行显示,对内容进行筛选后,只获得需要的信息。若指定的文件不存在会自动创建。

重定向,也就是重新定向输出,命令如下:

重定向命令含义1>重定向正确输出,此处的1可以省略2>重定向错误输出&>重定向所有输出2>&1将错误输出编号由2变成1,效果同&>>>追加重定向正确输出2>>追加重定向错误输出&>>追加重定向所有输出

例如: 注:但是重定向会覆盖源文件内容,所以当我们需要继续写入数据的时候需要输出追加输出追加只需要把重定向的>符号改为>>即可。

2、管道

符号为 | 管道,管道的作用是将前一条命令的输出变成管道后命令的输入。

作用:管道只允许正确的输入,通过管道的输出将会变成输入,而变成输入的这些输出是会被第二条命令处理的

接下来的操作要借助find命令
find 路径 -name ‘名称’ ##查找查找名字为“名称”的文件 find 路径 -type [f/d] ##按照类型进行查找 find 路径 -size +1M ##大于1M find 路径 -size -1M ##小于1M find 路径 -maxdepth 1 -size +1M ##当前目录大于1M find 路径 -maxdepth 2 -size +1M ##当前目录和一级子目录大于1M

注意:由于root用户权限比较大,某些报错就不会产生,因此以下操作均在student用户下完成。

所以接下来在student用胡进行测试,首先切换到student用户下使用命令 find /etc -name passwd 来寻找/etc目录下的passwd文件,由于权限的原因,很多目录是没有权限搜索的,此时会报错然后返回权限限制的标准错误,且只搜寻到两条含有passwd文件:

(1). find /etc -name passwd > file   重定向正确输出到file

通过 > 将正确输出重定向到了file文件中去了,而屏幕只显示了没有重定向的错误输出。

(2). find /etc -name passwd 2> file   重定向错误输出到file

通过 2> 将错误输出重定向到了file文件中去了,而屏幕只显示了没有重定向的正确输出。

(3). find /etc -name passwd &> file   重定向所有输出到file (4). find /etc -name passwd > file 2>&1   重新定义了错误输出为正确输出

上图可以看出 2>&1 和 &> 同效果。

3、tee管道

tee 命令为复制输出到指定位置 作用:把前一个进程的输出重定向复制到指定位置。 由上图可以看出, tee操作之后把标准输出重定向到了file文件中,而管道的wc -l 操作把所有的输出个数都统计了出来,为2。

最新回复(0)