十条命令行为Linux管理员节省时间


尽管Linux桌面在过去二十年中经历了巨大的改变(最显著的变化可能是Ubuntu Unity界面),根据可以提供给有经验系统管理员的力量,命令行依然是非平行的。尽管接下来的十个技巧大部分关于Bash shell,所有这些技巧都可以很容易地应用到其它现在shell上。

1.运用一条命令来创建并进入目录

创建接着进入一个新目录是一个非常普通的任务,似乎在shell中执行两种命令都该有捷径。虽然没有捷径,你可以将以下函数添加到你的.bashrc文件:

mkcd()
{
  mkdir $1
  cd $1
}

接着运行源.bashrc来读取内存中的变化,并运用mkcd命令完成两个服务:

wjgilmore@ubuntu:~$ mkcd articles
wjgilmore@ubuntu:~/articles $

2.回到前一目录

当你需要从结构复杂的目录中转移并想要回到初始目录时,你可以将之前一路径传递到cd命令,但是鲜为人知的cd命令让这件事变得琐碎。该顺序展示了该行为:

wjgilmore@ubuntu-laptop:~/Documents/techtarget_articles/ten_command_line_tricks/test2$ cd
wjgilmore@ubuntu-laptop:~$ cd -
~/Documents/techtarget_articles/ten_command_line_tricks/test2$
wjgilmore@ubuntu-laptop:~/Documents/techtarget_articles/ten_command_line_tricks/test2$

3.创建目录书签

继续跟随目录互动的主题,你会不可避免地一次次回到某些目录。可以通过添加到$CDPATH shell变体的路径(在你的.bashrc文件中)来创建能让你快速导航到这些目录的书签:

CDPATH='.:/home/wjgilmore/books'

一旦添加,你可以从操作系统路径中的任一处直接导航到书签目录,只需要执行如下命令:

$ cd books

4.熟练地编辑命令行

你有多少次在沉闷地编辑和执行一系列略微不同的命令?例如我在忙于创建来自Markdown源的不同书本章节的PDF版本时,我通常执行以下命令:

$ pandoc -o html/chapter06.html chapters/chapter06.md  --template=templates/html.template

为了也创建chapter04.md源文件,命令行初学者会很快厌倦用向上箭头在历史中检索之前执行(上一)命令,然后用左指箭头直到用chapter04.md更换了所有chapter06.md实例。还有很多更高效的方式来执行该任务。首先,考虑使用Bash的命令行编辑键盘快捷键(两种支持模式:Emacs和vi),这让你可以快速地导航到想去的位置:

Ctrl + a:去往首行
Ctrl + e: 去往末行
Alt + f: 前进一个字
Alt + b: 退后一个字

第二种且可能更有效的方法是使用命令行替换。接下来的命令会将在之前执行命令中发现的06用04代替:

$ pandoc -o html/chapter06.html chapters/chapter06.md  --template=templates/html.template
$ !!:gs/06/04
pandoc -o html/chapter04.html chapters/chapter04.md  --template=templates/html.template