Linux Shell 中的命令行别名
在此页
- Linux 中的命令行别名
- 相关细节
- 结论
到目前为止,在 cd - 和 pushd/popd 命令以及 CDPATH 环境变量中。在这第四期也是最后一期中,我们将讨论别名的概念以及如何使用它们使命令行导航更轻松、更顺畅。
Linux 中的命令行别名
用外行的话来说,别名可以被认为是一个复杂命令或一组命令的短名称或缩写,包括它们的参数或选项。所以基本上,使用别名,您可以为不太容易输入/记住的命令创建易于记忆的名称。
例如,以下命令为 cd ~ 命令创建别名 home:
alias home="cd ~"
这意味着现在只要您想从系统上的任何地方返回主目录,就可以快速键入 home 并按回车键。
以下是 alias 命令手册页关于此实用程序的说明:
The alias utility shall create or redefine alias definitions or write the values of existing alias definitions to standard output. An alias definition provides a string value that shall replace a command name when it is encountered
An alias definition shall affect the current shell execution environment and the execution environments of the subshells of the current shell. When used as specified by this volume of IEEE Std 1003.1-2001, the alias definition shall not affect the parent process of the current shell nor any utility environment invoked by the shell.
那么,别名究竟如何帮助命令行导航呢?嗯,这是一个简单的例子:
假设您在 /home/himanshu/projects/howtoforge 目录中工作,该目录进一步包含许多子目录和子目录。例如,下面是一个完整的目录分支:
/home/himanshu/projects/howtoforge/command-line/navigation/tips-tricks/part4/final
现在想象一下,您在最终目录中,然后您想要返回 tips-tricks 目录,然后您需要从那里返回到 howtoforge 目录。你会怎么做?
好吧,通常情况下,您会运行以下一组命令:
cd ../..
cd ../../..
虽然这种方法本身并没有错,但它绝对不方便,尤其是当你要返回时,比如在很长的路径中有 5 个目录。那么,解决方案是什么?答案是:别名。
您可以做的是,您可以为每个 cd .. 命令创建易于记忆(和键入)的别名。例如:
alias bk1="cd .."
alias bk2="cd ../.."
alias bk3="cd ../../.."
alias bk4="cd ../../../.."
alias bk5="cd ../../../../.."
所以现在无论何时你想返回,比如 5 个地方,从你当前的工作目录,你可以运行以下命令:
bk5
现在还不简单吗?
相关详情
虽然到目前为止我们用于在 shell 提示符下定义别名的技术(使用 alias 命令)起到了作用,但别名仅存在于当前终端会话中。您很可能希望保留您定义的别名,以便它们可以在您之后启动的任何新命令行终端窗口/选项卡中使用。
为此,您需要在 ~/.bash_aliases 文件中定义您的别名,该文件默认由您的 ~/.bashrc 文件加载(如果您是,请验证这一点使用较旧的 Ubuntu 版本)。
以下是我的 .bashrc 文件中关于 .bash_aliases 文件的摘录:
# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
将别名定义添加到 .bash_aliases 文件后,该别名将在所有新终端上可用。但是,您将无法在定义该别名时已经打开的任何其他终端中使用它 - 出路是从这些终端获取 .bashrc。以下是您必须运行的确切命令:
source ~/.bashrc
如果这听起来有点太多工作(是的,我正在看着你懒惰的人),那么这里有一个完成所有这些的捷径:
"alias [the-alias]" >> ~/.bash_aliases && source ~/.bash_aliases
不用说,您必须用实际命令替换 [the-alias]。例如:
"alias bk5='cd ../../../../..'" >> ~/.bash_aliases && source ~/.bash_aliases
继续,现在假设您已经创建了一些别名,并且断断续续地使用了几个月。突然,有一天,您怀疑其中一个没有按预期工作。因此,您觉得有必要查看分配给该别名的确切命令。你会怎么做?
当然,您可以打开 .bash_aliases 文件并在那里查看,但这个过程可能会有点耗时,尤其是当文件包含大量别名时。所以,如果您正在寻找一种简单的解决方法,这里有一个:您所要做的就是运行 alias 命令,并将别名作为参数。
这是一个例子:
$ alias bk6
alias bk6='cd ../../../../../..'
如您所见,上述命令显示了分配给 bk6 别名的实际命令。还有一种方法:使用type 命令。下面是一个例子:
$ type bk6
bk6 is aliased to `cd ../../../../../..'
因此 type 命令会产生更易于理解的输出。
另一件值得在此分享的事情是,您可以为常见的拼写错误使用别名。例如:
alias mroe='more'
最后,还值得一提的是,并非所有人都赞成使用别名。他们中的大多数人争辩说,一旦您习惯了为方便起见而定义的别名,您就很难在不存在这些别名的其他系统上工作(并且您也不允许创建任何别名)。有关某些专家不建议使用别名的更多(以及确切原因),您可以前往此处。
结论
就像我们在上一节中讨论的 CDPATH 环境变量一样,别名也是一把双刃剑,应该非常谨慎地使用。不过不要气馁,因为一切都有自己的优点和缺点。当您处理诸如别名之类的概念时,只有练习和完整的知识才是关键。
所以这标志着本教程系列的结束。希望您喜欢它并从中学到一些新事物/概念。如果您有任何疑问或疑问,请在下面的评论中与我们(以及世界其他地方)分享。