Linux Shell中的命令行别名

到目前为止,在本教程系列中,我们讨论了cd -pushd / popd命令以及CDPATH环境变量的基本用法以及相关详细信息。 在第四部分和最后一部分中,我们将讨论别名的概念,以及如何使用别名来使命令行导航更加容易和平稳。

As always, before jumping on to the heart of the tutorial, it's worth sharing that all the instructions as well examples presented in this article have been tested on Ubuntu 14.04LTS. The command line shell we've used is bash (version  4.3.11).

Linux中的命令行别名

以外行人的术语,别名可以被认为是复杂命令或一组命令的简称或缩写,包括其参数或选项。 所以基本上,使用别名,你创建易于记住的名字为不那么容易类型/记住的命令。

例如,以下命令为'cd〜'命令创建一个别名'home':

alias home="cd ~"

这意味着现在您可以快速键入“home”,并且只要您想从系统中的任何地方返回到主目录,请按enter键。

以下是别名命令手册页对此实用程序的说明:

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 / youcl目录中工作,该目录还包含许多子目录和子子目录。 例如,以下是一个完整的目录分支:

/home/himanshu/projects/youcl/command-line/navigation/tips-tricks/part4/final

现在想象一下,你在'最终'目录中,然后你想回到'tips-tricks'目录,从那里你需要回到'youcl'目录。 你会怎么做?

那么通常你会运行以下命令集:

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

如果这听起来有点太多的工作(是的,我在看你的LAZY ONES),那么这里是一个捷径:

"alias [the-alias]" >> ~/.bash_aliases && source ~/.bash_aliases

不用说,你必须用实际的命令替换[the-alias]。 例如:

"alias bk5='cd ../../../../..'" >> ~/.bash_aliases && source ~/.bash_aliases

继续,现在假设您已经创建了一些别名,并且已经在几个月内使用它们。 突然有一天,你怀疑其中一个没有按预期工作。 因此,您需要查看分配给该别名的确切命令。 你会怎么做?

当然,你可以打开你的.bash_aliases文件,看看那里,但这个过程可能有点耗时,特别是当文件包含很多别名的时候。 所以,如果你正在寻找一个简单的方法,这里是一个:所有你需要做的是运行别名命令与别名作为参数。

以下是一个例子:

$ alias bk6
alias bk6='cd ../../../../../..'

您可以看到,上述命令显示分配给bk6别名的实际命令。 还有一种方法:使用type命令。 以下是一个例子:

$ type bk6
bk6 is aliased to `cd ../../../../../..'

所以type命令产生一个更人性化的输出。

值得分享的另一件事是你可以使用别名进行常见的打字错误。 例如:

alias mroe='more'

最后还有一点值得一提的是,并不是每个人都赞成使用别名。 大多数人认为,一旦你习惯了你为自己定义的别名,你很难在其他系统上处理这些别名不存在(而且你也不允许创建任何一个) 。 为了更多(以及精确的原因)为什么有些专家不建议使用别名,你可以在这里

结论

像前面部分讨论的CDPATH环境变量一样,别名也是一把双刃剑,应该非常谨慎。 不要气馁,因为一切都有自己的优点和缺点。 只有这样的做法和完整的知识才是处理像别名这样的概念的关键。

所以这标志着本教程系列的结尾。 希望你喜欢它,并从中学到一些新的东西/概念。 如果您有任何疑问或疑问,请在下面的评论中与我们(和世界其他地区)分享。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