linux中豎線'|',雙豎線‘||’,&和&&的意思
阿新 • • 發佈:2018-12-06
對於初學者來說這幾個意思可能只知道其中幾個的意思,下面我們來看一下。
1、豎線‘|’ ,在linux中是作為管道符的,將‘|’前面命令的輸出作為'|'後面的輸入。舉個例子
-
[
18066609@root~]$ cat /etc/passwd
-
root:
x:
0
:
0
:root
:/root
:/bin/bash
-
bin:
x:
1
:
1
:bin
:/bin
:/sbin/nologin
-
daemon:
x:
2
:
2
:daemon
:/sbin
:/sbin/nologin
-
adm:
x:
3
:
4
:adm
:/var/adm
:/sbin/nologin
-
lp:
x:
4
:
7
:lp
:/var/spool/lpd
:/sbin/nologin
-
sync:
x:
5
:
0
:sync
:/sbin
:/bin/sync
-
shutdown:
x:
6
:
0
:shutdown
:/sbin
:/sbin/shutdown
-
halt:
x:
7
:
0
:halt
:/sbin
:/sbin/halt
-
mail:
x:
8
:
12
:mail
:/var/spool/mail
:/sbin/nologin
-
uucp:
x:
10
:
14
:uucp
:/var/spool/uucp
:/sbin/nologin
-
operator:
x:
11
:
0
:operator
:/root
:/sbin/nologin
-
games:
x:
12
:
100
:games
:/usr/games
:/sbin/nologin
-
gopher:
x:
13
:
30
:gopher
:/var/gopher
:/sbin/nologin
-
ftp:
x:
14
:
50
:FTP
User:/var/
ftp:/sbin/nologin
-
nobody:
x:
99
:
99
:Nobody
:/
:/sbin/nologin
加上|head -n1 之後
-
[
18066609@root~]$ cat /etc/passwd
|head -n1
-
root:x:0:0:root:/root:/bin/bash
-
2、雙豎線‘||’,用雙豎線‘||’分割的多條命令,執行的時候遵循如下規則,如果前一條命令為真,則後面的命令不會執行,如果前一條命令為假,則繼續執行後面的命令。
舉例輸入1小於2雙豎線輸出b,前面為真,後面不執行則沒有輸出b,輸入1大於2雙豎線echo b,前面為假則輸出b。
-
[
18066609@root~]$ [[
1 -lt
2 ]]
||echo b
-
[
18066609@root~]$ [[
1 -gt
2 ]]
||echo b
-
b
再舉一個實用性的例子,判斷檔案是否存在,不存在則建立,存在就什麼都不執行。
-
[
18066609@root~]$ ls
-
[
18066609@root~]$ [[ -f
1.txt ]]
|| touch
1.txt
-
[
18066609@root~]$ ls
-
1.txt
-
[
18066609@root~]$ [[ -f
1.txt ]]
|| touch
2.txt
-
[
18066609@root~]$ ls
-
1.txt
3、&同時執行多條命令,不管命令是否執行成功
-
[
18066609@root~]$ [[
1 -
gt
2 ]] & echo b
-
[
1]
32303
-
b
-
[
18066609@root~]$
-
[
1]+ Exit
1 [[
1 -
gt
2 ]]
4、&& 可同時執行多條命令,當碰到執行錯誤的命令時,將不再執行後面的命令。如果一直沒有錯誤的,則執行完畢。
-
[
18066609@root~]$ [[
1 -gt
2 ]] && echo b
-
[
18066609@root~]$
-
[
18066609@root~]$ [[
1 -lt
2 ]] && echo b
-
b