簡體   English   中英

KornShell(ksh)中的通配符

[英]Wildcards in KornShell (ksh)

當我在主目錄中並在終端中鍵入“ ls * s *”時,它會顯示所有名稱中帶有“ s”的文件夾和文件(例如,音樂)。 但是,當我鍵入“ ls * si *”時,它什么也沒有顯示(我認為應該列出“音樂”)。 這是為什么?

這是一種幻想。 通配符在執行命令之前已展開,“ ls”顯示的內容取決於擴展產生的字數。 當“ ls”列出多個項目時,它將顯示它列出的每個文件夾的名稱。 當“ ls”僅列出一個文件夾時,僅顯示內容,而不顯示名稱。

當您鍵入“ ls * s *”時,字符串將擴展為多個名稱,因為目錄中包含“ s”的名稱不止一個。 結果就像輸入了“ ls Desktop Music”之類的東西。 當“ ls”列出多個內容時,它會顯示目錄名稱以及每個目錄的內容,因此您將獲得如下清單:

Desktop:
foo

Music:
iTunes

當您鍵入“ ls * si *”時,字符串將擴展為僅一個名稱,因為目錄中唯一包含“ si”的名稱是“ Music”。 結果就像您輸入了“ ls Music”。 當“ ls”列出一個文件夾時,它僅顯示該文件夾的內容,而沒有名稱,因此您將得到如下列表:

iTunes

要使“ ls”僅列出匹配的內容,而不列出其內容,請使用“ ls -d * si *”。 “ -d”表示以列出文件的方式列出目錄,而不是列出其內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM