Linux桌面使用之道

  |   Source

作者: 陈斌(redguardtoo)

注意: 我会长期维护本文,请参考下面的更新时间

更新时间: <2016-10-09>

原创时间: <2011-05-08>

这是为有志于成为高手的中级Linux用户而写的入门指导.

1 哲学

1.1 长期投资

软件对我而言是长期投资.所以我会花很多时间学习软件的快捷键(快捷键长期来说操作比鼠标高效),那种只能用鼠标操作的软件对我来说就是"坏"软件.

1.2 理性思维

以文件管理器来说,在Windows平台下我长期使用并热爱Total Commander,在Linux下平台下也有几款文件管理器在界面和功能上和Total Commander上非常接近,自然从感情上讲我会爱屋及乌.但是我最后还是选择了以Emacs作为主要的文件管理器,以丑陋的Midnight Commander为辅助,因我已确定选择软件的总的原则是尽可能用少的的软件做尽可能多的事.具体说来就是以Emacs做任何事,如果一定要用其他软件辅助Emacs,快捷键也应是Emacs的.Midnight Commander符合该条件

1.3 科学方法

细节见后文,我要强调的是我的工具和方法都是有高手验证过,有官方文档支持.对我而言,科学的含义,就是前人反复验证过的,过去100%成功也许能保证现在将来可能成功(因工具环境不断在变化,所以只是有可能).除此以外都不叫科学.

1.4 以人为本

在后文我会列出一些筛选软件的方法.也会推荐一些软件.但你决不要认为只要用了这些软件或者记住了我的方法就能成为高手了.这只是敲门砖而已.

实际上我推荐的不是软件,而是人.这些软件和用户和开发者是一个精英荟萃的圈子.重要的是跟对人.

2 少而精

软件数量少,品质高,功能强,依赖小,界面通用.

2.1 数量少

很重要,只有用的软件少(但是完成工作不少),才能有精力精通.

软件少的另一好处是维护省心,例如找出多个软件快捷键冲突和在安装软件数量有关系.

2.2 品质高

实质很简单,就是:

  • 久经考验(例如Emacs的开发历史有35年以上)
  • 聪明人认同

何为久经考验,何为聪明人,是可找出客观指标.指标越严格,筛选结果就越少.

2.3 功能强

原谅我又用Emacs举例,它可以看网页,收邮件,写程序,做笔记,写博客.

功能强的终极境界就是提供了一个无所不能的可编程平台.

2.4 依赖小

例如,命令行软件不依赖于QT,GTK之类图形界面库,安装包小很多,运行时消耗内存也小,启动快.

2.5 界面通用

例如,我写程序用emacs,一般操作用bash shell,上网用Firefox,但是通过适当的设置(Firefox需要安装插件keysnail,其他软件只要用最新版即可),他们的快捷键都是Emacs的.

3 软件推荐

3.1 编辑器

我用Emacs,考虑到它可以做任何事,可以认为它是轻量级的.

Vim也用,万不得已用nano,结束了.

3.2 浏览器

Firefox.它是自由软件,所以有很多顶尖Geek为其写插件.例如keysnail可以把Firefox的快捷键设置为Emacs的快捷键.所以我可以不用鼠标浏览网页.

3.3 Shell

我用bash,在我的.bashrc中有如下一行,

export HISTSIZE=200000

确保我输入的所有命令都不会丢失,我偏爱命令行软件,但是记命令会消耗我很多脑细胞,所以我让shell替我记住.我只要记住按Ctrl+R可搜索历史就好了.

其他有用的选项还很多.这只是个例子,说明Bash是可编程的.

3.4 桌面

Gnome是不考虑,用轻量级的i3.

i3是平铺桌面(例如左窗口写代码,右窗口看PDF文档),学习曲线低.

3.5 其他

  • 联网自己写脚本,因为GUI工具如wicd之类的依赖多
  • 听音乐用命令行工具mpd和mpc
  • 播放视频用mplayer(命令行),等等.
  • 硬盘清理用bleachbit(清理常用软件产生的临时文件),localepurge(删除无用的多国语言),ncdu(检查硬盘占用)

4 软件使用也需维护

安装软件在包管理系统的帮助下很简单.麻烦的是最新软件有时候不稳定,这通常是因为软件的配置文件更新引起的.

4.1 将/etc目录下的默认配置文件备份

Linux的软件默认配置文件在/etc/目录下. 我使用分布式版本控制软件git管理/etc目录,分布式版本控制系统好处很多,最大好处就是数据到处有完整备份,非常安全.具体细节请参考wikipedia.

在Linux上更新完系统或者安装最新软件包后,可以考虑手动将/etc目录下的文件用git备份.

