0302 echo、重定向、管道、cat、tee
目录
1输入流和输出流
单个程序的数据流模型

1.1 程序
泛指大多数普通程序(大多数程序都有输入流和输出流),在Linux中的shell中都可以理解成是一个程序
1.2 输入流
提供给程序处理的信息
1.3 输出流
程序执行后返回的结果
2输入、输出
2.1 标准输出(stdout):屏幕
2.2 标准输入(stdin):鼠标、键盘
例:Python 中调用了 input,它是需要输入的,它会默认去找系统的 stdin , 而 stdin 是默认连接到键盘的
例:Python 中调用 print , 它是需要输出的,它会默认去找stdout, 而 stdout 是默认连接到屏幕的
> 注意1:标准输入和标准输出是可以自己指定的,但是我们一般使用默认的
> 注意2 : 还有一个标准错误输出(2);通常标准输入(0),标准输出(1);后面的数字是它们的表示方法
3echo -->> 回显
3.1 作用
接收一个命令参数(一个字符串)当做其输入流,再将该流交给标准输出来输出;因此,echo命令会会将用户键入的命令参数回显到屏幕上
例如

例:echo 'I am a student.' -->> 'I am a student.' 是给 shell,再由 shell 传给 echo 命令
3.2 echo 的输入和输出
echo 是从参数获得输入(不是标准输入),输出是屏幕,是标准输出
echo “I am a student” -->> 回车后速度很快的原因
流不是直接从输入流向屏幕,它会现在内存中暂留(缓冲区),缓冲区满了再
> 缓冲区:解决内存和硬盘速度不对等的问题
计算机速度快
4标准输出重定向
默认的标准输出是屏幕,标准输出重定向可以将标准输出的内容流向一个文件

缺点:重定向会刷新文件(即:之前的内容会消失)

解决办法:利用 >> 代替 >

5管道
把一个程序的输出流交给另外一个程序,作为另外一个程序的输入流

图解:程序1的输出流顺着管道流向了程序2的输入流(注意:这里说的管道只是一个比喻而已)
例如

echo 可以将 print('asdf') 命令输出到屏幕上
> echo 的输出是标准输出
echo "print('asdf')"
> 仅仅是将命令输出
echo "print('asdf')" | python3
> 返回的结果是 asdf
>> 因为 echo 的输出是 print('asdf') 这个命令, 通过管道(由 | 实现)将这个命令送到 Python3 命令的输入流,经过 Python3 这条命令处理后就会得到一个输出流
>>> 通常Python3 这个命令的输入是一个文件,我们这里使用Python代码也是可以的
6cat 命令
6.1 查看文件内容
cat 文件名(加后缀)

> cat 的输入是一个文件,输出是标准输出
6.2 cat 用于重定向
cat 文件名1 > 文件名2

> cat 的输出是标准输出,所以可以用于标准输出重定向
6.3 cat 用于拼接输出
cat 文件1 文件2 文件3

> 可以将多个文件的内容拼接到一起
6.4 无参数的cat
cat 如果不给输入,那么它会等待标准输入;再遇到 \n 时就会通过标准输出输出到屏幕
> 作用是用来创建一个新文件,并向其写入数据

使用 > 是刷新内容

使用 >> 是增加内容
>注意1: 千万不要利用 cat 来写配置文件
>注意2:ctrl + d -->> 正常退出
6.5 cat 和 > 的组合妙用
将多个文件的内容合并到一个文件中

> 理解:cat 可以将多个文件的内容读出,并标准输出到屏幕;而 > 可以将一个标准输出今进行重定向
7tee 命令
echo 的输出是标准输出
cat 的输出可以是 标准输出 或者 同 > 组合将内容写入到文件
tee 的输出时 标准输出 和 文件


浙公网安备 33010602011771号