Bash

是否需要避免任何單個字元的 bash 別名?

  • February 17, 2021

我經常發現自己製作單字元別名,因為畢竟它們的存在是為了節省輸入時間。我很好奇是否應該避免這種情況。我不知道有任何衝突。

要避免的事情:

  • 具有單字元名稱的標准或常用命令:(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

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