前言:
计算机总共有五大部件:
运算器,控制器:CPU
存储器:RAM
输入设备,输出设备。
而我们平时所常见的输入设备主要有:键盘,鼠标。
输出设备:显示器。
系统设定的默认设备:
输入设备:标准输入 STDIN ,0(0是它的标识符)
输出设备:标准输出 STDOUT ,1
标准错误输出:STDERR,2
标准输入设备:键盘
标准输出设备:显示器
I/O重定向:就是改变标准输入输出的位置。(即把本应该输出的显示器上的内容保存到你所希望保存到文档中)
>:覆盖输出
>>:追加输出
例子:
jieli@KD4S3XRVG95729C:/home$ ls /var > /tmp/var.out #第一次
jieli@KD4S3XRVG95729C:/home$ cat /tmp/var.out
backups
cache
lib
local
lock
log
mail
opt
run
spool
tmp
jieli@KD4S3XRVG95729C:/home$ ls /var > /tmp/var.out #第二次
jieli@KD4S3XRVG95729C:/home$ cat /tmp/var.out
backups
cache
lib
local
lock
log
mail
opt
run
spool
tmp
jieli@KD4S3XRVG95729C:/home$
以上可以看到 第二次的 > (重定向)内容,覆盖了第一次的内容。
jieli@KD4S3XRVG95729C:/home$ ls /var >> /tmp/var.out #第三次
jieli@KD4S3XRVG95729C:/home$ cat /tmp/var.out
backups
cache
lib
local
lock
log
mail
opt
run
spool
tmp
backups
cache
lib
local
lock
log
mail
opt
run
spool
tmp
jieli@KD4S3XRVG95729C:/home$
以上可以看到 第三次的未覆盖第二次的内容。
注意:如果你不想 > 操作覆盖掉你原来的内容,可以使用set命令来设置。
set -C #关闭允许覆盖已经存在文件
但是要注意,关闭了之后,可以使用 >| 来强制覆盖文件
set +C#允许覆盖文件以及内容
标准错误输出:
2> :错误输出 覆盖模式
2>>:追加模式
jieli@KD4S3XRVG95729C:/home$ ls /varr 2> /tmp/var.out
jieli@KD4S3XRVG95729C:/home$ cat /tmp/var.out
ls: 无法访问'/varr': 没有那个文件或目录
ls /var > /tmp/var.out 2> /tmp/var.out
&> :重定向标准正确错误输出
输出重定向
< :大多数命令本身默认含有输入重定向的意思
比如
jieli@KD4S3XRVG95729C:/home$ cat < /etc/fstab
# <file system> <mount point> <type> <options> <dump> <pass>
/deepin/disks/root.disk / ext4 loop,errors=remount-ro 0 1
/deepin/disks/swap.disk none swap loop,sw 0 0
jieli@KD4S3XRVG95729C:/home$ cat
123
123
13
13
^C
jieli@KD4S3XRVG95729C:/home$
但是有一些命令不接受文件。比如 tr
<<: 表示此处文档 Here Document
例子:
jieli@KD4S3XRVG95729C:/home$ cat << EOF
> 123
> 131
> 13212
> EOF
123
131
13212
jieli@KD4S3XRVG95729C:/home$
管道:
| 前一个命令的输出,作为后一个命令的输出。