Linux

bash, ’’ 在別名或函式中

  • May 2, 2021

我經常使用 Windows 和 Linux,有時我cd\從 Windows 肌肉記憶中輸入,所以我嘗試給它起別名,alias cd\='cd /'但這不起作用(可能是因為\它是 Linux 中的轉義字元)。有沒有辦法,使用我可以輸入cd\=>的別名或函式cd /

這很難,因為反斜杠用於轉義下一個字元,並且在行尾,它開始一個續行。因此,即使您可以創建一個名為 的函式cd\,您也需要將其執行為cd\\, 或'cd\'. 使用別名,轉義或引用名稱的一部分可防止別名擴展……

無論如何,您不能在 Bash 中創建這些別名或函式:

$ alias cd\\='echo foo'
bash: alias: `cd\': invalid alias name
$ cd\\ () { echo foo; }
bash: `cd\\': not a valid identifier

不過,你可以在 Zsh 中,但你需要雙反斜杠……

% cd\\ () { echo foo; }
% cd\\ 
foo

實際上它甚至似乎接受了別名,但你不能使用它:

% alias foo\\='echo bar' 
% foo\\
zsh: command not found: foo\
% 'foo\'
zsh: command not found: foo\

Bash 可以執行名稱中帶有反斜杠的外部命令,但這對cd.

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