从Ubuntu 6.06开始,每次Ubuntu发布新的版本,我都会感叹,Linux真的做的越来越易用了,现在日常操作中,除了打字外,基本都可以用鼠标完成了。然而,Linux毕竟是个很野的系统,如果你能掌握一些命令和快捷键,你可以把Linux的“野性”都释放出来。因此我打算写一系列文章,来介绍一些提高使用体验的技巧。由于我自己使用Debian作为日常系统,所以我的这些技巧基本适用于所有deb系列的发行版,大多数技巧也适用于其他发行版。当然,这一篇文章的标题就决定了它只适用于deb系列的发行版啦。
一点罗嗦的简介
相信用过Ubuntu的人,应该都听说过apt-get
这个命令吧,恩那就够了。再罗嗦一句,apt可以看作是一个系统,其中dpkg
是底层的工具,主要用来安装、卸载软件,是跟.deb
文件打交道的,而apt-*
则是一些较高层次的工具,用来处理复杂的依赖关系,或者提供更便利的使用体验。
日常应用中,我用的最多的量个命令分别是aptitude
和apt-file
,这两个命令基本满足了我大多数管理软件方面的需求,在极偶尔的情况下,会用一下dpkg
和apt-get
。如果你是一个命令行玩家,并且经常会安装/升级一些软件包,或者碰到一些系统里还没有安装的命令,那么你一定会爱上aptitude
和apt-file
这两个工具的:-)
aptitude
如果你早两年用过Ubuntu或者Debian,你一定知道新立德,这是一个图形的APT前端,你可以在里面搜索软件并且安装。而aptitude
则是一个基于命令行的前端,在aptitude中可以更方便的进行搜索、安装、更新等操作。你需要记住几个快捷键。咱们来看一些实际的例子吧。首先在终端输入命令
sudo aptitude
就可以打开看到aptitude的主界面了(最新的Ubuntu已经不默认带aptitude了,需要自行安装:sudo apt-get install aptitude),如下图:
如果你以前从来没有用过aptitude,你现在肯定懵了,接下来完全不知道可以按啥了,就跟第一次用vim一样。呵呵,别慌,我这就告诉你一个快捷键:ctrl-t
,这个快捷键将会打开菜单,后面的操作相信你都会了,包括搜索软件、安装软件、退出aptitude等。不过其实你熟练掌握其他常用的快捷键之后,就几乎永远用不到ctrl-t
了。
咱们先来看看常用的一些操作在aptitude中如何实现吧。首先更新软件列表和升级系统:
apt-get update
apt-get upgrade
在aptitude中分别对应快捷键u
和U
(注意大小写)。
按下u之后,屏幕上就会滚动显示正在下载的文件,然后再看Upgradable Packages (XX)
,其中,XX就是当前可以更新的软件的数量,大家可以使用方向键和回车键来展开这个树,查看里面都有些啥软件可以更新。不过我是个懒人啦,直接U
,告诉aptitude更新所有软件。咦,咋啥动静都没有?是不是被骗了,不是这个快捷键阿?呵呵,莫急,这只是告诉aptitude要对软件执行一下升级的动作,aptitude只是做了下标记,并没有真的动手呢,因为你可能还需要反悔的。aptitude中,在你对所有软件的操作(后面会介绍安装、卸载等操作)都标记完成后,你按下g
键,aptitude会给出一个新的页面,告知你所有将要执行的软件动作,你再次按下g
键后才真的开始安装动作。
好的,现在按下g
看看吧,aptitude打开了一个新的tab,显示的东西还是分几类,保持原来版本的软件/为了满足依赖而自动安装的软件/将要升级的软件等等,你可以用方向键和回车键来浏览这些软件,如果确定没有问题,就按g
,此时就会开始安装了。
唉,好累阿,其实吧,这东西要是现场教,或者用视频讲,会容易很多,不过我是土人,不知道怎么屏幕录像,也没有时间折腾安装相关的软件,还是用文字将就吧。
到这里,大家应该对aptitude的界面有点熟悉了。www.linuxidc.com告诉vim用户一个好消息,可以用j/k
来代替方向键哦,是不是很爽?还有更爽的呢,就是aptitude的神器,搜索,快捷键也是跟vim的一样,/
!
直接输入完整的或者部分的软件名,回车就会搜索,使用n/N
可以跳到下一个/上一个搜索结果,这个快捷键跟vim还是一样的。搜索的时候,可以用两个简单的正则式符号^
和$
,例如想找所有”gnome-”开头的软件,可以搜索^gnome-
,例如想找完整的名字就是”samba”的软件,而不需要其他名字中含有”samba”的软件,可以搜索^samba$
。另外,可以用空格隔开多个关键字,比如perl的模块都是以”lib***-perl”这样的形式命名的,可以搜索lib -perl
,比如想找html的form,但不知道准确的名字,可以搜索lib html perl
,是不是很方便呢?
OK,搜索软件实在太方便了,安装就更方便啦,直接在软件上按+
就行了。我想大家应该都猜到卸载软件用啥了吧?还有purge的快捷键是_
。如果一个软件已经安装,但是可以升级,那么按+
也可以升级。大家可以尝试按回车键,打开新的tab查看软件的详细信息,在详细信息中,除了有软件的介绍外,还会有软件的依赖关系,推荐的软件等,你如果发现一个推荐的软件挺好,你也可以移动光标过去按i
装上,一切操作都很自然。在有些时候,这很有用,比如我新装的系统,通常不喜欢安装整个gnome-desktop-environment,因为其中有不少软件我不需要。所以装系统时只安装了基本系统,装完后,在aptitude中展开gnome-desktop-environment的依赖软件,一个个看过去,需要的就按+
。
当标记好要安装的软件之后,按g
,会出现一个新的tab进行预览,再次按g
就会执行这些动作,这根之前说的一样。
在aptitude中,任何时候可以按q
来关闭当前的tab。
恩,其实剩下的东西不需要多讲了,基本操作熟练之后,如果有哪个快捷键不记得了,按ctrl-t
都能找到。大家用多了就熟悉了。
哦,对了,还有个很好的功能,就是处理冲突。比如我试图同时安装proftpd-basic和vsftpd这两个软件时,就会发生冲突,如图:
此时按e
可以查看提供的解决方案,如果有多个,可以按,/.
来在几个方案之间翻看,然后选择一个满意的解决方案按!
。
最后,救命稻草!如果你突然觉得乱糟糟的了,想撤销所有的标记重来,那就按ctrl-t
,然后选择Cancel Pending Actions就可以了。
小结一下,aptitude比apt-get好的地方,主要是可以让自己对将要进行的所有操作都有个数。不像apt-get,虽然每次操作前都会提示一下将会安装的软件,但是一堆文字堆在那里,估计没有人会好好看吧。另外,对于软件名字不确定的时候,尤其是前半部分不确定时,使用aptitude的搜索更方便。比新立德好的地方呢?操作的效率,如果你是一个vim用户,那你会发现aptitude操作起来实在太顺手了,不是vim用户也没关系,几个快捷键用多了就很顺手了。
apt-file恩,其实我只用apt-file的一个功能,而且这个功能其实dpkg也可以实现,但还是不如apt-file那么方便。这个功能就是搜索一个文件属于哪个软件包。
首先安装apt-file,并且更新数据库:
sudo apt-get install apt-file
apt-file update
执行apt-file update
时不需要sudo。
好,我们举个实际的例子来看吧。比如我要用hg,但是我不知道hg这个命令是哪个包提供的,怎么找呢?
apt-file search hg
呃,被刷屏了,这么多东西,太乱了。没关系,凭经验我们知道git这个命令一定是在bin目录下的,所以文件路径中肯定有”bin/hg”,因此可以这么搜索:
apt-file search bin/hg
这下搜到的东西少多了吧,不过发现还是有不少显然不对的结果,许多结果都是”hg***”,因此我们进一步缩小搜索范围:
apt-file -x search “bin/hg$”
意思懂得吧,就是搜索以”bin/hg”结尾的文件,这下结果就只有一条了:
mercurial: /usr/bin/hg
恩,软件包的名字就叫mercurial。
这个工具在碰到“xxx command not found”时非常有用,相信你会喜欢的:-)
小结
写了好长,发现其实也就介绍了两个工具的很少的功能。但其实这几个简单的功能,对于经常尝试新的软件的人来说,是非常有用的,而且效率提高很多。如果你有服务器,比如VPS的话,aptitude就更加有用了。相信你会中毒嗒:P