有沒有要避免的單字符bash別名?
我經(jīng)常發(fā)現(xiàn)我自己制作的單字符別名,因?yàn)楫吘梗鼈兊拇嬖谑菫榱斯?jié)省輸入時間。我很好奇這是否應(yīng)該避免。我不知道有什么沖突避免:標(biāo)準(zhǔn)或具有單字符名稱的常用命
解答動態(tài)
\<;gt;,(在某些shell中也是^,%SPC,TAB,NL(以及帶有一些shell的其他空格)最好避免使用非ASCII字符(因?yàn)楦鶕?jù)區(qū)域設(shè)置,這些字符具有不同的編碼)最好避免使用控制字符(在上面提到的TAB和NL旁邊),因?yàn)樗鼈儾惶菀纵斎,并且取決于上下文,不總是可見的,或者具有不同的表示形式。只有zsh允許您為NUL字符定義和使用別名。bash允許您為^A(字節(jié)值為1的控制字符)定義別名,但不使用它。 可以查找具有單個字符的命令名稱:
bash:compgen-cgrep-x。
sort-u(還包括關(guān)鍵字,假設(shè)命令名不包含換行符)
zsh:type-m'?'(或鍵入-pm'?'如果你不想要函數(shù)/別名/內(nèi)建項(xiàng)/關(guān)鍵字)。
Debian或派生詞:在任何包中找到任何帶有單個字符的命令名稱:
$apt file find-x'/s?bin/$'coreutils:/usr/bin/[e-wrapper:/usr/bin/epython3-q-text-as-data:/usr/bin/qr-base-core:/usr/bin/Rr-base-core:/usr/lib/R/bin/Rr-cran-littler:/usr/bin/Rr-cran-littler:/usr/lib/R/site-library/littler/bin/rwims:/var/lib/wims/public\html/bin/cxserver-xorg-core:/usr/bin/X最簡單的方法可能是檢查是否有這樣的東西名稱已存在。在我的系統(tǒng):
$forchar在{A..z};do typequot;2>;/dev/null;doneR is/usr/bin/RX is/usr/bin/X[是一個shell內(nèi)置程序l別名為'ls-CF'w is/usr/bin/w 據(jù)我所知,這顯示了所有相關(guān)的c別名:其他別名像lShell保留字functionsshell builtinsFile命令,如w和[This Bash one liner將向您展示所有單個字符的命令(我不是Bash專業(yè)人員,所以這個腳本可能不是最優(yōu)雅的):
echo$PATHsed's/:/\n/g'
而read p;do lsquot;2>;/dev/null;done
egrepquot;
sort-u On Fedora 33 I獲取:
[wX地址:";我很好奇這是否應(yīng)該避免!
正如其他答案中所描述的,只要不是你要使用的東西,就應(yīng)該沒有問題。
像這樣使用別名的主要挫折是當(dāng)你幫助一個朋友或ssh進(jìn)入一臺你還沒有復(fù)制.bashrc的計算機(jī)時。你所有的肌肉記憶都讓你覺得自己像一條離開水的魚。我覺得這太讓人迷惑了,所以我盡量把我的化名降到最低。我不知道有什么沖突。
對于您還不知道的沖突,這并不重要。
別名是一種交互式shell配置。它們在腳本中不活躍。如果使用與現(xiàn)有程序相同的名稱定義別名,則意味著當(dāng)您在shell中親自鍵入別名時,默認(rèn)情況下將調(diào)用您的別名而不是另一個程序。其他程序看不到您的別名,因此沒有沖突。
例如,如果您不知道命令X或從未計劃直接從shell調(diào)用它,那么定義別名X實(shí)際上不是問題。當(dāng)其他程序(如startx/xinit)調(diào)用X時,它們將看不到您的別名,因此不會有沖突。
這取決于用戶別名的用途(例如,如果錯誤地執(zhí)行錯誤的別名,問題有多大),以及出錯的頻率。
For示例:
R='rm-rf*'和t='ls-l*tar*'可能是個非常糟糕的主意,即使你很少按錯密鑰使用r='file*.pnggrep RGB'和t='ls-l*tar*'在后面的例子中,如果您鍵入r而不是(在鍵盤上關(guān)閉,因此很容易錯誤地鍵入)t,您只會得到您不想要的輸出,并且可以輕松地鍵入正確的別名。但是,在前一種情況下,如果鍵入r而不是t,則會造成不必要的損壞。
因此,關(guān)鍵是:如果使用單字母別名,則僅將其用于只讀內(nèi)容(而不用于可能以無意中運(yùn)行會導(dǎo)致問題的方式更改數(shù)據(jù)的內(nèi)容)- End
免責(zé)聲明:
本頁內(nèi)容僅代表作者本人意見,若因此產(chǎn)生任何糾紛由作者本人負(fù)責(zé),概與琴島網(wǎng)公司無關(guān)。本頁內(nèi)容僅供參考,請您根據(jù)自身實(shí)際情況謹(jǐn)慎操作。尤其涉及您或第三方利益等事項(xiàng),請咨詢專業(yè)人士處理。