实验楼--第十二章_数据流与重定向

> >> < << :基础重定向

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
管道是两个进程之间通信用的,而重定向是需要有文件作为中间连接。更直白一点:

管道两段直连进程,重定向有一端必定是文件(可能是隐含的,先经过文件中转)


&:操作文件描述符

在这里插入图片描述
在这里插入图片描述
自己的领悟,感觉可能有错:
在这里插入图片描述
不过也是好理解,因为自己写代码有时候也会用到

python xxx.py > record.log 2>&1

其实就是因为运行python进程会有stdout和stderror同时显示在terminal,而 > 应该确实只能把stdout的内容重定向到文件,stderror需要用2>&1额外指定

###
果然,后面的实验支持了我的猜想:
在这里插入图片描述
这里 1 指的就是stdout,这和我猜的 stdin\stdout\stderror分别对应0\1\2 是一样的


tee: 多重重定向:

在这里插入图片描述


exec: 永久重定向

在这里插入图片描述

# 先开启一个子 Shell
zsh
# 使用exec替换当前进程的重定向,将标准输出重定向到一个文件
exec 1>somefile
# 后面你执行的命令的输出都将被重定向到文件中,直到你退出当前子shell,或取消exec的重定向(后面将告诉你怎么做)
ls
exit
cat somefile

在这里插入图片描述
在这里插入图片描述
很好理解,因为我们之前学过 - 本来就是上一层目录的意思,这里就是上一次重定向文件的描述符


/dev/null: 黑洞文件

在这里插入图片描述
我们可以利用 /dev/null 屏蔽命令的输出:

cat Documents/test.c 1>/dev/null 2>&1

上面这样的操作将使你得不到任何输出结果。


xargs: 分割参数列表

在这里插入图片描述
这个命令在有些时候十分有用,特别是当用来处理产生大量输出结果的命令如 find,locate 和 grep 的结果,详细用法请参看 man 文档。

cut -d: -f1 < /etc/passwd | sort | xargs echo

上面这个命令用于将 /etc/passwd 文件按 : 分割取第一个字段排序后,使用 echo 命令生成一个列表。

其实说白了就是把很多一行行的东西(如上述cut的stdout,ternimal一个page塞不下)变成参数列表,一列显示:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43301333/article/details/113748776