Shell 输入/输出重定向
参考教程:http://www.cnblogs.com/chengmo/archive/2010/10/20/1855805.html
菜鸟教程:http://www.runoob.com/linux/linux-shell-io-redirections.html
大多数 UNIX 系统命令从你的终端接受输入并将所产生的输出发送回到您的终端。一个命令通常从一个叫标准输入的地方读取输入,默认情况下,这恰好是你的终端。同样,一个命令通常将其输出写入到标准输出,默认情况下,这也是你的终端。
一个命令执行了:
先有一个输入:输入可以从键盘,也可以从文件得到
命令执行完成:成功了,会把成功结果输出到屏幕:standard output默认是屏幕
命令执行有错误:会把错误也输出到屏幕上面:standard error默认也是指的屏幕
重定向命令
列表如下:
输出重定向
语法如下:
command1 > file1
实例:
#!/bin/bash
who > users
如果不希望文件内容被覆盖,可以使用 >> 追加到文件末尾,例如:
#!/bin/bash
who >> users
输入重定向
和输出重定向一样,Unix 命令也可以从文件获取输入,也就是从文件中输入数据(将文件作为输入),语法为:
command-line [n] < file或文件描述符&设备
将然有,命令默认从键盘获得的输入,改成从文件,或者其它打开文件以及设备输入。执行这个命令,将标准输入0,与文件或设备绑定。将由它进行输入。
实例:
$ wc -l users
2 users
也可以将输入重定向到 users 文件:
$ wc -l < users
2
注意:上面两个例子的结果不同:第一个例子,会输出文件名;第二个不会,因为它仅仅知道从标准输入读取内容。
注意:上面两个例子的结果不同:第一个例子,会输出文件名;第二个不会,因为它仅仅知道从标准输入读取内容。
语法如下:
command1 < infile > outfile
重定向深入讲解
一般情况下,每个 Unix/Linux 命令运行时都会打开三个文件:
标准输入文件(stdin):stdin的文件描述符为0,Unix程序默认从stdin读取数据。
标准输出文件(stdout):stdout 的文件描述符为1,Unix程序默认向stdout输出数据。
标准错误文件(stderr):stderr的文件描述符为2,Unix程序会向stderr流中写入错误信息。