linux标准错误输入、输出和错误和文件重定向


在shell中执行命令时,没个进程都和三个文件相联系。并使用文件描述符来引用这些文件。

文件描述符不好记忆,shell同时给出了相应的文件名


文件描述符,及他们通常所对应的 文件名
  • 0       输入文件--标准输入,           缺省是键盘,也可以是文件或其他命令的输出。
  • 1       输出文件--标准输出,           缺省是屏幕,也可以是文件。
  • 2       错误输出文件--标准错误        缺省是屏幕,也可以是文件。


文件重定向

在执行命令时,可以指定命令的标准输入、输出和错误,要实现就得使用2文件重定向。

eg:    /dev/null 2>&1复制代码

&号,后面接的是必须的文件描述符。 不能写成2>1,这样就成了标准错误重定向到文件名为1的文件中了,而不是重定向标准错误到标准输出中。

& 一般是表示产生一个子shell,即后台运行


常用的:


command > filename 把把标准输出重定向到一个新文件中               //默认当前路径

command 1 > fielname 把把标准输出重定向到一个文件中               //默认就是1

command >> filename 把把标准输出重定向到一个文件中   (追加)


command > filename 2>&1 把把标准输出标准错误一起重定向到一个文件中

command >> filename 2>&1 把把标准输出标准错误一起重定向到一个文件中  (追加)


command 2 > filename 把把标准错误重定向到一个文件中

command 2 >> filename 把把标准错误重定向到一个文件中            (追加)


实例:

/home/da/bcrun  -X &>>bcrunwatchlog.log
./ddd -X >> ddd_log/boot.log 2>&1       &           //标准
等同于:./ddd -X  1>> ddd_log/boot.log   2>&1
标准输出到ddd_log/boot.log中---1>> ddd_log/boot.log    
错误标准重定向到标准输出中---2>&1
最终就是,错误输出和标准输出都重定向到ddd_log/boot.log里面复制代码

错误的示例执行文件data

 data > output.txt         //失败,错误直接重定向到输出文件是不行的

 data 2> output.txt       //成功,将错误输出到output.txt文件

 data >&2 output.txt    //失败,标准输出到标准输出,而此时标准输出为空,output.txt为空



标准输入

我们创建了一个名为myfile的文件,并在其中使用了TERM和LOGNAME变量。

$cat >> myfile <<MAYDAY

> Hello there I am using a $TERIM terminal

> and my user name is $LOGNAME

> bye...

> MAYDAY


$ cat myfile

Hello there I am using a vt100 terminal

and my user name is dave

bye...


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Linux输入输出重定向是指将命令的输入输出从默认的终端改为其他文件或设备。输入重定向使用符号“<”,将文件作为命令的输入输出重定向使用符号“>”或“>>”,将命令的输出写入文件或设备。例如,将一个文件作为命令的输入:cat < file.txt,将命令的输出写入文件:ls > file.txt,将命令的输出追加到文件末尾:echo "hello" >> file.txt。这些重定向操作可以方便地处理大量数据或自动化脚本的输出。 ### 回答2: 在Linux系统下,输入输出可以通过重定向来操作。输入重定向是将输入从键盘(默认的标准输入)改为来自文件或命令。输出重定向是将输出从终端(默认的标准输出)改为写入文件或向命令管道传送。 输入重定向可以使用符号<来进行操作。比如,如果想从文本文件中读取输入,可以使用命令cat < file.txt,其中<符号告诉Linux将文本文件作为标准输入。如果要将多个文件输入到同一个命令中,可以使用符号<来分隔文件,例如,cat < file1.txt < file2.txt。 输出重定向可以使用符号>或>>来进行操作,>符号会将输出写入到一个新文件中,如果该文件不存在,则创建一个新文件。例如,echo "hello world" > file.txt会将字符串输出到file.txt文件中。>>符号则会将输出追加到现有文件末尾。如果文件不存在,则创建一个新文件,例如,echo "hello world" >> file.txt会将字符串输出到file.txt文件末尾。 除了>和>>符号,还有一些其他的输出重定向符号,包括>&、<&和&>。&>符号将标准输出标准错误输出都写入到同一个文件中。<&符号将重定向标准输入和命令之间的通信。>&符号将标准输出重定向错误输出,将错误输出重定向标准输出。 总之,输入输出重定向Linux系统中非常重要的概念,可以帮助用户更高效地处理输入输出。熟练地使用输入输出重定向符号可以极大地提高代码的可读性和效率。 ### 回答3: Linux输入输出重定向是一种非常重要的命令行技巧,主要用于在命令行上通过不同的方式重定向程序的输入输出输入重定向指的是将已有的文件内容作为命令或程序的输入,让其执行相应的操作。通常情况下,我们可以使用<符号来进行输入重定向,比如: ``` $ cat <file.txt ``` 这条命令将会把file.txt这个文件中的内容输出到命令行上。 输出重定向则是将命令或程序的输出结果输出到指定的文件中,而不是输出到屏幕上。在Linux系统中,我们可以使用>符号来进行输出重定向,比如: ``` $ ls -l > file.txt ``` 这条命令将会把ls -l命令的执行结果输出到file.txt这个文件中。 除了>符号外,我们还可以使用>>符号来进行追加输出重定向,比如: ``` $ echo "hello" >> file.txt ``` 这条命令将会把字符串"hello"附加到file.txt这个文件的末尾处。 除了上述的输入输出重定向方式外,还有一种被称为管道符的方式,它的作用是把一个命令或程序的输出结果作为另一个命令或程序的输入,来处理数据。比如: ``` $ cat file.txt | grep "hello" ``` 这条命令将会输出file.txt文件中所有包含"hello"这个关键字的行。 总的来说,输入输出重定向Linux系统中一种非常重要的命令行操作技巧,它可以帮我们更加高效和方便地处理大量的数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值