Bash

當使用者名有空格和撇號時如何在 Ubunth WSL 上創建 bash 別名

  • August 21, 2019

我正在嘗試在 Ubuntu WSL 中創建以下別名:

alias windocs='cd /mnt/c/Users/Firstname L'astname/Documents/'

不幸的是,我的使用者名是Firstname L’astname,包括空格和撇號。

我試過使用反斜杠:

alias windocs='cd /mnt/c/Users/Firstname\ L\'astname/Documents/'

但是 bash 仍然將撇號解釋為字元串的結尾,從而導致以下錯誤:

-bash: .bash_aliases: line 11: unexpected EOF while looking for matching `''
-bash: .bash_aliases: line 12: syntax error: unexpected end of file

我還嘗試將使用者名封裝在雙引號中:

alias windocs='cd /mnt/c/Users/"Firstname L'astname"/Documents/'

我得到同樣的錯誤。

如何編寫此別名以使其正常工作?每次都必須一直 cd 到 Documents 文件夾,這很痛苦。

單引號字元串中的單引號是不可轉義的,但幸運的是,您可以在別名定義周圍使用雙引號,然後在目錄名稱周圍(轉義)雙引號:

alias windocs="cd \"/mnt/c/Users/Firstname L'astname/Documents/\""

或者,您可以將該目錄符號連結到您的 Linux 主目錄:

ln -s "/mnt/c/Users/Firstname L'astname/Documents/" ~/docs

然後,簡單地cd docs(或者cd ~/docs,如果您不在您的主目錄中)將帶您到那裡。

好吧,我應該先看看這個。根據這個stackoverflow答案,我將整個字元串放在雙引號中:

alias windocs="cd /mnt/c/Users/Firstname\ L\'astname/Documents/"

現在可以了。這是因為單引號字元串沒有轉義機制,但有雙引號字元串(根據其他答案)。

引用自:https://unix.stackexchange.com/questions/536684