Linux下Shell重定向

1. 标准输入,标准输出与标准错误输出

Linux下系统打开3个文件,标准输入,标准输出,标准错误输出。

标准输入:从键盘输入数据,即从键盘读入数据。

标准输出:把数据输出到终端上。

标准错误输出:把标准错误输出到终端上。

默认的标准输入指的是键盘,默认的标准输出与标准错误输出指的是屏幕或者是终端。

系统为这三个文件分配了文件标识符fd(file descripter).

在Linux系统下,一切皆是文件,对文件的操作,一般要用到文件标识符。它们的文件标识符,分别为0,1,2.

 

2. 重定向

重定向分为输入重定向与输出重定向。

所谓的输入重定向即输入不从键盘读入,而是从文件输入或其它。

所谓的输出重定向即不输出到终端上,而是输出到文件中去或其它。

 

""<"表示输入重定向运算符,">"表示输出重定向t运算符。

"<<"这种输入告诉Shell,当前标准输入来自命令行的一对分隔号的中间内容。

">>",用">"输出时,如果文件不存在会自动建立一个文件,如果第二次输入时,会覆盖前一次的输入内容,而">>"表示把第二次的输出内容追加到文件中去,而不是覆盖。

 

3. 下面看一下几个例子

 

(1)输入重定向

 [root@localhost ~]# wc</etc/inittab
53 229 1666

 

wc统计行数,单词数, 字符数

其中wc的输入来自 /etc/inittab

 


[root@localhost ~]# wc <<aa
> 1
> 11
> 111
> aa
3 3 9

wc统计分隔符aa之间的内容。

 

(2)输出重定向

 

 [root@localhost ~]# ps -ef >a.txt   //把进程的信息输出重定向到a.txt文件中去

 [root@localhost ~]# ps -ef> >a.txt //进程信息追加到a.txt的文件中去

 

 

其实,所谓的输入输出重定向就是不从键盘输入和屏输出。

 

 

4. Linux下输出重定向的典型分析

 

(1) a.out > outfile 2>&1
(2) a.out 2> &1 >outfile

 

分析:

0代表标准输入,1代表标准输出,2代表标准错误输出。其中1(即>=1>)可以省略,默认为标准输出。

(1)首先把a.out重定向到outfile文件中去。然后把 2>&1把标准错误输出重定向到标准输出中去。此时的标准输出已经重定向了,相当于把标准输出与标准错误输出都一起重定向到outfile中去。 &1代表的是标准输出的文件描述符。1一般放在左边表示标准输出重定向到什么位置,而1放在右边是重定向到标准输出中,所以用&区分一下,表示标准输出的文件描述符。2>1表示把标准错误重定向到文件1中去,2>&1则表示标准错误重定向到标准输出中去。

(2)首先把标准错误输出重定向到标准输出中,此时标准输出还在终端。因此标准错误也在终端。然后标准输出到outfile中去了。而标准错误还是在终端。

 

因此,(1)表示标准输出与标准错误都到outfile中去了。

         (2)表示标准输出到outfile,但标准错误输出仍然在终端。

 

 

ls 1>/dev/null 2>/dev/null

ls >/dev/null  2>&1

 

/dev/null是一个垃圾箱,是一个无底洞,表示的含义为不显示。

即标准输出与标准错误输出不显示。

以上两个命令表示的含义是相同的。

 

以上是关于Linux下的重定向问题,一定要深刻理解原理。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux shell 重定向是一种重要的命令行技术,它可以将一个命令的输出流或错误流重定向到指定的文件或命令中,也可以将一个文件中的内容输入到一个命令中。 以下是一些常见的重定向符号: 1. '>' :将命令的输出流重定向到指定文件中,如果该文件已经存在,则会覆盖该文件的内容;如果该文件不存在,则会创建该文件。 例如,将 ls 命令的输出重定向到文件 list.txt 中: ``` ls > list.txt ``` 2. '>>' :将命令的输出流添加到指定文件的末尾,如果该文件不存在,则会创建该文件。 例如,将 ls 命令的输出添加到文件 list.txt 的末尾: ``` ls >> list.txt ``` 3. '<' :将文件内容作为命令的输入流。 例如,将文件 list.txt 的内容作为 grep 命令的输入流: ``` grep "test" < list.txt ``` 4. '2>' :将命令的错误流重定向到指定文件中,如果该文件已经存在,则会覆盖该文件的内容;如果该文件不存在,则会创建该文件。 例如,将 ls 命令的错误流重定向到文件 error.log 中: ``` ls /wrong/path 2> error.log ``` 5. '&' :将命令的输出流和错误流合并为一个流。 例如,将 ls 命令的输出流和错误流合并为一个流,并将其重定向到文件 output.log 中: ``` ls /wrong/path &> output.log ``` 以上是一些常见的重定向符号及其用法,它们能够帮助我们在命令行中更加灵活地处理输入、输出和错误信息。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值