管道

管道命令操作符是:”|”,它仅能处理经由前面一个指令传出的正确输出信息,也就是 standard output 的信息,对于 stdandarderror 信息没有直接处理能力。然后,传递给下一个命令,作为标准的输入 standard input.

图 1

如图,command1正确输出,作为command2的输入 然后comand2的输出作为,comand3的输入 ,comand3输出就会直接显示在屏幕上面了。通过管道之后:comand1,comand2的正确输出不显示在屏幕上面。

注意:

1、管道命令只处理前一个命令正确输出,不处理错误输出。

2、管道命令右边命令,必须能够接收标准输入流命令才行。作用接收标准输入的命令才可以用作管道右边。否则传递过程中数据会抛弃。

常用来作为接收数据管道命令(文本处理命令)有:

sed,awk,cut,head,top,less,more,wc,join,sort,split 等。
3.  一般如果是命令间传递参数,还是管道的好,如果处理输出结果需要重定向到文件,还是用重定向输出比较好。

  1. [root@s2 ~]# cat /etc/passwd |grep -n "var"
  2. :adm:x:::adm:/var/adm:/sbin/nologin
  3. :lp:x:::lp:/var/spool/lpd:/sbin/nologin
  4. :mail:x:::mail:/var/spool/mail:/sbin/nologin
  5. :ftp:x:::FTP User:/var/ftp:/sbin/nologin
  6. :libstoragemgmt:x:::daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
  7. :avahi:x:::Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
  8. :avahi-autoipd:x:::Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
  9. :rpc:x:::Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
  10. :chrony:x::::/var/lib/chrony:/sbin/nologin
  11. :pegasus:x:::tog-pegasus OpenPegasus WBEM/CIM services:/var/lib/Pegasus:/sbin/nologin
  12. :colord:x:::User for colord:/var/lib/colord:/sbin/nologin
  13. :rpcuser:x:::RPC Service User:/var/lib/nfs:/sbin/nologin
  14. :nfsnobody:x:::Anonymous NFS User:/var/lib/nfs:/sbin/nologin
  15. :pulse:x:::PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
  16. :gdm:x::::/var/lib/gdm:/sbin/nologin
  17. :pcp:x:::Performance Co-Pilot:/var/lib/pcp:/sbin/nologin
  18. :sshd:x:::Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
  19. :postfix:x::::/var/spool/postfix:/sbin/nologin
  20. :oprofile:x:::Special user account to be used by OProfile:/var/lib/oprofile:/sbin/nologin
  21.  
  22. [root@s2 ~]# cat /etc/passwd /etc/abc |grep -n "var"
  23.  
  24. cat: /etc/abc: No such file or directory
  25. #不存在 abc,错误输出也到屏幕
  26.  
  27. :adm:x:::adm:/var/adm:/sbin/nologin
  28. :lp:x:::lp:/var/spool/lpd:/sbin/nologin
  29. :mail:x:::mail:/var/spool/mail:/sbin/nologin
  30. :ftp:x:::FTP User:/var/ftp:/sbin/nologin
  31. :libstoragemgmt:x:::daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
  32. :avahi:x:::Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
  33. :avahi-autoipd:x:::Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
  34. :rpc:x:::Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
  35. :chrony:x::::/var/lib/chrony:/sbin/nologin
  36. :pegasus:x:::tog-pegasus OpenPegasus WBEM/CIM services:/var/lib/Pegasus:/sbin/nologin
  37. :colord:x:::User for colord:/var/lib/colord:/sbin/nologin
  38. :rpcuser:x:::RPC Service User:/var/lib/nfs:/sbin/nologin
  39. :nfsnobody:x:::Anonymous NFS User:/var/lib/nfs:/sbin/nologin
  40. :pulse:x:::PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
  41. :gdm:x::::/var/lib/gdm:/sbin/nologin
  42. :pcp:x:::Performance Co-Pilot:/var/lib/pcp:/sbin/nologin
  43. :sshd:x:::Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
  44. :postfix:x::::/var/spool/postfix:/sbin/nologin
  45. :oprofile:x:::Special user account to be used by OProfile:/var/lib/oprofile:/sbin/nologin
  46.  
  47. [root@s2 ~]# cat /etc/passwd /etc/abc > err.txt |grep -n "var"
  48. cat: /etc/abc: No such file or directory
  49. cat: : No such file or directory
  50. [root@s2 ~]# cat /etc/passwd /etc/abc > err.txt |grep -n "var"
  51. :adm:x:::adm:/var/adm:/sbin/nologin
  52. :lp:x:::lp:/var/spool/lpd:/sbin/nologin
  53. :mail:x:::mail:/var/spool/mail:/sbin/nologin
  54. :ftp:x:::FTP User:/var/ftp:/sbin/nologin
  55. :libstoragemgmt:x:::daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
  56. :avahi:x:::Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
  57. :avahi-autoipd:x:::Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
  58. :rpc:x:::Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
  59. :chrony:x::::/var/lib/chrony:/sbin/nologin
  60. :pegasus:x:::tog-pegasus OpenPegasus WBEM/CIM services:/var/lib/Pegasus:/sbin/nologin
  61. :colord:x:::User for colord:/var/lib/colord:/sbin/nologin
  62. :rpcuser:x:::RPC Service User:/var/lib/nfs:/sbin/nologin
  63. :nfsnobody:x:::Anonymous NFS User:/var/lib/nfs:/sbin/nologin
  64. :pulse:x:::PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
  65. :gdm:x::::/var/lib/gdm:/sbin/nologin
  66. :pcp:x:::Performance Co-Pilot:/var/lib/pcp:/sbin/nologin
  67. :sshd:x:::Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
  68. :postfix:x::::/var/spool/postfix:/sbin/nologin
  69. :oprofile:x:::Special user account to be used by OProfile:/var/lib/oprofile:/sbin/nologin
  70. [root@s2 ~]# cat err.txt
  71. cat: /etc/abc: No such file or directory
  72.  
  73. # ls命令不支持标准输入,所有未例会管道的输出文件名HBaseTestCase.java
  74. [root@s2 ~]# cat /home/zpf/file.txt
  75. HBaseTestCase.java
  76.  
  77. [root@s2 ~]# cat /home/zpf/file.txt |ls
  78. .pcap anaconda-ks.cfg Documents dpi_log err.txt ftp.pcap Music pcap Pictures t1 tcpreplay-3.4. telnet_only.pcap Templates wcp_55_pcap_1452502359.pcap
  79. a Desktop Downloads eclipse ftp_big.pcap initial-setup-ks.cfg nohup.out perl5 Public t60 tcpreplay-3.4..tar.gz telnet.pcap Videos workspace
  1. [root@s2 ~]# grep -n "root" < /etc/passwd
  2. :root:x:::root:/root:/bin/bash
  3. :operator:x:::operator:/root:/sbin/nologin
  4.  
  5. [root@s2 ~]# (sed -n "1,10p" | grep -n "var") < /etc/passwd
  6. :adm:x:::adm:/var/adm:/sbin/nologin
  7. :lp:x:::lp:/var/spool/lpd:/sbin/nologin
  8. :mail:x:::mail:/var/spool/mail:/sbin/nologin
  1. #

