Bash
是否需要避免任何單個字元的 bash 別名?
我經常發現自己製作單字元別名,因為畢竟它們的存在是為了節省輸入時間。我很好奇是否應該避免這種情況。我不知道有任何衝突。
要避免的事情:
- 具有單字元名稱的標准或常用命令:(
w
顯示登錄的使用者活動)、X
(X Window 系統伺服器)、R
(R 程式語言解釋器)、[
(類似於test
)- 您的外殼或普通外殼的內置函式:
[
,.
,:
,-
,r
- 外殼關鍵字:
{
,}
,!
?
和*
萬用字元- shell 語法中的特殊字元:``"$&();’#~|<>
,(在某些 shell 中也是
^,
%`)、SPC、TAB、NL(以及某些 shell 中的其他空格)- 最好避免使用非 ASCII 字元(因為這些字元根據語言環境具有不同的編碼)
- 最好避免控製字元(除了上面已經提到的 TAB 和 NL),因為它們不是那麼容易輸入,並且取決於上下文,並不總是可見或具有不同的表示形式。僅
zsh
允許您為 NUL 字元定義和使用別名。bash
允許您為^A
(字節值為 1 的控製字元)定義別名,但顯然不使用它。要查找具有單個字元名稱的命令:
bash
:(compgen -c | grep -x . | sort -u
還包括關鍵字,假設命令名稱不包含換行符)zsh
:type -m '?'
(或者type -pm '?'
如果你不想要函式/別名/內置/關鍵字)。- Debian 或衍生產品:在任何具有單個字元名稱的包中查找任何命令:
$ apt-file find -x '/s?bin/.$' coreutils: /usr/bin/[ e-wrapper: /usr/bin/e python3-q-text-as-data: /usr/bin/q r-base-core: /usr/bin/R r-base-core: /usr/lib/R/bin/R r-cran-littler: /usr/bin/r r-cran-littler: /usr/lib/R/site-library/littler/bin/r wims: /var/lib/wims/public_html/bin/c xserver-xorg-core: /usr/bin/X