到目前为止,在本系列指南中,我们已经讨论了cd-和pushd/popd命令以及CDPATH环境变量的基本用法和相关细节。在这第四期也是最后一期中,我们将讨论别名的概念以及如何使用它们使命令行导航更加轻松顺畅。一如既往,在进入本指南的核心之前,值得指出的是,本文中的所有命令以及所示示例均已在Ubuntu14.04LTS上进行了测试。我们使用的命令行shell是bash(4.3.11版)。Linux中的命令行别名按外行人的定义,别名可以认为是一个复杂命令或一组命令(包括它们的参数和选项)的缩写或缩写。所以基本上,使用别名,您可以为不太容易编写/记住的命令创建易于记忆的名称。例如,以下命令为cd~命令创建一个别名home:aliashome="cd~"这意味着现在在你系统的任何地方,只要你想回到你的主目录,你都可以快速输入home并按输入即可。关于alias命令,man手册是这样描述的:alias工具可以创建或重新定义别名定义,或者将已有的别名定义输出到标准输出。别名定义提供了一个字符串值,在输入命令时应该将其替换。别名定义影响当前shell的执行环境和当前shell的所有子shell的执行环境。根据IEEEStd1003.1-2001,别名定义不应影响当前shell的父进程,也不应影响任何shell调用的程序环境。那么,别名到底是如何帮助命令行导航的呢?这里有一个简单的例子:假设您在/home/himanshu/projects/howtoforge目录中工作,该目录包括许多子目录和子目录。例如下面是一个完整的目录分支:/home/himanshu/projects/howtoforge/command-line/navigation/tips-tricks/part4/final现在想象你在final目录,然后你想回去到tips-tricks目录,然后从那里返回到howtoforge目录。你会怎么做?是的,通常情况下,您会运行以下一组命令:cd../..cd../../..虽然这种方法没有任何问题,但绝对不方便,尤其是当您在很长的路径中时并想回去说5个目录。那么,有解决办法吗?答案是:别名。您可以做的是为每个cd..命令创建易于记忆(和编写)的别名。例如:aliasbk1="cd.."aliasbk2="cd../.."aliasbk3="cd../../.."aliasbk4="cd../../../.."aliasbk5="cd../../../../.."现在每当你想从当前工作目录返回时,比如5个目录,你只需运行以下命令:bk5这不是很简单吗?相关细节尽管我们用于在shell中定义别名的当前技术(通过使用alias命令)有效,但别名仅存在于当前终端会话中。您可能希望您定义的别名保留下来,以便您可以在之后启动的任何新命令窗口/选项卡中使用它们。为此,您需要在~/.bash_aliases文件中定义您的别名,该文件默认由您的~/.bashrc文件加载(如果您使用较早版本的Ubuntu,我尚未验证这是否有效)。这是我的.bashrc文件中关于.bash_aliases文件的部分:#Aliasdefinitions。#Youmaywanttoputallyyouradditionsintoaseseparatefilelike#~/.bash_aliases,而不是直接在此处添加它们。#See/usr/share/doc/bash-doc/examplesinthebash-docpackage。if[-f~/.bash_aliases];then.~/.bash_aliases将别名定义添加到.bash_aliases文件后,该别名将在任何新终端中可用。但是,您还不能在定义别名时启动的任何其他终端中使用它们-解决方法是在这些终端中重新加载.bashrc。这是您需要执行的具体命令:source~/.bashrc如果您认为这太多了(是的,我希望您有一种懒惰的方式),那么这里有一个快捷方式来完成这一切:“别名[the-alias]">>~/.bash_aliases&&source~/.bash_aliases毫无疑问,您需要将[the-alias]替换为实际命令。例如:"aliasbk5='cd../../../../..'">>~/.bash_aliases&&source~/.bash_aliases接下来,假设你已经创建了一些别名并且时常使用它们是时间。突然有一天,你发现其中一个与预期不符。因此,您觉得有必要查看给定该别名的真实命令。你会怎么做?当然,您可以打开.bash_aliases文件并在那里查看,但这可能会有点耗时,尤其是当文件包含大量别名时。因此,如果您正在寻找一种更简单的方法,这里有一个:您需要做的就是使用别名作为参数运行alias命令。下面是一个示例:$aliasbk6aliasbk6='cd../../../../../..'如您所见,上面提到的命令显示了分配给别名bk6的实际命令。这是另一种方法:使用type命令。下面是一个例子:$typebk6bk6isaliasedto`cd../../../../../..'type命令产生一个人类可读的输出。另一件值得分享的事情是,您可以为常见的拼写错误使用别名。例如:aliasmroe='more'***同样值得注意的是,并不是每个人都喜欢使用别名。他们中的大多数人认为,一旦您习惯了为方便起见而定义的别名,当您在别名不存在(并且不允许您创建别名)的其他方面相同的系统中工作时,就会变得非常困难。有关某些专家不建议使用别名的更多(和更准确)原因,您可以在此处找到它们。总结就像我们上一篇文章中讨论的CDPATH环境变量一样,别名也是一把双刃剑,应该谨慎使用。不过不要太气馁,因为每个人都有自己的优点和缺点。当涉及到别名等概念时,更多的实践和扎实的知识是关键。好了,这就是本系列指南的第一章。希望您喜欢它并从中学习新事物/概念。如果您有任何疑问或问题,请在下面的评论框中与我们(和其他人)分享。
