文章目录
一,Linux的三种I/O设备
1.Linux为程序提供三种I/O设备
设备 | linux使用数字表示某设备 | 默认动作 |
---|---|---|
标准输入 | 使用0表示 | 默认接收来自终端窗口的输入 |
标准输出 | 使用1表示 | 标准输出默认将内容输出到终端窗口 |
标准错误 | 使用2表示 | 标准错误默认直接输出到终端窗口 |
- 使用I/O重定向技术可以改变上面三种设备的默认行为。
2.使用I/O重定向
- 把标准输出和标准错误重新定向到文件而不打印到终端
用法:
命令 操作符号 文件名
支持的操作符号包括:
> 把STDOUT重定向到文件
2> 把STDERR重定向到文件
&> 把所有输出重定向到文件
#### > 把STDOUT重定向到文件
[root@centos8 /data $]ls
1 2 3 333 add1.txt add.txt ASCII-WELCOME.txt cal.log hello if jdsfjllfj.log log1 log2 log3 my_file_1.txt one passwd passwdd pattern.example so so.link
[root@centos8 /data $]ls > ls.log
[root@centos8 /data $]cat ls.log
1
2
3
333
add1.txt
add.txt
ASCII-WELCOME.txt
cal.log
hello
if
jdsfjllfj.log
log1
log2
log3
ls.log
my_file_1.txt
one
passwd
passwdd
pattern.example
so
so.link
#### 2> 把STDERR重定向到文件
[root@centos8 /data $]lls 2> error.log
[root@centos8 /data $]cat error.log
bash: lls: command not found...
Similar command is: 'ls'
#### &> 把所有输出重定向到文件
[root@centos8 /data #]ls /data/ /noshuchdir &> allerror.log
[root@centos8 /data #]cat allerror.log
ls: cannot access '/noshuchdir': No such file or directory # STDERR
/data/:
1
2
3
333
add1.txt
add.txt
allerror.log
ASCII-WELCOME.txt
cal.log
error.log
hello
if
jdsfjllfj.log
log1
log2
log3
ls.log
my_file_1.txt
one
passwd
passwdd
pattern.example
so
so.link
-
使用>符号会覆盖已有文件,若追加则需要用>>。
-
将标准输出和错误输出各自定向至不同文件如下:
COMMAND