2013-06-12 80 views
4

當我做ls -l | grep ^d它只列出當前目錄中的目錄。^字符在grep^d中意味着什麼?

我想知道的是^^d中的字符^是什麼意思?

+0

它匹配字符串的開頭。 – 2013-06-12 07:07:12

+0

字面意思是「開始於」,所以'^ d'是「以'd'開始」 –

+0

閱讀精美的手冊頁的傳統成了什麼? – Jens

回答

11

插入符號^和美元符號$是分別匹配行首和末尾的空字符串的元字符。grep僅匹配以「d」開頭的行。

+0

感謝您的解釋,但提到的鏈接已斷開,你能給另一個 –

+0

@Avenger感謝您指出斷開的鏈接,我會找到一個合適的和發佈。 – NINCOMPOOP

1

它有兩個含義。其中之一就是上面提到的「新白癡」。另一個同樣有用的是在字符類表達式中,它表示否定:grep -E '[^[:digit:]]' accepts any character except a digit. The ^`必須是[]中的第一個字符。

4

爲了補充the good answer by The New Idiot,我想指出的是這樣的:

ls -l | grep ^d 

顯示當前目錄所有目錄。這是因爲ls -l在目錄info的開頭添加了d

ls -l格式是這樣的:

-rwxr-xr-x 1 user group 0 Jun 12 12:25 exec_file 
-rw-rw-r-- 1 user group 0 Jun 12 12:25 normal_file 
drwxr-xr-x 16 user group 4096 May 24 12:46 dir 
^ 
|___ see the "d" 

爲了使它更清晰,可以ls -lF

-rwxr-xr-x 1 user group 0 Jun 12 12:25 exec_file* 
-rw-rw-r-- 1 user group 0 Jun 12 12:25 normal_file 
drwxr-xr-x 16 user group 4096 May 24 12:46 dir/ 

所以ls -l | grep /$會做一樣ls -l | grep ^d