Linux桌面从开始的简陋到现在走了很长的路。在我早期使用Linux的那段日子里,掌握命令行是最基本的——即使是在桌面版。不过现在变了,很多人可能从没用过命令行。但对于Linux系统管理员来说,可不能这样。实际上,对于任何Linux管理员(不管是服务器还是桌面),命令行仍是必须的。从管理网络到系统安全,再到应用和系统设定——没有什么工具比命令行更强大。

但是,实际上……你可以在Linux系统里找到非常多命令。比如只看/usr/bin目录,你就可以找到很多命令执行文件(你可以运行ls/usr/bin/|wc-l看一下你的系统里这个目录下到底有多少命令)。当然,它们并不全是针对用户的执行文件,但是可以让你感受下Linux命令数量。在我的Elementary OS系统里,目录/usr/bin下有2029个可执行文件。尽管我只会用到其中的一小部分,我要怎么才能记住这一部分呢?

幸运的是,你可以使用一些工具和技巧,这样你就不用每天挣扎着去记忆这些命令了。我想和大家分享几个这样的小技巧,希望能让你们能稍微有效地使用命令行(顺便节省点脑力)。

我们从一个系统内置的工具开始介绍,然后再介绍两个可以安装的非常实用的程序。

Bash命令历史

不管你知不知道,Bash(最流行的Linux shell)会保留你执行过的命令的历史。想实际操作下看看吗?有两种方式。打开终端窗口然后按向上方向键。你应该可以看到会有命令出现,一个接一个。一旦你找到了想用的命令,不用修改的话,可以直接按Enter键执行,或者修改后再按Enter键。

要重新执行(或修改一下再执行)之前运行过的命令,这是一个很好的方式。我经常用这个功能。它不仅仅让我不用去记忆一个命令的所有细节,而且可以不用一遍遍重复地输入同样的命令。

说到Bash的命令历史,如果你执行命令history,你可以列出你过去执行过的命令列表(图1)。

1.jpg

图1:你能找到我敲的命令里的错误吗?

你的Bash命令历史保存的历史命令的数量可以在~/.bashrc文件里设置。在这个文件里,你可以找到下面两行:

HISTSIZE=1000

HISTFILESIZE=2000

HISTSIZE是命令历史列表里记录的命令的最大数量,而HISTFILESIZE是命令历史文件的最大行数。

显然,默认情况下,Bash会记录你的1000条历史命令。这已经很多了。有时候,这也被认为是一个安全漏洞。如果你在意的话,你可以随意减小这个数值,在安全性和实用性之间平衡。如果你不希望Bash记录你的命令历史,可以将HISTSIZE设置为0。

如果你修改了~/.bashrc文件,记得要登出后再重新登录(否则改动不会生效)。

apropos

这是第一个我要介绍的工具,可以帮助你记忆Linux命令。apropos(意即“关于”)能够搜索Linux帮助文档来帮你找到你想要的命令。比如说,你不记得你用的发行版用的什么防火墙工具了。你可以输入apropos“firewall”,然后这个工具会返回相关的命令(图2)。

2.jpg

图2:你用的什么防火墙?

再假如你需要一个操作目录的命令,但是完全不知道要用哪个呢?输入apropos“directory”就可以列出在帮助文档里包含了字符“directory”的所有命令(图3)。

3.jpg

图3:可以操作目录的工具有哪些呢?

apropos工具在几乎所有Linux发行版里都会默认安装。

Fish

还有另一个能帮助你记忆命令的很好的工具。Fish是Linux/Unix/Mac OS的一个命令行shell,有一些很好用的功能。

  • 自动推荐
  • VGA颜色
  • 完美的脚本支持
  • 基于网页的配置
  • 帮助文档自动补全
  • 语法高亮
  • 以及更多

自动推荐功能让fish非常方便(特别是你想不起来一些命令的时候)。

你可能觉得挺好,但是fish没有被默认安装。对于Ubuntu(以及它的衍生版),你可以用下面的命令安装:

sudo apt-add-repository ppa:fish-shell/release-2

sudo apt update

sudo apt install fish

对于类CentOS系统,可以这样安装fish。用下面的命令增加仓库:

sudo -s

cd /etc/yum.repos.d/

wget http://download.opensuse.org/repositories/shells:fish:release:2/CentOS_7/shells:fish:release:2.repo

用下面的命令更新仓库:

yum repolist

yum update

然后用下面的命令安装fish:

yum install fish

fish用起来可能没你想象的那么直观。记住,fish是一个shell,所以在使用命令之前你得先登录进去。在你的终端里,运行命令fish然后你就会看到自己已经打开了一个新的shell(图4)。

4.jpg

图4:fish的交互式shell。

在开始输入命令的时候,fish会自动补齐命令。如果推荐的命令不是你想要的,按下键盘的Tab键可以浏览更多选择。如果正好是你想要的,按下键盘的向右键补齐命令,然后按下Enter执行。在用完fish后,输入exit来退出shell。

Fish还可以做更多事情,但是这里只介绍用来帮助你记住命令,自动推荐功能足够了。

保持学习

Linux上有太多的命令了。但你也不用记住所有命令。多亏有Bash命令历史以及像apropos和fish这样的工具,你不用消耗太多记忆来回忆那些帮你完成任务的命令。

最后修改:2017 年 11 月 08 日
如果觉得我的文章对你有用,请随意赞赏