理解和使用工具(十)-输入输出重定向(redirection)

linux 有三个steam来实现输入输出:stdin, stdout,stderr。std表示standard(标准的)

ls 命令就使用了stdout,来输出信息,

如果你输入了错误的命令,stderr就会输出错误信息。

这三种stream可以被数字代表,0代表stdin,1代表stdout,2代表stderr。

怎样读取目录的stdout 存到一个文件里呢?

ls > list.out

list.out 是一个文件,>表示输入。如果用 less list.out 就可以浏览 list.out 的内容。

但是这样操作会重写文件,即覆盖文件里原有内容。

date >> list.out

用>>就不会重写,而是在原有内容下面添加内容。上面的命令即添加了时间信息到文件中。

怎样将错误信息记录下来?

ls -y 2> error.out

-y不属于ls的选项,因此会有错误信息,此时如果仅用>,是无法写入报错信息的,需要在前面加上代表stderr的数字2,这样就能把前面命令的报错给存下来,同理用>>不会覆盖文件原有内容。

su
wc -l /var/log/messages

su 获取root权限后,我们可以操作更高权限的内容。

wc 会获取文件有多少内容,-l 表示行数,我执行这条命令会得到message文件里有多少行

5041 /var/log/messages
tail -n 100 /var/log/messages

可以输出最后的100条log信息,让我们重定向这些内容:

tail -n 100 /var/log/messages > /home/100messages.log

这样我们就把这些内容保存到了新的文件里。

我们可以使用cat命令将两个文件合并到一起,存到一个新文件里:

cat /etc/passwd /etc/group > /home/passwdgroup

pipe

|

pipe可以将上一条命令的输出,传到下一条命令里,如

ls -l | less

ls -l 显示的内容,会用less viewer显示出来。但是屏幕上只显示less的内容,不显示ls的内容,很容易分辨出来

cat /etc/passwd | wc -l

cat读取的passwd文件被wc -l 计算行数

tee

tee 可以同时将输出显示并存储到文件里

ls | tee ls.txt

tee命令将ls的内容打印在屏幕上,并保存到 ls.txt 中。

更多例子:

如果以普通u用户权限执行这条命令

find /etc -name  network

我们会得到stdout和stderr混杂在一起的信息,但是如果我们只想拿到stderr,使用2>即可:

find /etc -name network 2> error.txt

 也能同时存储stdout 和stderr

find /etc -name network > output.txt 2> error.txt

 /dev/null是空设备,相当于丢弃信息,下面这条命令只保存stdout,不保存stderr

find /etc -name network > output.txt 2> /dev/null

 将stdout 和 stderr存到一起:

find /etc -name network &> network.txt

 将stderr重定向为stdout,并写入 network.txt

find /etc -name network >> network.txt 2>&1

 将/etc/passwd的内容,输入到cat(显示)里

cat < /etc/passwd

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值