有没有要避免的单字符bash别名?
我经常发现我自己制作的单字符别名,因为毕竟,它们的存在是为了节省输入时间。我很好奇这是否应该避免。我不知道有什么冲突避免:标准或具有单字符名称的常用命
解答动态
\<;gt;,(在某些shell中也是^,%SPC,TAB,NL(以及带有一些shell的其他空格)最好避免使用非ASCII字符(因为根据区域设置,这些字符具有不同的编码)最好避免使用控制字符(在上面提到的TAB和NL旁边),因为它们不太容易输入,并且取决于上下文,不总是可见的,或者具有不同的表示形式。只有zsh允许您为NUL字符定义和使用别名。bash允许您为^A(字节值为1的控制字符)定义别名,但不使用它。 可以查找具有单个字符的命令名称:
bash:compgen-cgrep-x。
sort-u(还包括关键字,假设命令名不包含换行符)
zsh:type-m'?'(或键入-pm'?'如果你不想要函数/别名/内建项/关键字)。
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最简单的方法可能是检查是否有这样的东西名称已存在。在我的系统:
$forchar在{A..z};do typequot;2>;/dev/null;doneR is/usr/bin/RX is/usr/bin/X[是一个shell内置程序l别名为'ls-CF'w is/usr/bin/w 据我所知,这显示了所有相关的c别名:其他别名像lShell保留字functionsshell builtinsFile命令,如w和[This Bash one liner将向您展示所有单个字符的命令(我不是Bash专业人员,所以这个脚本可能不是最优雅的):
echo$PATHsed's/:/\n/g'
而read p;do lsquot;2>;/dev/null;done
egrepquot;
sort-u On Fedora 33 I获取:
[wX地址:";我很好奇这是否应该避免。“
正如其他答案中所描述的,只要不是你要使用的东西,就应该没有问题。
像这样使用别名的主要挫折是当你帮助一个朋友或ssh进入一台你还没有复制.bashrc的计算机时。你所有的肌肉记忆都让你觉得自己像一条离开水的鱼。我觉得这太让人迷惑了,所以我尽量把我的化名降到最低。我不知道有什么冲突。
对于您还不知道的冲突,这并不重要。
别名是一种交互式shell配置。它们在脚本中不活跃。如果使用与现有程序相同的名称定义别名,则意味着当您在shell中亲自键入别名时,默认情况下将调用您的别名而不是另一个程序。其他程序看不到您的别名,因此没有冲突。
例如,如果您不知道命令X或从未计划直接从shell调用它,那么定义别名X实际上不是问题。当其他程序(如startx/xinit)调用X时,它们将看不到您的别名,因此不会有冲突。
这取决于用户别名的用途(例如,如果错误地执行错误的别名,问题有多大),以及出错的频率。
For示例:
R='rm-rf*'和t='ls-l*tar*'可能是个非常糟糕的主意,即使你很少按错密钥使用r='file*.pnggrep RGB'和t='ls-l*tar*'在后面的例子中,如果您键入r而不是(在键盘上关闭,因此很容易错误地键入)t,您只会得到您不想要的输出,并且可以轻松地键入正确的别名。但是,在前一种情况下,如果键入r而不是t,则会造成不必要的损坏。
因此,关键是:如果使用单字母别名,则仅将其用于只读内容(而不用于可能以无意中运行会导致问题的方式更改数据的内容)- End
免责声明:
本页内容仅代表作者本人意见,若因此产生任何纠纷由作者本人负责,概与琴岛网公司无关。本页内容仅供参考,请您根据自身实际情况谨慎操作。尤其涉及您或第三方利益等事项,请咨询专业人士处理。