网站首页 > 文章中心 > 其它

linux的重定向命令

作者:小编 更新时间:2023-10-05 13:58:03 浏览量:178人看过

LINUX 标准错误输出重定向

用途:不挂断地运行命令.

语法:nohup Command [ Arg ... ] [  ]

无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中.

如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中.

如果没有文件能创建或打开以用于追加,那么 Command 参数指定的命令不可调用.

退出状态:该命令返回下列出口值:

linux的重定向命令-图1

否则,nohup 命令的退出状态是 Command 参数指定命令的退出状态.

用途:在后台运行

一般两个一起用

用strace可以看到:

这个命令中实现重定向的关键系统调用序列是:

linux的重定向命令-图2

linux输出重定向到文件命令

输出即把相关对象通过输出设备(显示器等)显示出来,输出又分正确输出和错误输出

一般情况下标准输出设备为显示器,标准输入设备为键盘.

输出重定向:正常输出是把内容输出到显示器上,而输出重定向是把内容输出到文件中

例如:ifconfig test.log 即把ifconfig执行显示的内容写入test.log.当前页面不再显示执行结果.

注意:错误输出重定向/后边没有空格

系统有个常见用法 ls /dev/null 正确输出或错误输出结果都不要.(null可以理解为黑洞或垃圾站)

将jar执行的结果写入到lb-agent.log中

在命令最后加上符号,表示让这个进程到后台去执行,这样立刻返回到提示符状态,我们可以接着做下面的事.如:command .

[Linux]实用指令:重定向、追加

[Linux]入门

[Linux]目录结构

[Linux]vi,vim

[Linux]开机、重启和用户登录注销

[Linux]用户管理篇:创建用户指定密码

[Linux]用户管理篇:删除用户

[Linux]用户管理篇:组的管理

[Linux] 实用指令:运行级别和找回root密码

[Linux] 实用指令:帮助指令

[Linux]实用指令: pwd、ls、cd

[Linux]实用指令:mkdir、rmdir、touch

[Linux]实用指令:cp、 rm、mv

[Linux]实用指令: cat、more、less

[Linux]实用指令:重定向、追加

[Linux]实用指令:echo、head 、tail

[Linux]实用指令:ln 、history

&1

一个进程默认会打开标准输入、标准输出、错误输出三个文件描述符

文件描述符为0,小于号表示数据由文件流入命令

usage:

命令 file

#加入输入重定向,对输入文件进行计数

wc -l /etc/passwd

文件描述符为1,大于号表述数据由命令流入文件

所以: echo "hello" t.log 也可以写成 echo "hello" 1 t.log

会把文件的内容清空,再输入到新的文件

会把当前内容保持不变,然后在下一行进行追加

无论内容正确还是错误都会把文件输出到文件中.

默认情况下, command file 将stdout 重定向到 file, command file 将stdin 重定向到 file.

如果希望 stderr 重定向到 file,可以这样写:

如果希望 stderr 追加到 file 文件末尾,可以这样写:

如果希望将 stdout 和 stderr 合并后重定向到 file,可以这样写:

如果希望对 stdin 和 stdout 都重定向,可以这样写:

含义:将标准错误输出 重定向到 标准输出.

符号是一个整体,不可分开,分开后就不是上述含义了.

linux bash的重定向

关于linux bash的重定向

所谓I/O重定向简单来说就是一个过程,这个过程捕捉一个文件,或者命令,程序,脚本,甚至脚本中的代码块(code block)的输出,然后把捕捉到的输出,作为输入发送给另外一个文件,命令,程序,或者脚本.

标准输入通常指键盘的输入

标准输出通常指显示器的输出

标准错误通常也是定向到显示器

请看以下例子,来描述一下他们的关系

#ls /dev

这个命令列出/dev目录下的所有文件,在屏幕上输出结果.

这里 /dev 就是作为命令ls的标准输入(从键盘输入),而打印在屏幕的结果就是标准输出(/dev目录中的内容)

还是回到标题,重定向就是把标准的+输入或者输出更改成其他的方式,请参看如下例子

或者等同于

#ls /dev 1filename #注意:"1"和""中间没有空格

以上命令会把命令的标准输出重新定向到一个文件filename,而不是显示到屏幕上,如果不指明文件标识符,系统默认的就是1, 所以呢1可以省略

如果把上面例子重的""改成""则表示把输出追加到filename文件的末尾,如果文件不存在则创建它.如下

#ls /dev filename

也可以把标准错误重新定向到文件

以下命令是把标准输出和错误都定向到文件

""今天这一节代表标准输出和标准错误,这里无论是正常输出还是错误信息都写到filename中了.

重新定义标准输入,输出,和错误的文件标识符

重新定义文件标识符可以用ij命令,表示把文件标识符i重新定向到j,你可以把""理解为"取地址"

请看以下例子

同样标准输入也是可以重新定向的,请参考下面例子

# grep search-word

一般来说grep命令在给定文件中搜索字符串,以上命令把文件filename作为grep命令的标准输入,而不是从键盘输入.

前面曾经提到,系统为每一个打开的文件指定一个文件标识符以便系统对文件进行跟踪,那么默认的文件标识符是什么呢?答案是0,也就是标准输入,或者可以说从键盘输入.当然这个文件标识符也可以自己指定,请参考下面例子

命令jfilename表示把文件打开,并指明文件标识符为j

"-"表示关闭文件标识符

有关关闭文件标识符的操作请参考下面

n- 关闭输入文件标识符n 0-或- 关闭标准输入stdin n- 关闭输出文件标识符n 1-或-关闭标准输出stdout

另外还有一些其他命令,如下参考

表示把文件filename设置成空,也就是清空文件内容,如果文件不存在,则创建一个空文件,(等同于touch命令) :表示一个空输出,两个命令的唯一区别就是filename不是在所有shell都可以正常工作的.

;

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章