在Linux里,任何东西都是一个文件。
eg.
ls
是把结果输出到一个特殊的文件称为standard output (stdout),错误结果到standard error (stderr)。标准输入和标准错误都链接到屏幕,不保存到磁盘。
>
保存输出结果到文件。
若输出结果不存在,则>
导出空文件。 程序不把它 的错误信息输送到标准输出。 而,像许多写得不错的 程序, 把错误信息送到标准错 误。因为我们只是重定向了标准输出,而没有重定向标准错误,所以错误信息被送到屏幕。
[me@linuxbox ~]$ >output.txt可以输出或创建一个空文件。若重定向结果追加到文件内容之后:
[me@linuxbox ~]$ >> output.txt重定向标准错误缺乏专用的重定向操作符,用2:
[me@linuxbox ~]$ ls -l /bin/usr 2> error.txt重定向标准输入和错误到一个文件
[me@linuxbox ~]$ ls -l /bin/usr > ls-output.txt 2>&1
该过程完成2个重定向,首先是标准输出到ls-output.txt,然后是重定向文件描述符2(标准错误)到文件描述符1(标准输出),使用方法2>&1。处理不需要的输出:
[me@linuxbox ~]$ls -l /bin/usr 2> /dev/null
/dev/null 是系统设备,叫位储存桶,可接受输入,并且对输入不做任何处理。
cat 连接文件
[me@linuxbox ~]$ cat > temp.txt
asdfa
wfew
fwe
Ctrl-d结束文本输入。
[me@linuxbox ~]$ cat temp.txt
asdfa
wfew
fwe
管道线
从标准输入读数据,把数据输送到标准输出。
command1 | command2
head/ tail
tail -f
允许实时浏览文件。tail会继续监测这个文件,有新内容添加后,会立即出现在屏幕上。直到Ctrl-C结束。
[me@linuxbox ~]$ tail -f /var/log/messages
tee 从Stdin读取数据,并同时输出到Stdout和文件
tee从标准输入读数据,同时赋值数据到标准输出(允许数据继续随着管道线流动)和一个或多个文件。
[me@linuxbox ~]$ ls /usr/bin | tee ls.txt|grep zip
参考《the linux learning command》