grep.需要将前面用"()"

  1. 运算符括起来。在单括号内的命令,可以把它们看作一个象一个命令样。#如果不加括号test.sh就是grep 的输入了,如下
  1. [root@s2 ~]# sed -n "1,10p" | grep -n "var" < /etc/passwd
  2. :adm:x:::adm:/var/adm:/sbin/nologin
  3. :lp:x:::lp:/var/spool/lpd:/sbin/nologin
  4. :mail:x:::mail:/var/spool/mail:/sbin/nologin
  5. :ftp:x:::FTP User:/var/ftp:/sbin/nologin
  6. :libstoragemgmt:x:::daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
  7. :avahi:x:::Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
  8. :avahi-autoipd:x:::Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
  9. :rpc:x:::Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
  10. :chrony:x::::/var/lib/chrony:/sbin/nologin
  11. :pegasus:x:::tog-pegasus OpenPegasus WBEM/CIM services:/var/lib/Pegasus:/sbin/nologin
  12. :colord:x:::User for colord:/var/lib/colord:/sbin/nologin
  13. :rpcuser:x:::RPC Service User:/var/lib/nfs:/sbin/nologin
  14. :nfsnobody:x:::Anonymous NFS User:/var/lib/nfs:/sbin/nologin
  15. :pulse:x:::PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
  16. :gdm:x::::/var/lib/gdm:/sbin/nologin
  17. :pcp:x:::Performance Co-Pilot:/var/lib/pcp:/sbin/nologin
  18. :sshd:x:::Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
  19. :postfix:x::::/var/spool/postfix:/sbin/nologin
  20. :oprofile:x:::Special user account to be used by OProfile:/var/lib/oprofile:/sbin/nologin
  21.  
  22. [root@s2 ~]# sed -n "1,10p" </etc/passwd | grep -n "var" < /etc/passwd
  23. :adm:x:::adm:/var/adm:/sbin/nologin
  24. :lp:x:::lp:/var/spool/lpd:/sbin/nologin
  25. :mail:x:::mail:/var/spool/mail:/sbin/nologin
  26. :ftp:x:::FTP User:/var/ftp:/sbin/nologin
  27. :libstoragemgmt:x:::daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
  28. :avahi:x:::Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
  29. :avahi-autoipd:x:::Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
  30. :rpc:x:::Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
  31. :chrony:x::::/var/lib/chrony:/sbin/nologin
  32. :pegasus:x:::tog-pegasus OpenPegasus WBEM/CIM services:/var/lib/Pegasus:/sbin/nologin
  33. :colord:x:::User for colord:/var/lib/colord:/sbin/nologin
  34. :rpcuser:x:::RPC Service User:/var/lib/nfs:/sbin/nologin
  35. :nfsnobody:x:::Anonymous NFS User:/var/lib/nfs:/sbin/nologin
  36. :pulse:x:::PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
  37. :gdm:x::::/var/lib/gdm:/sbin/nologin
  38. :pcp:x:::Performance Co-Pilot:/var/lib/pcp:/sbin/nologin
  39. :sshd:x:::Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
  40. :postfix:x::::/var/spool/postfix:/sbin/nologin
  41. :oprofile:x:::Special user account to be used by OProfile:/var/lib/oprofile:/sbin/nologin
  42.  
  43. ##重定向运算符,在shell命令解析前,首先检查的(一个命令,执行前一定检查好它的输入,输出,也就是0,

