linux 重定向 管道等

本文详细解读了I/O重定向在Linux中的应用,包括输出重定向、错误重定向、同时处理输出与错误、输入重定向,以及如何利用管道连接指令实现高效文本处理。通过实例演示了ls、cat、sort、uniq和grep等工具的组合使用,以及它们在实际开发中的作用。
摘要由CSDN通过智能技术生成

1、重定向

一般地,输出送到屏幕,输入来自键盘, 但是通过 I/O 重定向,我们可以改变输入输出方向。

执行命令后的输出,错误,命令的输入来源是stdout, stderr, stdin。默认前两者会输出到屏幕,后者会从键盘输入。

1.1、重定向输出

ls -l /usr/bin > ls-output.txt//覆盖或创建

会覆盖或者创建一个txt文件夹。
创建一个空文件夹:

>a.txt
ls -l /usr/bin >> ls-output.txt//追加或创建

1.2、重定向错误

0 1 2代表输入 输出 错误。

ls 2> error.txt

1.3、同时重定向输出和错误

0 1 2代表输入 输出 错误。所以>1>相同

ls -l /bin/usr > ls-output.txt 2>&1
或者
ls -l /bin/usr &> ls-output.txt

1.4 重定向输入

cat < a.txt

1.5、 处理不需要的输出

把输出或者错误信息扔掉,只需要把它重定向到 /del/null文件。

ls -l /bin/usr 2> /dev/null

2、 管道

把前一个指令的输出 当作后一个指令的输入。

常见指令:

cat - 连接文件
sort - 排序文本行
uniq - 报道或省略重复行
grep - 打印匹配行
wc - 打印文件中换行符,字,和字节个数
head - 输出文件第一部分
tail - 输出文件最后一部分

cat

用于查看文本内容,复制目标文件,传入标准输出(如屏幕打印)

cat a.txt

使用cat连接多个文件

cat movie.mpeg.0* > movie.mpeg

单独输入一个cat会等待输入,按ctrl+d结束输入。
如果输入cat > lazy_dog.txt,会等待输入并重定向输出。按ctrl+d结束输入。

cat > lazy_dog.txt
The quick brown fox jumped over the lazy dog.
cat < lazy_dog.txt
等价于
cat  lazy_dog.txt

以less方式查看输出

ls -l /usr/bin | less

sort

排序

uniq

去重
加 -d :只显示重复的

例如,我们想把目录/bin 和/usr/bin 中 的可执行程序都联合在一起,再把它们排序,然后浏览执行结果:

 ls /bin /usr/bin | sort | less
只看重复的部分
 ls /bin /usr/bin | sort | uniq -d | less

wc - 打印行,字和字节数

wc ls-output.txt
7902 64566 503634 ls-output.txt

统计程序数量:

ls /bin /usr/bin | sort | uniq | wc -l

grep - 打印匹配行

找到所有zip文件

ls /bin /usr/bin | sort | uniq | grep zip

”-i”导致 grep 忽略大小
”-v”选项会告诉 grep 只打印不匹配的行。

head / tail - 打印文件开头部分/结尾部分

head 只打印前10行
-n 指定行数

head -n 5 ls-output.txt
ls /usr/bin | tail -n 5
tail -f /var/log/messages//读取日志

-f 持续等待读取

tee

从标准输入
输出到屏幕和文件

保存ls的输出,并在里面查找zip,打印出结果。

ls /usr/bin | tee ls.txt | grep zip

3、通道和重定向的区别

所有的指令和文件可以分为这几类:
A: 能产生输出的指令,如cat,echo(注意echo不能接受输入)
B: 能接受输入的指令,如cat,sort
AB: 既能接收输入又能产生输出的指令。 如cat
C: 文件

管道:连接标准输出和标准输入
左边是一行命令,返回标准输出。
右边是一行命令,支持从标准输入读取

A | AB |...| AB | B

重定向输入:
左边是一行命令,支持从标准输入读取
右边是一个文件路径

重定向输出:
左边是一行命令,返回标准输出。
右边是一个文件路径

B < C
A > C
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值