Linux命令行工具使用小贴士及技巧(四)

到目前为止,在该系列指南中,我们已经讨论了 cd - 和 pushd/popd 命令的基本使用方法和相关细节,以及 CDPATH 环境变量。在这第四期、也是最后一期文章中,我们会讨论别名的概念以及你可以如何使用它们使你的命令行导航更加轻松和平稳。

一如往常,在进入该指南的核心之前,值得指出本文中的所有命令以及展示的例子都在 Ubuntu 14.04LTS 中进行了测试。我们使用的命令行 shell 是 bash(4.3.11 版本)。

Linux 中的命令行别名

按照外行人的定义,别名可以被认为是一个复杂命令或者一组命令(包括它们的参数和选项)的简称或缩写。所以基本上,使用别名,你可以为那些不那么容易书写/记忆的命令创建易于记忆的名称。

例如,下面的命令为 cd ~ 命令创建别名 home:


  1. alias home="cd ~" 

这意味着现在在你的系统中无论何地,无论何时你想要回到你的主目录时,你可以很快地输入 home 然后按回车键实现。

关于 alias 命令,man 手册是这么描述的:

alias 工具可以创建或者重定义别名定义,或者把现有别名定义输出到标准输出。别名定义提供了输入一个命令时应该被替换的字符串值

一个别名定义会影响当前 shell 的执行环境以及当前 shell 的所有子 shell 的执行环境。按照 IEEE Std 1003.1-2001 规定,别名定义不应该影响当前 shell 的父进程以及任何 shell 调用的程序环境。

那么,别名到底如何帮助命令行导航呢?这是一个简单的例子:

假设你正在 /home/himanshu/projects/howtoforge 目录工作,它包括很多子目录以及子子目录。例如下面就是一个完整的目录分支:


  1. /home/himanshu/projects/howtoforge/command-line/navigation/tips-tricks/part4/final 

现在想象你在 final 目录,然后你想回到 tips-tricks 目录,然后再从那里,回到 howtoforge 目录。你会怎么做呢?

是的,一般情况下,你会运行下面的一组命令:


  1. cd ../.. 
  2. cd ../../.. 

虽然这种方法并没有错误,但它绝对不方便,尤其是当你在一个很长的路径中想往回走例如说 5 个目录时。那么,有什么解决办法吗?答案就是:别名。

你可以做的是,为每个 cd .. 命令创建容易记忆(和书写)的别名。例如:


  1. alias bk1="cd .."   
  2. alias bk2="cd ../.."   
  3. alias bk3="cd ../../.."   
  4. alias bk4="cd ../../../.."   
  5. alias bk5="cd ../../../../.." 

现在无论你什么时候想从当前工作目录往回走,例如说 5 个目录,你只需要运行下面的命令:


  1. bk5 

现在这不是很简单吗?

相关细节

尽管当前我们在 shell 中用于定义别名的技术(通过使用 alias 命令)实现了效果,别名只存在于当前终端会话。很有可能你会希望你定义的别名能保存下来,使得此后你可以在任何新启动的命令行窗口/标签页中使用它们。

为此,你需要在 ~/.bash_aliases 文件中定义你的别名,你的 ~/.bashrc 文件默认会加载该文件(如果你使用更早版本的 Ubuntu,我没有验证过是否有效)。

下面是我的 .bashrc 文件中关于 .bash_aliases 文件的部分:


  1. # Alias definitions. 
  2. # You may want to put all your additions into a separate file like 
  3. # ~/.bash_aliases, instead of adding them here directly. 
  4. # See /usr/share/doc/bash-doc/examples in the bash-doc package. 
  5. if [ -f ~/.bash_aliases ]; then  
  6.       . ~/.bash_aliases 
  7. fi 

一旦你把别名定义添加到你的 .bash_aliases 文件,该别名在任何新终端中都可用。但是,在任何其它你定义别名时已经启动的终端中,你还不能使用它们 - 解决办法是在这些终端中重新加载 .bashrc。下面就是你需要执行的具体命令:


  1. source ~/.bashrc 