, 设备是否准备好),所以优先级会最高。如下示例,"<"

  1. 运算符会优先,管道还没有发送数据前,grep绑定了testsh.sh输入,这样sed命令输出就被抛弃了。这里一定要小心使用
  2.  
  3. [root@s2 ~]# sed -n "1,10p" </etc/passwd | grep -n "var" < /etc/passwd
  4. :adm:x:::adm:/var/adm:/sbin/nologin
  5. :lp:x:::lp:/var/spool/lpd:/sbin/nologin
  6. :mail:x:::mail:/var/spool/mail:/sbin/nologin
  7. :ftp:x:::FTP User:/var/ftp:/sbin/nologin
  8. :libstoragemgmt:x:::daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
  9. :avahi:x:::Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
  10. :avahi-autoipd:x:::Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
  11. :rpc:x:::Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
  12. :chrony:x::::/var/lib/chrony:/sbin/nologin
  13. :pegasus:x:::tog-pegasus OpenPegasus WBEM/CIM services:/var/lib/Pegasus:/sbin/nologin
  14. :colord:x:::User for colord:/var/lib/colord:/sbin/nologin
  15. :rpcuser:x:::RPC Service User:/var/lib/nfs:/sbin/nologin
  16. :nfsnobody:x:::Anonymous NFS User:/var/lib/nfs:/sbin/nologin
  17. :pulse:x:::PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
  18. :gdm:x::::/var/lib/gdm:/sbin/nologin
  19. :pcp:x:::Performance Co-Pilot:/var/lib/pcp:/sbin/nologin
  20. :sshd:x:::Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
  21. :postfix:x::::/var/spool/postfix:/sbin/nologin
  22. :oprofile:x:::Special user account to be used by OProfile:/var/lib/oprofile:/sbin/nologin