sudo git add /etc/
sudo git commit -am "backup"

一旦某软件不正常,可检查其/etc下默认配置文件的修改纪录,将配置文件恢复到上一正常版本.

sudo git log /etc/mysql/my.cnf #check history
sudo git checkout commit_ref(version) /etc/mysql/my.cnf #restoren file

4.2 将用户目录下的用户定制配置文件备份

我也用git将配置文件(在/home/username/下)备份到github的服务器上.这里必须用第三方服务器同步配置,因为我使用多台电脑.

具体操作不展开了.

4.3 将软件版本降级

最新版本的软件可能不稳定,这时降级是必要的.

对于Arch Linux来说很简单,请参考Archwiki,实际上很简单,安装名为downgrade的软件,然后让它干所有的体力活就行了.

packer downgrade

对于其他主流Linux发行版如Centos或者Ubuntu来说,由于测试周期长,不会有不稳定的问题.

小众版本(我用Gentoo Linux)策略是不随意用最新版本的软件.

4.4 云备份

多媒体文件用云备份服务更好,我推荐Dropbox.

顺便说一下,国内的服务不要用,安全原因,不言自明.

4.5 备份操作系统

不用经常作,又有云备份,又有分布式版本控制系统,怕什么.

备份整个硬盘是用Clonezilla,只是备份操作系统的话用以下命令,

tar zcvpf mylinux.tgz --exclude=/proc/* --exclude=/lost+found --exclude='mylinux.tgz' --exclude=/mnt/* --exclude=/home/username/* --exclude=/sys/* /

我建议用前者,因为省事.

假设你采用clonezilla备份操作系统,我建议将/目录(操作系统目录)和/home目录放在两个分区内.

如果能够按照少而精的原则选软件的话,操作系统分区不需很大(8G足够了),目前我所占空间控制在3G左右(例子比较极端,因我netbook只有4G硬盘),这样clonezilla的操作就很快.

4.6 阅读官方文档

阅读官方和社区文档.

Ubuntu社区的特点用户多,少见的bug一般都会在该社区报告.缺点是其文档深度不够.

Arch Linux和Gentoo Linux的特点是用户一般水准较高,所以文档技术含量很高.

4.7 虚拟机的用处

我虚拟机软件使用VirtualBox,虚拟机为Windows XP,该操作系统我会定期更新安全补丁.软件只安装了IE和firefox.该操作系统我只用来操作网络银行.每次操作完毕,我会重置虚拟机状态到操作前的snapshot.

5 常用软件的诊断修复

即使用了上述做法,一年中也会有一次倒霉.就是某个版本软件出问题了.没人能帮忙,不能降级,改配置也没用,也没有可用的错误信息.

问题看起来很难,事实上5分钟就搞定.这往往是因为依赖的第三方库的版本出问题了.

比如说firefox不能启动,运行如下命令调试,

strace -o err.txt firefox

读一下err.txt就可以知道是哪个库出问题了.不需要任何编程知识的,猜加google就可以了.

知道哪个库文件出问题了(保险起见,ldd firefox确认一下).比如/usr/lib/libpng.so.14找不到,简单的解决办法是用另一个版本的库文件代替.

如果/usr/lib/libpng.so.15是存在的,我们可以用该库顶替libpng.so.14,

sudo ln -s /usr/lib/libpng.so.15 /usr/lib/libpng.so.14

通常这样就行了.

万一冒名顶替不行,我们就必须根据丢失的库文件查找需要安装的软件包.

以Arch Linux为例(其他发行版也有类似功能):

pkgfile libpng

pkgfile属于软件包pkgtools,所以你必须安装pkgtools,

packer -S pkgtools-git

6 系统启动失败的修复

解决方法很简单,用常见的Linux启动光盘启动,然后chroot,其作用是以指定目录作为操作系统根目录(root directory),然后以此根目录为基准建立一个新的环境.

细节请参考https://wiki.archlinux.org/index.php/Change_Root.

比如说我升级kernel后系统启动失败,而老的kernel没有备份,我可以光盘启动电脑,然后chroot,再使用上文所提的工具升级或者降级kernel.

7 书籍推荐

书籍 评论
Advanced Bash-Scripting Guide by Mendel Cooper 经典,其.bashrc模板很有价值
The Art of Unix Programming by Eric Steven Raymond 开拓思路,当八卦看,和编程关系不大
The Debian Administrator's Handbook 很好.捡有用的章节看

8 常见问题

等你的问题了.

9 联系我

这是我的twittergoogle plus,也可以通过我的email<chenbin DOT sh AT GMAIL DOT COM>联系我.

我的主力博客为http://blog.binchen.org.

Comments powered by Disqus