如果你觉得这要做的也太多了(是的,我期待你有更懒惰的办法),那么这里有一个快捷方式来做到这一切:


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

毫无疑问,你需要用实际的命令替换 [the-alias]。例如:


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

接下来,假设你已经创建了一些别名,并时不时使用它们有一段时间了。突然有一天,你发现它们其中的一个并不像期望的那样。因此你觉得需要查看被赋予该别名的真正命令。你会怎么做呢?

当然,你可以打开你的 .bash_aliases 文件在那里看看,但这种方式可能有点费时,尤其是当文件中包括很多别名的时候。因此,如果你正在查找一种更简单的方式,这就有一个:你需要做的只是运行 alias 命令并把别名名称作为参数。

这里有个例子:


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

你可以看到,上面提到的命令显示了被赋值给别名 bk6 的实际命令。这里还有另一种办法:使用 type 命令。下面是一个例子:


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

type 命令产生了一个易于人类理解的输出。

另一个值得分享的是你可以将别名用于常见的输入错误。例如:


  1. alias mroe='more' 

最后,还值得注意的是并非每个人都喜欢使用别名。他们中的大部分人认为一旦你习惯了你为了简便而定义的别名,当你在其它相同而不存在别名(而且不允许你创建)的系统中工作时就会变得非常困难。更多(也是更准确的)为什么一些专家不推荐使用别名的原因,你到这里查看。

总结

就像我们之前文章讨论过的 CDPATH 环境变量,别名也是一把应该谨慎使用的双刃剑。尽管如此也别太丧气,因为每个东西都有它自己的好处和劣势。遇到类似别名的概念时,更多的练习和完备的知识才是重点。

那么这就是该系列指南的最后章节。希望你喜欢它并能从中学到新的东西/概念。如果你有任何疑问或者问题,请在下面的评论框中和我们(以及其他人)分享。

作者:Ansh

来源:51CTO

时间: 2024-10-02 03:31:21

Linux命令行工具使用小贴士及技巧(四)的相关文章

Linux命令行工具使用小贴士及技巧(一)

相关内容 如果你刚开始在 Linux 系统中使用命令行工具,那么你应该知道它是 Linux 操作系统中功能最强大和有用的工具之一.学习的难易程度跟你想研究的深度有关.但是,无论你的技术能力水平怎么样,这篇文章中的一些小贴士和技巧都会对你有所帮助. 在本系列的文章中,我们将会讨论一些非常有用的命令行工具使用小技巧,希望你的命令行使用体验更加愉快. 但是在开始下一步之前,我得强调一点,这篇文章中的测试实例都是在 Ubuntu 14.04LTS 系统下测试通过的.我们使用命令行 Shell 版本是 b

Linux 命令行工具使用小贴士及技巧(一)

相关内容 如果你刚开始在 Linux 系统中使用命令行工具,那么你应该知道它是 Linux 操作系统中功能最强大和有用的工具之一.学习的难易程度跟你想研究的深度有关.但是,无论你的技术能力水平怎么样,这篇文章中的一些小贴士和技巧都会对你有所帮助. 在本系列的文章中,我们将会讨论一些非常有用的命令行工具使用小技巧,希望你的命令行使用体验更加愉快. 但是在开始下一步之前,我得强调一点,这篇文章中的测试实例都是在 Ubuntu 14.04LTS 系统下测试通过的.我们使用命令行 Shell 版本是 b

Linux 命令行工具使用小贴士及技巧(二)

在本系列的第一部分中,我们通过讨论 cd - 命令的用法,重点介绍了 Linux 中的命令行导航.还讨论了一些其他相关要点/概念.现在进一步讨论,在本文中,我们将讨论如何使用 pushd 和 popd 命令在 Linux 命令行上获得更快的导航体验. 在我们开始之前,值得说明的一点是,此后提到的所有指导和命令已经在 Ubuntu 14.04 和 Bash shell(4.3.11)上测试过. pushd 和 popd 命令基础 为了更好地理解 pushd 和 popd 命令的作用,让我们先讨论堆