管道和重定向的区别

1、左边的命令应该有标准输出 | 右边的命令应该接受标准输入
   左边的命令应该有标准输出 > 右边只能是文件

左边的命令应该需要标准输入 < 右边只能是文件

2、管道触发两个子进程执行"|"两边的程序;而定向是在一个进程内执行。

重定向

重定向和文件描述符有关。

      linux文件描述符:可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以实现文件的读写操作。 用户可以自定义文件描述符范围是:3-num,这个最大数字,跟用户的:ulimit –n 定义数字有关系,不能超过最大值。linux启动后,会默认打开3个文件描述符,分别是:标准输入standard input 0,正确输出standard output 1,错误输出:error output 2。以后打开文件后。新增文件绑定描述符 可以依次增加。 一条shell命令执行,都会继承父进程的文件描述符。因此,所有运行的shell命令,都会有默认3个文件描述符。

文件输入输出由追踪为一个给定的进程所有打开文件的整数句柄来完成。这些数字值就是文件描述符。最为人们所知的文件米描述符是 stdin, stdoutstderr,文件描述符的数字分别是0,1和2。这些数字和各自的设备是保留的。一个命令执行前,先会准备好所有输入输出,默认分别绑定(stdin,stdout,stderr),如果这个时候出现错误,命令将终止,不会执行。命令解析过程。

如下图:一个命令执行了:先有一个输入:输入可以从键盘,也可以从文件得到命令执行完成:成功了,会把成功结果输出到屏幕:standard output默认是屏幕。命令执行有错误:会把错误也输出到屏幕上面:standard error默认也是指的屏幕。

根据应用的场景,改变1,2的默认输出,这就是重定向

linux上的标准输入、输出、错误,如下:,&表示全部

  1. [root@s2 ~]# ll /dev/std*
  2. lrwxrwxrwx root root May : /dev/stderr -> /proc/self/fd/
  3. lrwxrwxrwx root root May : /dev/stdin -> /proc/self/fd/
  4. lrwxrwxrwx root root May : /dev/stdout -> /proc/self/fd/

输出重定向

注意:

1、shell遇到”>”操作符,会判断右边文件是否存在,如果存在就先删除,并且创建新文件。不存在直接创建。 无论左边命令执行是否成功。右边文件都会变为空。

2、“>>”操作符,判断右边文件,如果不存在,先创建。以添加方式打开文件,会分配一个文件描述符[不特别指定,默认为1,2]然后,与左边的标准输出(1)或错误输出(2) 绑定。

3、当命令:执行完,绑定文件的描述符也自动失效。0,1,2又会空闲。

4、一条命令启动,命令的输入,正确输出,错误输出,默认分别绑定0,1,2文件描述符。

5、一条命令在执行前,先会检查输出是否正确,如果输出设备错误,将不会进行命令执行

