首页 > Linux下Shell重定向

Linux下Shell重定向

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

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

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

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

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

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

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

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

 

2. 重定向

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

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

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

 

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

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

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

 

3. 下面看一下几个例子

 

(1)输入重定向

 [root@localhost ~]# wc
53 229 1666

 

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

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

 



[root@localhost ~]# wc <
> 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下的重定向问题,一定要深刻理解原理。

原文地址:http://blog.csdn.net/jfkidear/article/details/7823486

转载于:https://www.cnblogs.com/lishihai/p/7986543.html

更多相关:

  • 全卷积网络(FCN) 1.全卷积神经网络介绍 FCN对图像进行像素级的分类,从而解决了语义级别的图像分割(semantic segmentation)问题。与经典的CNN在卷积层之后使用全连接层得到固定长度的特征向量进行分类(全联接层+softmax输出)不同,FCN可以接受任意尺寸的输入图像,采用反卷积层对最后一个卷积层的fea...

  • printf()函数优点在于可以格式化输出 格式:   %['padding_character][-][width][.precision]type   所有的转换说明都是以%开始,如果想打印一个%符号,必须用%% ;   参数“'padding_character”是可选,它将被用来填充变量直至所指定的宽度,该参...

  • 给定一个长度不超过10000的、仅由英文字母构成的字符串。请将字符重新调整顺序,按GPLTGPLT....这样的顺序输出,并忽略其它字符。当然,四种字符(不区分大小写)的个数不一定是一样多的,若某种字符已经输出完,则余下的字符仍按GPLT的顺序打印,直到所有字符都被输出。 输入格式: 输入在一行中给出一个长度不超过10000的、仅...

  • 给定两个整数A和B,输出从A到B的所有整数以及这些数的和。 输入格式: 输入在一行中给出2个整数A和B,其中−100≤A≤B≤100,其间以空格分隔。 输出格式: 首先顺序输出从A到B的所有整数,每5个数字占一行,每个数字占5个字符宽度,向右对齐。最后在一行中按Sum = X的格式输出全部数字的和X。 输入样例:...

  • python面试题目 原文地址:https://www.usblog.cc/blog/post/justzhl/b5cc9a05c7d2 问题一:以下的代码的输出将是什么? 说出你的答案并解释。 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 class Parent(object):     x...

  • 执行脚本结果重定向 sh hah.sh hello 1>>/home/qiso/job.log 2>&1 上面这句话的意思是 首先通过sh执行脚本hah.sh,其中执行这个脚本的时候,需要传入参数,参数是hello, 1表示的是标准输出,以上脚本执行完毕之后,首先执行2>1这个意思是说将标准错误重定向到标准输出,0,1,2分别...

  • CentOS7自带的git版本1.8.3.1,这个版本有点低了。于是决定折腾升级, 实操记录在此: 1、确认你的当前git版本 在终端输入: git --version   2、使用root账号 在终端终入: su root 然后输入root账号的密码,注意linux下输密码时界面是没有变化的   3、配置存储库 启用Wa...

  • 今天做TJU的OJ ,其中一道题是先读入一个字符串,再读入一个整数,循环往复,直到字符串是空,也就是说回车键结束循环。 但是cin对空格和回车都不敏感,都不影响继续读入数据,所以需要一种新的方式检测回车。 方法一:利用getchar()函数 1 //**************************将输入的单词逆序输出*****...

  • 题目描述: 根据输入的运算符对输入的整数进行简单的整数运算。 运算符只会是加+、减-、乘*、除/、求余%、阶乘!六个运算符之一。 输出运算的结果,如果出现除数为零,则输出“error”,如果求余运算的第二个运算数为0,也输出“error”。 输入: 输入为一行。先输入第一个整数,空格输入运算符,然后再空格输入第二个整数,回车结束...

  • 1、调出命令窗口:开始---->运行---->cmd,或者是window+R组合键   2、输入命令:netstat -ano,列出所有端口的情况。在列表中我们观察被占用的端口,比如是4300,我们拿它来做实验。 3、查看被占用端口对应的PID,输入命令:netstat -aon|findstr "4300",回车,记下最后一位...

  • 关于这个问题其实我很早之前就研究过,只是一直都是弄一次就不管了,下次就忘记怎么弄了,又去查,现在就写个笔记吧。 win8/8.1 在开始的界面输入netplwiz,或者点击win+r打开运行,输入netplwiz,然后回车 会弹出这个框框 然后会然你输入密码,输入之后点击确定就可以了。   winXP/7: 这个系统有点不同 使用...