bash中的管道和重定向
管道
管道命令操作符是:”|”,它仅能处理经由前面一个指令传出的正确输出信息,也就是 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. 一般如果是命令间传递参数,还是管道的好,如果处理输出结果需要重定向到文件,还是用重定向输出比较好。
[root@s2 ~]# cat /etc/passwd |grep -n "var"
:adm:x:::adm:/var/adm:/sbin/nologin
:lp:x:::lp:/var/spool/lpd:/sbin/nologin
:mail:x:::mail:/var/spool/mail:/sbin/nologin
:ftp:x:::FTP User:/var/ftp:/sbin/nologin
:libstoragemgmt:x:::daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
:avahi:x:::Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
:avahi-autoipd:x:::Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
:rpc:x:::Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
:chrony:x::::/var/lib/chrony:/sbin/nologin
:pegasus:x:::tog-pegasus OpenPegasus WBEM/CIM services:/var/lib/Pegasus:/sbin/nologin
:colord:x:::User for colord:/var/lib/colord:/sbin/nologin
:rpcuser:x:::RPC Service User:/var/lib/nfs:/sbin/nologin
:nfsnobody:x:::Anonymous NFS User:/var/lib/nfs:/sbin/nologin
:pulse:x:::PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
:gdm:x::::/var/lib/gdm:/sbin/nologin
:pcp:x:::Performance Co-Pilot:/var/lib/pcp:/sbin/nologin
:sshd:x:::Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
:postfix:x::::/var/spool/postfix:/sbin/nologin
:oprofile:x:::Special user account to be used by OProfile:/var/lib/oprofile:/sbin/nologin [root@s2 ~]# cat /etc/passwd /etc/abc |grep -n "var" cat: /etc/abc: No such file or directory
#不存在 abc,错误输出也到屏幕 :adm:x:::adm:/var/adm:/sbin/nologin
:lp:x:::lp:/var/spool/lpd:/sbin/nologin
:mail:x:::mail:/var/spool/mail:/sbin/nologin
:ftp:x:::FTP User:/var/ftp:/sbin/nologin
:libstoragemgmt:x:::daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
:avahi:x:::Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
:avahi-autoipd:x:::Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
:rpc:x:::Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
:chrony:x::::/var/lib/chrony:/sbin/nologin
:pegasus:x:::tog-pegasus OpenPegasus WBEM/CIM services:/var/lib/Pegasus:/sbin/nologin
:colord:x:::User for colord:/var/lib/colord:/sbin/nologin
:rpcuser:x:::RPC Service User:/var/lib/nfs:/sbin/nologin
:nfsnobody:x:::Anonymous NFS User:/var/lib/nfs:/sbin/nologin
:pulse:x:::PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
:gdm:x::::/var/lib/gdm:/sbin/nologin
:pcp:x:::Performance Co-Pilot:/var/lib/pcp:/sbin/nologin
:sshd:x:::Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
:postfix:x::::/var/spool/postfix:/sbin/nologin
:oprofile:x:::Special user account to be used by OProfile:/var/lib/oprofile:/sbin/nologin [root@s2 ~]# cat /etc/passwd /etc/abc > err.txt |grep -n "var"
cat: /etc/abc: No such file or directory
cat: : No such file or directory
[root@s2 ~]# cat /etc/passwd /etc/abc > err.txt |grep -n "var"
:adm:x:::adm:/var/adm:/sbin/nologin
:lp:x:::lp:/var/spool/lpd:/sbin/nologin
:mail:x:::mail:/var/spool/mail:/sbin/nologin
:ftp:x:::FTP User:/var/ftp:/sbin/nologin
:libstoragemgmt:x:::daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
:avahi:x:::Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
:avahi-autoipd:x:::Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
:rpc:x:::Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
:chrony:x::::/var/lib/chrony:/sbin/nologin
:pegasus:x:::tog-pegasus OpenPegasus WBEM/CIM services:/var/lib/Pegasus:/sbin/nologin
:colord:x:::User for colord:/var/lib/colord:/sbin/nologin
:rpcuser:x:::RPC Service User:/var/lib/nfs:/sbin/nologin
:nfsnobody:x:::Anonymous NFS User:/var/lib/nfs:/sbin/nologin
:pulse:x:::PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
:gdm:x::::/var/lib/gdm:/sbin/nologin
:pcp:x:::Performance Co-Pilot:/var/lib/pcp:/sbin/nologin
:sshd:x:::Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
:postfix:x::::/var/spool/postfix:/sbin/nologin
:oprofile:x:::Special user account to be used by OProfile:/var/lib/oprofile:/sbin/nologin
[root@s2 ~]# cat err.txt
cat: /etc/abc: No such file or directory # ls命令不支持标准输入,所有未例会管道的输出文件名HBaseTestCase.java
[root@s2 ~]# cat /home/zpf/file.txt
HBaseTestCase.java [root@s2 ~]# cat /home/zpf/file.txt |ls
.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
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
[root@s2 ~]# grep -n "root" < /etc/passwd
:root:x:::root:/root:/bin/bash
:operator:x:::operator:/root:/sbin/nologin [root@s2 ~]# (sed -n "1,10p" | grep -n "var") < /etc/passwd
:adm:x:::adm:/var/adm:/sbin/nologin
:lp:x:::lp:/var/spool/lpd:/sbin/nologin
:mail:x:::mail:/var/spool/mail:/sbin/nologin
#
grep.需要将前面用"()"
运算符括起来。在单括号内的命令,可以把它们看作一个象一个命令样。#如果不加括号test.sh就是grep 的输入了,如下
[root@s2 ~]# sed -n "1,10p" | grep -n "var" < /etc/passwd
:adm:x:::adm:/var/adm:/sbin/nologin
:lp:x:::lp:/var/spool/lpd:/sbin/nologin
:mail:x:::mail:/var/spool/mail:/sbin/nologin
:ftp:x:::FTP User:/var/ftp:/sbin/nologin
:libstoragemgmt:x:::daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
:avahi:x:::Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
:avahi-autoipd:x:::Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
:rpc:x:::Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
:chrony:x::::/var/lib/chrony:/sbin/nologin
:pegasus:x:::tog-pegasus OpenPegasus WBEM/CIM services:/var/lib/Pegasus:/sbin/nologin
:colord:x:::User for colord:/var/lib/colord:/sbin/nologin
:rpcuser:x:::RPC Service User:/var/lib/nfs:/sbin/nologin
:nfsnobody:x:::Anonymous NFS User:/var/lib/nfs:/sbin/nologin
:pulse:x:::PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
:gdm:x::::/var/lib/gdm:/sbin/nologin
:pcp:x:::Performance Co-Pilot:/var/lib/pcp:/sbin/nologin
:sshd:x:::Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
:postfix:x::::/var/spool/postfix:/sbin/nologin
:oprofile:x:::Special user account to be used by OProfile:/var/lib/oprofile:/sbin/nologin [root@s2 ~]# sed -n "1,10p" </etc/passwd | grep -n "var" < /etc/passwd
:adm:x:::adm:/var/adm:/sbin/nologin
:lp:x:::lp:/var/spool/lpd:/sbin/nologin
:mail:x:::mail:/var/spool/mail:/sbin/nologin
:ftp:x:::FTP User:/var/ftp:/sbin/nologin
:libstoragemgmt:x:::daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
:avahi:x:::Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
:avahi-autoipd:x:::Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
:rpc:x:::Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
:chrony:x::::/var/lib/chrony:/sbin/nologin
:pegasus:x:::tog-pegasus OpenPegasus WBEM/CIM services:/var/lib/Pegasus:/sbin/nologin
:colord:x:::User for colord:/var/lib/colord:/sbin/nologin
:rpcuser:x:::RPC Service User:/var/lib/nfs:/sbin/nologin
:nfsnobody:x:::Anonymous NFS User:/var/lib/nfs:/sbin/nologin
:pulse:x:::PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
:gdm:x::::/var/lib/gdm:/sbin/nologin
:pcp:x:::Performance Co-Pilot:/var/lib/pcp:/sbin/nologin
:sshd:x:::Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
:postfix:x::::/var/spool/postfix:/sbin/nologin
:oprofile:x:::Special user account to be used by OProfile:/var/lib/oprofile:/sbin/nologin ##重定向运算符,在shell命令解析前,首先检查的(一个命令,执行前一定检查好它的输入,输出,也就是0,
, 设备是否准备好),所以优先级会最高。如下示例,"<"
运算符会优先,管道还没有发送数据前,grep绑定了testsh.sh输入,这样sed命令输出就被抛弃了。这里一定要小心使用 [root@s2 ~]# sed -n "1,10p" </etc/passwd | grep -n "var" < /etc/passwd
:adm:x:::adm:/var/adm:/sbin/nologin
:lp:x:::lp:/var/spool/lpd:/sbin/nologin
:mail:x:::mail:/var/spool/mail:/sbin/nologin
:ftp:x:::FTP User:/var/ftp:/sbin/nologin
:libstoragemgmt:x:::daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
:avahi:x:::Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
:avahi-autoipd:x:::Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
:rpc:x:::Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
:chrony:x::::/var/lib/chrony:/sbin/nologin
:pegasus:x:::tog-pegasus OpenPegasus WBEM/CIM services:/var/lib/Pegasus:/sbin/nologin
:colord:x:::User for colord:/var/lib/colord:/sbin/nologin
:rpcuser:x:::RPC Service User:/var/lib/nfs:/sbin/nologin
:nfsnobody:x:::Anonymous NFS User:/var/lib/nfs:/sbin/nologin
:pulse:x:::PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
:gdm:x::::/var/lib/gdm:/sbin/nologin
:pcp:x:::Performance Co-Pilot:/var/lib/pcp:/sbin/nologin
:sshd:x:::Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
:postfix:x::::/var/spool/postfix:/sbin/nologin
: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, stdout 和 stderr,文件描述符的数字分别是0,1和2。这些数字和各自的设备是保留的。一个命令执行前,先会准备好所有输入输出,默认分别绑定(stdin,stdout,stderr),如果这个时候出现错误,命令将终止,不会执行。命令解析过程。
如下图:一个命令执行了:先有一个输入:输入可以从键盘,也可以从文件得到命令执行完成:成功了,会把成功结果输出到屏幕:standard output默认是屏幕。命令执行有错误:会把错误也输出到屏幕上面:standard error默认也是指的屏幕。
根据应用的场景,改变1,2的默认输出,这就是重定向。
linux上的标准输入、输出、错误,如下:,&表示全部
[root@s2 ~]# ll /dev/std*
lrwxrwxrwx root root May : /dev/stderr -> /proc/self/fd/
lrwxrwxrwx root root May : /dev/stdin -> /proc/self/fd/
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、一条命令在执行前,先会检查输出是否正确,如果输出设备错误,将不会进行命令执行
几个示例如下:
[root@s2 zpf]# cat file.txt abc.txt > /dev/null | tee all.txt |grep java
HBaseTestCase.java
[root@s2 zpf]# cat all.txt
HBaseTestCase.java #通过管道实现将结果存入文件,还需要借助命令tee,它会把管道过来标准输入写入文件test.txt ,然后将标准输入复制到标准输出(stdout),所以重定向到/dev/null 不显示输出
#">"输出重定向,往往在命令最右边,接收左边命令的,输出结果,重定向到指定文件。也可以用到命令中间。 [root@s2 zpf]# cat file.txt abc.txt &> /dev/null | tee all.txt |grep java
[root@s2 zpf]#
#这次打印结果是空,&代表正确与错误输出 都输入给err.txt,通过管道继续往下面传递数据为空,所以没有什么显示的 #同样">"输出重定向符,优先级也是先解析,当一个命令有这个字符,它就会与左边命令标准输出绑定。准备好了这些,就等待命令执行输出数据,它就开始接收
[root@s2 zpf]# ll file.txt abc.txt >ok.txt >err.txt
[root@s2 zpf]# cat ok.txt
-rw-r--r-- root root May : file.txt
[root@s2 zpf]# cat err.txt
ls: cannot access abc.txt: No such file or directory [root@s2 zpf]# ll file.txt abc.txt >>ok.txt >>err.txt
[root@s2 zpf]#
[root@s2 zpf]# cat ok.txt
-rw-r--r-- root root May : file.txt
-rw-r--r-- root root May : file.txt
[root@s2 zpf]# cat err.txt
ls: cannot access abc.txt: No such file or directory
ls: cannot access abc.txt: No such file or directory #如下,标准错误输出到null,正确输出先写到ok.txt ,.然后再标准输出
[root@s2 zpf]# ll file.txt abc.txt >/dev/null |tee ok.txt
-rw-r--r-- root root May : file.txt
[root@s2 zpf]# cat ok.txt
-rw-r--r-- root root May : file.txt #关闭所有输出,效果等同于绑定到null
#&[n] 代表是已经存在的文件描述符,& 代表输出 &2代表错误输出 &-代表关闭与它绑定的描述符 [root@s2 zpf]# ll file.txt abc.txt >&- >&-
[root@s2 zpf]#
[root@s2 zpf]# ll file.txt abc.txt >/dev/null >/dev/null
[root@s2 zpf]#
输入重定向
格式:command-line [n] <file或文件描述符&设备。命令默认从键盘获得的输入,改成从文件,或者其它打开文件以及设备输入。执行这个命令,将标准输入0,与文件或设备绑定。将由它进行输入。
[root@s2 zpf]# cat >out.txt
adsfafsd [root@s2 zpf]# cat out.txt
adsfafsd [root@s2 zpf]# cat >out.txt <file.txt
[root@s2 zpf]# cat out.txt
HBaseTestCase.java 如下,#<< 这个连续两个小符号, 他代表的是『结束的输入字符』的意思。这样当空行输入eof字符,输入自动结束,不用ctrl+D [root@s2 zpf]# cat >out.txt <<eof
>
>
>
>
>
> eof
[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)由屏幕重定向到文件,再恢复到屏幕。
#将fd9和stdout的fd1绑定,也即保存fd1的句柄资源信息到fd9
[root@s2 ~]# exec >& [root@s2 ~]# ll /proc/self/fd
total
lrwx------ root root May : -> /dev/pts/
lrwx------ root root May : -> /dev/pts/
lrwx------ root root May : -> /dev/pts/
lr-x------ root root May : -> /proc//fd
lrwx------ root root May : -> /dev/pts/
[root@s2 ~]# touch /home/stdout
[root@s2 ~]# #将fd1的标准输出重定向到 /home/stdout文件
[root@s2 ~]# exec >/home/stdout # ls的输出在屏幕上没有任何信息,全部在 /home/stdout中
[root@s2 ~]# ls #恢复 fd1句柄资源的原来信息,即恢复默认的stdout输出
[root@s2 ~]# exec >&
#恢复后,可以看到输出到屏幕
[root@s2 ~]# ls
.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
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 # fd9任务完成,可以删除它啦
[root@s2 ~]# exec >&-
bash中的管道和重定向的更多相关文章
- SHELL脚本--管道和重定向基础
bash&shell系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html 1.8.1 匿名管道"|" 管道符号意如其 ...
- linux文件管理之管道与重定向
============================================================== 内容提要: 输入输出重定向.管道: 重定向的作用: 文件描述符 0 1 2 ...
- Linux中shell基础、重定向、管道符、环境变量
1.什么是shell Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口(命令解释器).它接收用户输入的命令并把它送入内核去执行.起着协调用户与系统的一致性和在用户与系统之间进行交互的 ...
- bash的管道符与重定向
管道符"|"可以用来将前面的程序的标准输出stdout(=1)重定向到后一个程序的stdin(=0),但是忽略了stderr. 在bash中使用2>&1 可以表示将s ...
- Bash中的任务(job)管理
本来不准备写这篇博客的,因为任务管理(job管理)非常非常常用,以至于觉得根本没有必要去写这样一个东西.但想了下,还是记录一下吧,也许有人会用到呢. 不知你是否碰到过这样的情况,当你兴致勃勃的打开VI ...
- Linux bash 中,如何将正常信息和错误信息输出到文件
问题描述: $ command 2>> error $ command 1>> output 是否有方法,在bash同一行,实现输出stderr到error文件,输出stdou ...
- RHEL7管道与重定向
文件描述符 可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以实现文件的读写操作 用户可以自定义文件描述符范围是:3-num,这个最大数字,跟 ...
- Linux基本配置和管理 2 ---- Linux多命令协作----管道及重定向
1 管道和重定向 1 在Linux中大多数命令都很简单,很少出现复杂的命令,每个命令只是实现一个简单的功能,我们可以通过组合不同的命令来实现复杂的功能 2 在Linux中几乎所有的命令返回的数据都是纯 ...
- Linux入门基础 #9:管道及重定向
本文出自 http://blog.csdn.net/shuangde800 ------------------------------------------------------------ ...
随机推荐
- 64_j2
jetty-websocket-server-9.4.3-3.v20170317.fc26.n..> 14-Apr-2017 12:03 62034 jetty-websocket-servle ...
- sicily 1001. Fibonacci 2
1001. Fibonacci 2 Description In the Fibonacci integer sequence, F0 = 0, F1 = 1, and Fn = Fn-1 + F ...
- 【bzoj4562】HAOI2016食物链
记忆化搜索水过去了…… QwQ #include<bits/stdc++.h> #define N 400010 typedef long long ll; using namespace ...
- MyEclipse部署项目报"Add Deployment". Invalid Subscription Level - Discontinuing this MyEclipse
"Add Deployment". Invalid Subscription Level - Discontinuing this MyEclipse 猜测应该是MyEclipse ...
- 【Android开发日记】之基础篇(二)——Android的动画效果
什么是动画,动画的本质是通过连续不断地显示若干图像来产生“动”起来的效果.比如说一个移动的动画,就是在一定的时间段内,以恰当的速率(起码要12帧/秒以上,才会让人产生动起来的错觉)每隔若干 ...
- php的设计模式
1.单一职责原则 单一职责原则(Single Responsibility Principle) 含义:1.避免相同的职责分散到不同的类中,2.避免一个类承担太多的职责: srp的好处: 减少类之间的 ...
- java获取项目路径,url路径
我的web项目名iamgeModel. 工作空间在D盘 先获取url相关: 需要是HttpServletRequest request; 获取IP: request.getServerName() / ...
- Django Ajax学习二之文件上传
基于Django实现文件上传 1. url路由配置 路径:C:\Users\supery\Desktop\day82\demo_ajax\demo_ajax\urls.py from django.c ...
- redis之(三)redis的数据类型
[一]字符串类型(基本数据类型) --->字符串类型是redis的最基本的数据类型 --->能存储任何形式的字符串,(用户邮箱,json化的对象,一张图片) --->一个字符串类型的 ...
- AC日记——[POI2008]BLO-Blockade 洛谷 [POI2008]BLO-Blockade
[POI2008]BLO-Blockade 思路: tarjan: 代码: #include <bits/stdc++.h> using namespace std; #define ma ...