几个示例如下:

  1. [root@s2 zpf]# cat file.txt abc.txt > /dev/null | tee all.txt |grep java
  2. HBaseTestCase.java
  3. [root@s2 zpf]# cat all.txt
  4. HBaseTestCase.java
  5.  
  6. #通过管道实现将结果存入文件,还需要借助命令tee,它会把管道过来标准输入写入文件test.txt ,然后将标准输入复制到标准输出(stdout),所以重定向到/dev/null 不显示输出
  7. #">"输出重定向,往往在命令最右边,接收左边命令的,输出结果,重定向到指定文件。也可以用到命令中间。
  8.  
  9. [root@s2 zpf]# cat file.txt abc.txt &> /dev/null | tee all.txt |grep java
  1. [root@s2 zpf]#
  2. #这次打印结果是空,&代表正确与错误输出 都输入给err.txt,通过管道继续往下面传递数据为空,所以没有什么显示的
  3.  
  4. #同样">"输出重定向符,优先级也是先解析,当一个命令有这个字符,它就会与左边命令标准输出绑定。准备好了这些,就等待命令执行输出数据,它就开始接收
  1. [root@s2 zpf]# ll file.txt abc.txt >ok.txt >err.txt
  2. [root@s2 zpf]# cat ok.txt
  3. -rw-r--r-- root root May : file.txt
  4. [root@s2 zpf]# cat err.txt
  5. ls: cannot access abc.txt: No such file or directory
  6.  
  7. [root@s2 zpf]# ll file.txt abc.txt >>ok.txt >>err.txt
  8. [root@s2 zpf]#
  9. [root@s2 zpf]# cat ok.txt
  10. -rw-r--r-- root root May : file.txt
  11. -rw-r--r-- root root May : file.txt
  12. [root@s2 zpf]# cat err.txt
  13. ls: cannot access abc.txt: No such file or directory
  14. ls: cannot access abc.txt: No such file or directory
  15.  
  16. #如下,标准错误输出到null,正确输出先写到ok.txt ,.然后再标准输出
  17. [root@s2 zpf]# ll file.txt abc.txt >/dev/null |tee ok.txt
  18. -rw-r--r-- root root May : file.txt
  19. [root@s2 zpf]# cat ok.txt
  20. -rw-r--r-- root root May : file.txt
  21.  
  22. #关闭所有输出,效果等同于绑定到null
  23. #&[n] 代表是已经存在的文件描述符,& 代表输出 &2代表错误输出 &-代表关闭与它绑定的描述符
  24.  
  25. [root@s2 zpf]# ll file.txt abc.txt >&- >&-
  26. [root@s2 zpf]#
  27. [root@s2 zpf]# ll file.txt abc.txt >/dev/null >/dev/null
  28. [root@s2 zpf]#

输入重定向

格式:command-line [n] <file或文件描述符&设备。命令默认从键盘获得的输入,改成从文件,或者其它打开文件以及设备输入。执行这个命令,将标准输入0,与文件或设备绑定。将由它进行输入。

  1. [root@s2 zpf]# cat >out.txt
  2. adsfafsd
  3.  
  4. [root@s2 zpf]# cat out.txt
  5. adsfafsd
  6.  
  7. [root@s2 zpf]# cat >out.txt <file.txt
  8. [root@s2 zpf]# cat out.txt
  9. HBaseTestCase.java
  10.  
  11. 如下,#<< 这个连续两个小符号, 他代表的是『结束的输入字符』的意思。这样当空行输入eof字符,输入自动结束,不用ctrl+D
  12.  
  13. [root@s2 zpf]# cat >out.txt <<eof
  14. >
  15. >
  16. >
  17. >
  18. >
  19. > eof
  20. [root@s2 zpf]# cat out.txt

exec绑定重定向

几点说明:

(1)I/O重定向通常与 FD有关,shell的FD通常为10个,即 0~9;常用:0(stdin,标准输入)、1(stdout,标准输出)、2(stderr,标准错误输出),默认与keyboard、monitor、monitor有关。

(2)用 >  来改变送出的数据信道(stdout, stderr),使之输出到指定的档案

(3)在IO重定向 中,stdout 与 stderr 的管道会先准备好,才会从 stdin 读进资料;

(4)tee 命令是在不影响原本 I/O 的情况下,将 stdout 复制一份到档案去。

(5)bash(ksh)执行命令的过程:分析命令-变量求值-命令替代(``和$( ))-重定向-通配符展开-确定路径-执行命令;

(6)( ) 将 command group 置于 sub-shell 去执行,也称 nested sub-shell,它有一点重要的特性是:继承父shell的Standard input, output, and error plus any other open file descriptors。

(7)exec 命令:常用来替当前 shell 并重新启动一个 shell,换句话说,并没有启动子 shell。使用这一命令时任何现有环境都将会被清除。exec 在对文件描述符进行操作的时候,也只有在这时,exec 不会