Linux命令行工具使用小贴士及技巧(二)

在本系列的第一部分中,我们通过讨论 cd - 命令的用法,重点介绍了 Linux 中的命令行导航.还讨论了一些其他相关要点/概念.现在进一步讨论,在本文中,我们将讨论如何使用 pushd 和 popd 命令在 Linux 命令行上获得更快的导航体验. 在我们开始之前,值得说明的一点是,此后提到的所有指导和命令已经在 Ubuntu 14.04 和 Bash shell(4.3.11)上测试过. pushd 和 popd 命令基础 为了更好地理解 pushd 和 popd 命令的作用,让我们先讨论堆

Linux 命令行工具使用小贴士及技巧(四)

到目前为止,在该系列指南中,我们已经讨论了 cd - 和 pushd/popd 命令的基本使用方法和相关细节,以及CDPATH 环境变量.在这第四期.也是最后一期文章中,我们会讨论别名的概念以及你可以如何使用它们使你的命令行导航更加轻松和平稳. 一如往常,在进入该指南的核心之前,值得指出本文中的所有命令以及展示的例子都在 Ubuntu 14.04LTS 中进行了测试.我们使用的命令行 shell 是 bash(4.3.11 版本). Linux 中的命令行别名 按照外行人的定义,别名可以被认为是

Linux命令行工具使用小贴士及技巧(三)

在这个系列的第一部分,我们详细地讨论了 cd - 命令,在第二部分,我们深入探究了 pushd 和 popd 两个命令,以及它们使用的场景. 继续对命令行的讨论,在这篇教程中,我们将会通过简单易懂的实例来讨论 CDPATH 这个环境变量.我们也会讨论关于此变量的一些进阶细节. 在这之前,先声明一下此教程中的所有实例都已经在 Ubuntu 14.04 和 4.3.11(1) 版本的 Bash 下测试过. 环境变量 CDPATH 即使你的命令行所有操作都在特定的目录下 - 例如你的主目录,然而在你切

Linux 命令行工具使用小贴士及技巧(三)

在这个系列的第一部分,我们详细地讨论了 cd - 命令,在第二部分,我们深入探究了 pushd 和 popd 两个命令,以及它们使用的场景. 继续对命令行的讨论,在这篇教程中,我们将会通过简单易懂的实例来讨论 CDPATH 这个环境变量.我们也会讨论关于此变量的一些进阶细节. 在这之前,先声明一下此教程中的所有实例都已经在 Ubuntu 14.04 和 4.3.11(1) 版本的 Bash 下测试过. 环境变量 CDPATH 即使你的命令行所有操作都在特定的目录下 - 例如你的主目录,然而在你切

终端中的乐趣:6个有趣的Linux命令行工具

终端中的乐趣:6个有趣的Linux命令行工具 之前, 我们展示了一些有关有趣的 Linux 命令行命令的文章, 这些文章告诉我们, Linux 并不像看起来那样复杂, 如果我们知道如何使用的话, 反而会非常有趣. Linux 命令行可以简洁而完美地执行一些复杂的任务, 并且十分有趣. Linux命令及Linux终端的20个趣事 Linux终端的乐趣之把玩字词计数 前者包含了20个有趣的 Linux 命令/脚本(和子命令), 得到了读者的高度赞扬. 而另一篇文章虽然没有之前那篇文章那么受欢迎,包含

用Mac和Linux命令行工具使用Windows Azure

除了Windows http://www.aliyun.com/zixun/aggregation/13357.html">Azure Web Sites和令人兴奋的新的虚拟机功能的引入,我们最近发布了一系列开放源代码的命令行工具使您可以在任何操作系统上用命令行管理和部署这些新的服务,包括第一次支持苹果 OSX 与 Linux 操作系统. 这篇文章里我将引导您完成安装和基本工具的使用,以及分享如何让你可以了解更多,甚至有利于该工具的信息 (它是开放源码的Node.js 代码,有Apache