重定向
有关输出重定向,举例说明就比如:
$ls -l > lsoutput.txt
这是输出重定向中比较简单的操作,上面的这个例子的结果,在当前目录下不存在lsoutput.txt文件时,创建该文件并将结果置于其中;但在已经存在lsoutput.txt文件的情况下,将会清空该文件再把结果置于其中。由此,将带来一些不必要的麻烦。
在此,Linux提供了一种方法来避免这种麻烦,即通过设置noclobber。操作如下:
set -o noclobber (or set -C)
set +o noclobber
除此之外,输出重定向操作还有另一项操作:>> 。例如:
$ps >> lsoutput.txt
上面简单介绍了一下输出重定向操作的两种方式,现在我们再深入了解重定向操作。
在Linux中,分别用三个数字0、1、2来表示重定向操作的三种状态。0代表标准输入、1代表标准输出、2代表标准错误输出。因此,我们通过使用2>来将标准错误输出存放到具体的文件中。比如:
$kill -HUP 1234 >killout.txt 2>killerr.txt
如果你想将这两种结果都保存在一个文件中,可以通过操作:
$kill -1 1234 >killout.txt 2>&1
另外,如果你不想保存标准输出和标准错误输出到文件中,可以通过/dev/null来达到要求。命令如下:
$kill -1 1234 >/dev/null 2>&1
输入重定向操作类似于输出重定向,举例说明:
$more < killout.txt
下面是一些重定向的例子:
$ls /dev 1>filename
$ls -qw /dev 2>filename (很明显,qw选项不是ls的参数选项)
$ls /dev &>filename (标准输出和标准错误输出都保存在filename文件中)
$exec 5>&1 (表示把文件标识符5定向到标准输出,这个命令通常用来临时保存标准输入)
#echo 123456789 >filename 把字符串写到文件filename中
#exec 3<>filename 把文件filename打开,并指定文件标识符为3
#read -n 4 <&3 从文件中读4个字符,句柄已经指到第四个字符末尾
#echo -n . >&3 在第5个字符处写一个点,覆盖第5个字符,-n表示不换行
#exec 3>&- 关闭文件标识符3
n<&- 关闭输入文件标识符n
0<&-或<&- 关闭标准输入stdin
n>&- 关闭输出文件标识符n
1>&-或>&-关闭标准输出stdout
:> filename 或者 > filename