覆盖你当前的 shell 环境。

(8) n&- 表示将 n 号输出关闭

(9)  2>&1 表示:运行一个命令并把它的标准输出和输出合并。2>&1 也就是 FD2=FD1 ,这里并不是说FD2 的值 等于FD1的值,因为 > 是改变送出的数据信道,也就是说把 FD2 的 “数据输出通道” 改

为 FD1 的 “数据输出通道”。如果仅仅这样,这个改变好像没有什么作用,因为 FD2 的默认输出和 FD1的默认输出本来都是 monitor,一样的。

(10) stdin, stdout, stderr 进行了重定向或关闭, 但没有保存原来的 FD(如果要保存, exec 9>&1,将fd1保存在fd9中), 恢复到 default 状态的方式:

如果关闭了stdin,因为会导致退出,那肯定不能恢复。

如关闭 stdout和stderr其中之一,可恢复,因他们默认均往monitor(但不知会否有其他影响)。如恢复重定向或关闭的 stdout: exec 1>&2 ,恢复重定向或关闭的stderr:exec 2>&1。

如果stdout和stderr全部都关闭了,又没有保存原来的FD,可以用:exec 1>/dev/tty 恢复。

(11) cmd >a 2>&1 比 cmd >a 2>a更高效。

cmd >a 2>a :stdout和stderr都直接送往文件 a ,a文件会被打开两遍,由此导致stdout和stderr互相覆盖。使用了两个互相竞争使用文件a的管道。

cmd >a 2>&1 :stdout直接送往文件a ,stderr是继承了FD1的管道之后,再被送往文件a 。a文件只被打开一遍,就是FD1将其打开。

(12)  exec 1>outfilename # 打开文件outfilename作为stdout    。exec 2>errfilename # 打开文件 errfilename作为 stderr 。

下面的例子,将stdout(fd1)由屏幕重定向到文件,再恢复到屏幕。

  1. #将fd9和stdout的fd1绑定,也即保存fd1的句柄资源信息到fd9
  2. [root@s2 ~]# exec >&
  3.  
  4. [root@s2 ~]# ll /proc/self/fd
  5. total
  6. lrwx------ root root May : -> /dev/pts/
  7. lrwx------ root root May : -> /dev/pts/
  8. lrwx------ root root May : -> /dev/pts/
  9. lr-x------ root root May : -> /proc//fd
  10. lrwx------ root root May : -> /dev/pts/
  11. [root@s2 ~]# touch /home/stdout
  12. [root@s2 ~]#
  13.  
  14. #将fd1的标准输出重定向到 /home/stdout文件
  15. [root@s2 ~]# exec >/home/stdout
  16.  
  17. # ls的输出在屏幕上没有任何信息,全部在 /home/stdout中
  18. [root@s2 ~]# ls
  19.  
  20. #恢复 fd1句柄资源的原来信息,即恢复默认的stdout输出
  21. [root@s2 ~]# exec >&
  22. #恢复后,可以看到输出到屏幕
  23. [root@s2 ~]# ls
  24. .pcap anaconda-ks.cfg Documents dpi_log err.txt ftp.pcap Music pcap Pictures t1 tcpreplay-3.4. telnet_only.pcap Templates wcp_55_pcap_1452502359.pcap
  25. a Desktop Downloads eclipse ftp_big.pcap initial-setup-ks.cfg nohup.out perl5 Public t60 tcpreplay-3.4..tar.gz telnet.pcap Videos workspace
  26.  
  27. # fd9任务完成,可以删除它啦
  28. [root@s2 ~]# exec >&-

