題:
如何使用bash cd到名稱包含空格的目錄?
colinfang
2011-05-24 07:33:53 UTC
view on stackexchange narkive permalink

我嘗試了 cd“〜/ Library / Application Support /”-bash:cd:〜/ Library / Application Support /:沒有這樣的文件或目錄

cd〜/ Library / Application Support / -bash:cd:〜/ Library / Application Support /:沒有這樣的文件或目錄

七 答案:
robzolkos
2011-05-24 08:18:32 UTC
view on stackexchange narkive permalink

您可以在按下前幾個字符後使用 Tab kbd>鍵(然後它將為您“填充”文件夾的其餘部分,例如,鍵入 cd〜/ L Tab kbd>填寫 cd〜/ Library / ,然後鍵入 Ap Tab kbd>,其餘內容將為您填充。

如果單詞之間有空格,並且您不想使用上述方法,請在空格之前放置 \ (反斜杠),例如 cd〜/庫/應用程序\支持

路徑區分大小寫還是不區分大小寫?我可以通過cd〜/ library訪問Library,但是如果遇到大小寫錯誤,則tab方法將不起作用。
@colinfang OS X不區分大小寫,但保留大小寫。對於自動完成功能,bash shell必須更具區分性。
@NReilingh-啊哈,謝謝。
-1
colinfang-對於具有bash兼容性的不區分大小寫的製表符完成,請嘗試使用'zsh'。同樣,此外殼的通配符完成非常好。
Chris Johnsen
2011-05-24 10:18:01 UTC
view on stackexchange narkive permalink

這裡的核心問題是shell( bash )的引用方式以及它如何影響波浪號的擴展以及拆分為“單詞”(正在運行的程序的參數)。

bash 僅在不加引號的情況下特別處理前導代字號。此外,以下斜杠也不能加引號。

同時, bash 會基於非引用的空格將命令行解析為“單詞”。 cd 命令通常只需要一個參數(目標目錄)。諸如 cd foo bar 之類的命令行意味著使用兩個參數運行 cd foo bar 。如果只想發送一個 foo bar 參數,則需要用引號引起來:
(例如) cd foo \ bar (請參見下面的更多引用示例) )。

在您的特定情況下,在引用目錄名稱中的空格時,需要使波浪號和以下斜杠不加引號。您的 cd“〜/ Library / Application Support /” 試用版最終引用過多(波浪號和斜杠),而您的 cd〜/ Library / Application Support / 試用版引號太少(省略目錄名稱中的空格)。

最常見的解決方案是使用單字符轉義僅引用空格:

  cd 〜/ Library / Application \ Support  

您還可以在參數的空格或空格以及其他一些地方使用單引號或雙引號(但不能在〜/ !):

  cd〜/ Library / Application''支持cd〜/ Library / Application'“支持cd〜/ Library / App'lication'支持cd〜/ Library /應用程序“ Supp” ort cd〜/'Library / Application'Support cd〜/“ Library / Application” Support  

這些引號具有不同的含義,但是在這些示例中它們是相同的。單引號保護文字字符串,而雙引號允許在引號區域進行各種擴展和替換。

通常,您可以讓Shell為您完成工作。

  • 通配符(通配符):

      cd〜/ L * / Ap *  

    您可以使用 shopt -s nocaseglob 使不區分大小寫:

      cd〜/ l * / ap *  
  • 完成

    在輸入 cd〜/ L 後按 Tab kbd>可能會將其擴展為 cd〜/ Library /
    輸入 Ap (現在具有 cd〜/ Library / Ap )後再次按 Tab kbd>可能會將其擴展為 cd〜/ Library / Application \ Support / (shell自動插入轉義的反斜杠)。

    您可以使用 bind'setcomplete-ignore-case on'使不區分大小寫的輸入不正確:

    cd〜/ l Tab kbd>→ cd〜/ Library / ; ap Tab kbd>→ cd〜/ Library / Application \ Support /

不錯的答案@Chris。您是如何使Tab字符看起來像鍵的?
@RobZ:這是HTML文件的 (SE降價支持的幾種[HTML標籤之一](http://meta.stackexchange.com/questions/1777/what-html-tags-are-允許堆棧溢出服務器故障和超級用戶))。
useralone
2012-08-07 22:53:13 UTC
view on stackexchange narkive permalink

雙引號引用路徑時,將停止波浪號擴展。因此,有幾種方法可以做到這一點:

  cd〜/“ My Code” cd〜/'My Code' 

波浪號不加引號

  cd“ $ HOME / My Code”  

您可以在雙引號字符串內擴展環境變量。這基本上就是波浪號擴展的作用

  cd〜/ My \ Code  

您還可以使用反斜杠轉義特殊字符(例如空格)

Psychic2k
2011-05-24 18:54:55 UTC
view on stackexchange narkive permalink

您也可以將文件夾也拖到“終端”窗口中,拖動時會自動粘貼完整的文件/文件夾路徑。

NReilingh
2011-05-24 08:18:42 UTC
view on stackexchange narkive permalink

您需要轉義“ 應用程序支持

嘗試使用 $ cd〜/ Library / Application \ Support /

atwixtor
2015-04-02 22:14:33 UTC
view on stackexchange narkive permalink

如果正常方法不起作用,請嘗試使用%20 替換空格。

這在處理SSH和其他域樣式命令(如 auto_smb

prasanth sivanesan
2017-05-23 17:58:29 UTC
view on stackexchange narkive permalink

您可以嘗試通過以下方式對間隔的文件夾/文件進行嘗試: 如果文件或文件夾名稱包含 1)文件名。擴展名 該命令應該是 cd〜/ file \ name.extension /(或)cd〜/“文件名.extension” /

這個答案與其他類似答案相比有何不同或有所改善?
它是用於定義空間和引號的理想終端語法,它是用戶定義的一種,並且使用Tab鍵也不會採用1)filename.ext 2)file name.ext之類的名稱。到此為止,單詞的完整顯示將顯示為“文件”,我們可以使用此反斜杠在終端中定義空格。@fsp
所有這些信息都應在答案中,以向讀者顯示它與其他9個答案(包括已接受的答案)有何不同。


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...