重定向命令linux 重定向命令使用( 二 )


这里 /dev 就是作为命令ls的标准输入(从键盘输入) , 而打印在屏幕的结果就是标准输出(/dev目录中的内容)
还是回到标题,重定向就是把标准的`输入或者输出更改成其他的方式 , 请参看如下例子
或者等同于
#ls /dev 1filename #注意:"1"和""中间没有空格
以上命令会把命令的标准输出重新定向到一个文件filename,而不是显示到屏幕上,如果不指明文件标识符,系统默认的就是1, 因此1可以省略
如果把上面例子重的""改成""则表示把输出追加到filename文件的末尾,如果文件不存在则创建它 。如下
#ls /dev filename
也可以把标准错误重新定向到文件
#ls -qw /dev 2filename
显然 -qw是一个错误参数,通常会在显示器上报告一个错误信息,但由于把2标准错误(stderr)重新定向到了文件filename , 因此显示器没有错误信息,而信息写到了文件里面
以下命令是把标准输出和错误都定向到文件
#ls /dev filename
""在这里代表标准输出和标准错误,这里无论是正常输出还是错误信息都写到filename中了 。
重新定义标准输入,输出,和错误的文件标识符
重新定义文件标识符可以用ij命令,表示把文件标识符i重新定向到j , 重定向命令linux你可以把""理解为"取地址"
请看以下例子
#exec 51
表示把文件标识符5定向到标准输出,这个命令通常用来临时保存标准输入 。
同样标准输入也是可以重新定向的,请参考下面例子
# grep search-word
一般来说grep命令在给定文件中搜索字符串,以上命令把文件filename作为grep命令的标准输入,而不是从键盘输入 。
前面曾经提到,系统为每一个打开的文件指定一个文件标识符以便系统对文件进行跟踪 , 那么默认的文件标识符是什么呢?答案是0 , 也就是标准输入,或者可以说从键盘输入 。当然这个文件标识符也可以自己指定 , 请参考下面例子
#echo 123456789 filename 把字符串写到文件filename中 #exec 3filename 把文件filename打开,并指定文件标识符为3 #read -n 4 3 从文件中读4个字符,句柄已经指到第四个字符末尾 #echo -n . 3 在第5个字符处写一个点 , 覆盖第5个字符 , -n表示不换行 #exec 3- 关闭文件标识符3
现在cat filename文件的结果就成了1234.6789
【重定向命令linux 重定向命令使用】命令jfilename表示把文件打开,并指明文件标识符为j
"-"表示关闭文件标识符
有关关闭文件标识符的操作请参考下面
n- 关闭输入文件标识符n 0-或- 关闭标准输入stdin n- 关闭输出文件标识符n 1-或-关闭标准输出stdout
另外还有一些其他命令,如下参考
2. : filename 或者filename
表示把文件filename设置成空 , 也就是清空文件内容,如果文件不存在 , 则创建一个空文件,(等同于touch命令) :表示一个空输出,两个命令的唯一区别就是filename不是在所有shell都可以正常工作的 。
;
LINUX 标准错误输出重定向用途:不挂断地运行命令 。
语法:nohup Command [ Arg … ] []
无论是否将 nohup 命令的输出重定向到终端重定向命令linux , 输出都将附加到当前目录的 nohup.out 文件中 。
如果当前目录的 nohup.out 文件不可写重定向命令linux , 输出重定向到 $HOME/nohup.out 文件中 。
如果没有文件能创建或打开以用于追加,那么 Command 参数指定的命令不可调用 。
退出状态:该命令返回下列出口值:
126 可以查找但不能调用 Command 参数指定的命令 。

推荐阅读