bash中的管道和重定向的更多相关文章

  1. SHELL脚本--管道和重定向基础

    bash&shell系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html 1.8.1 匿名管道"|" 管道符号意如其 ...

  2. linux文件管理之管道与重定向

    ============================================================== 内容提要: 输入输出重定向.管道: 重定向的作用: 文件描述符 0 1 2 ...

  3. Linux中shell基础、重定向、管道符、环境变量

    1.什么是shell Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口(命令解释器).它接收用户输入的命令并把它送入内核去执行.起着协调用户与系统的一致性和在用户与系统之间进行交互的 ...

  4. bash的管道符与重定向

    管道符"|"可以用来将前面的程序的标准输出stdout(=1)重定向到后一个程序的stdin(=0),但是忽略了stderr. 在bash中使用2>&1 可以表示将s ...

  5. Bash中的任务(job)管理

    本来不准备写这篇博客的,因为任务管理(job管理)非常非常常用,以至于觉得根本没有必要去写这样一个东西.但想了下,还是记录一下吧,也许有人会用到呢. 不知你是否碰到过这样的情况,当你兴致勃勃的打开VI ...

  6. Linux bash 中,如何将正常信息和错误信息输出到文件

    问题描述: $ command 2>> error $ command 1>> output 是否有方法,在bash同一行,实现输出stderr到error文件,输出stdou ...

  7. RHEL7管道与重定向

    文件描述符 可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以实现文件的读写操作 用户可以自定义文件描述符范围是:3-num,这个最大数字,跟 ...

  8. Linux基本配置和管理 2 ---- Linux多命令协作----管道及重定向

    1 管道和重定向 1 在Linux中大多数命令都很简单,很少出现复杂的命令,每个命令只是实现一个简单的功能,我们可以通过组合不同的命令来实现复杂的功能 2 在Linux中几乎所有的命令返回的数据都是纯 ...

  9. Linux入门基础 #9:管道及重定向

    本文出自   http://blog.csdn.net/shuangde800 ------------------------------------------------------------ ...

随机推荐

  1. 终于解决了Linux下运行OCCI程序一直报Error while trying to retrieve text for error ORA-01804错误

    终于解决了Linux下运行OCCI程序一直报Error while trying to retrieve text for error ORA-01804错误 http://blog.csdn.net ...

  2. 零基础学php的自学

    我们都知道,php语言作为一种专业建站的语言,没有华而不实,而是经受住了时间考验,成为一种值得学习的语言.现在国内众多的php学校也说明,php语言在当今有着广泛的市场需求. 那么零基础的同学如何学习 ...

  3. dev....把pivotgridview和chart一起导出

    首先~: 命名空间: using DevExpress.XtraPrinting;using DevExpress.XtraCharts.Native;using DevExpress.XtraPri ...

  4. 给mongodb设置密码权限

    昨天装了个mongodb数据库用于测试用,装好后没有密码,现在就讲讲怎么设置密码 1.首先进入C:\mongodb\bin下面运行mongod.exe启动数据库. 2.在相同目录下启动mongo.ex ...

  5. OpenCV利用矩阵实现图像旋转

    利用OpenCV的矩阵操作实现图像的逆时针旋转90度操作 代码 Mat src = imread("C:\\Users\\fenggl\\Desktop\\测试.jpg",MREA ...

  6. ES6 module语法加载 import export

    export:暴露,就是把接口暴露出去 import:引入,跟字面意思一样,引入接口 export {} export function demo(){} export var demo1; 这上面的 ...

  7. poj 1962(并查集+带权更新)

    Corporative Network Time Limit: 3000MS   Memory Limit: 30000K Total Submissions: 3664   Accepted: 13 ...

  8. 微信小程序radio组件 - 如何改变默认样式大小?

    今天在写小程序的时候用到radio组件,但是很懊恼并未提供修改radio组件大小属性,第一感觉准备用css width , height 改变radio的大小,但是怎么搞也无法改变. 但是又不愿意搞个 ...

  9. node修改全局环境路径 与 全局后出现sh:exe command not found

    修改全局环境路径 当安装nodeJs时候需要修改全局环境的指向,先看看npm config get prefix  全局环境在哪里 然后执行更换命令,一个是主文件一个是缓存文件 npm config ...

  10. CentOS7配置redis主从复制

    规划 ip port role 192.168.1.31 6379 master 192.168.1.32 6379 slave 192.168.1.33 6379 slave 0.关闭防火墙 sys ...