Bash
當使用者名有空格和撇號時如何在 Ubunth WSL 上創建 bash 別名
我正在嘗試在 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/"
現在可以了。這是因為單引號字元串沒有轉義機制,但有雙引號字元串(根據其他答案)。