前言

目前的Linux操作系统的图形化操作界面已经相当优秀。在Linux上可采用多种图形管理程序,来改变不同的桌面图案或功能菜单,例如GNOME和KDE等,这一点是Windows操作系统单一界面所望尘莫及的。但Linux是一个基于命令行的操作系统,命令行的命令是Linux操作系统的灵魂和精华所在,只有学会并掌握命令行技术,才能真正精通Linux,并成为真正的Linux高手。命令行能够让你访问数百个工具软件。在命令行上面,你可以使用一个管道把工具软件结合在一起执行一项单个工具软件无法完成的工作。

为什么关注命令行

对于某些用户和执行某些任务来说,使用图形界面更容易、更简洁。这实际上依赖于你要做什么和你是谁。图形用户界面和命令行之间的区别就像极品飞车游戏的自动驾驶与自己使用技巧玩一样。不过还是建议你自己慢慢地打任务。这样更有意思,而且你会慢慢地发现自己的技术提高了很多,包括漂移,你多玩就会领悟很多技巧,如果直接下载补丁的话就没有太多的乐趣了。

初级Linux用户多将矛头指向相对图形界面缺乏的UNIX的时候,多少人发出疑问:为何要死守命令行?我们说一个简单的逻辑:图形界面人机交互好,图形界面简单,图形界面在某些任务方面,确实是高效而且简单的,但是,某些任务方面,图形界面是无能的。

Linux操作系统是一款文本式驱动的操作系统,这是它的优点所在,即使是Windows处理复杂任务的时候,图形界面也只是一个界面(举个例子:Word图形界面做得很单纯,但有不少任务仍需宏完成)。图形界面消耗的是物理内存的空间,你的屏幕上需要处理复杂的问题的时候,图形界面要密密麻麻地列出一堆列表,而它的作用不过是基于某个命令的图形外壳,这个时候,图形界面的直观作用和命令行没有区别。而命令行遵循的是逻辑原则,当你需要处理某个任务的时候,命令和参数的位置决定了你执行的逻辑,这个时候图形界面无法做到。也许有人说,对于图形界面的执行逻辑可以决定命令行的位置依赖性,并且可以在合适的地方增加更多的、更直观的元素。但是,问题是图形界面一旦达到这个地步,它的定制性能迅速下降。图形界面的优点就在于这里:对于简单、固定逻辑流程的东西,它处理起来简单、直观、高效,所以非常适合作为应用软件的交互界面;但是这也是图形界面的缺点:对于复杂变化逻辑的东西,它处理能力低下。

学习命令行,不是要抛弃图形界面,但是使用图形界面,无法抛弃命令行。如果想要自己的系统更完善,那么还是好好学习命令行吧。下面看一个实际的例子。

公司经常会同步过来很多文件,希望能按上传日期移动到相应的文件夹。

如果使用图形界面操作会比较麻烦,也许有人会说可以用Windows的一些同步软件帮忙,但是如果你的系统不兼容Windows呢?可以使用一个简单的shell脚本解决问题:

    #!/bin/bash
    ORIGDIR="/var/UploadFiles"
    TARGDIR="/var/ClassifiedFiles"
    filelist=$( ls $ORIGDIR/* )
    for file in $filelist
    do
      date=$( ls -l $file | tail -1 | awk '{print $6}' )
      if [ ! -e $TARGDIR/$date ]
      then
        mkdir $TARGDIR/$date
      fi
      mv $file $TARGDIR/$date
    done

说明 变量ORIGDIR是上传目录,所有上传的文件都必须放在这个目录下,且该目录不能有子目录。变量TARGDIR是分类目录所在的目录,所有分类好的目录和文件都是该目录的子目录。每一个文件都按其修改日期(如果此文件在上传后未被修改的话,也应该就是其上传日期)放在以其修改日期命名的目录下。例如:位于$ORIGDIR目录下修改日期为2008-09-26的文件就被放在$TARGDIR/2008-09-26目录下。

总结:虽然软件可以解决不少问题,但是本来系统能解决的东西不需要软件。你的高效和稳定来自于你的命令行,而图形界面无法解决这个矛盾。

本书结构

本书的每一章都建立在前面章节所介绍知识的基础之上,这样就形成了自始至终的一个自然的学习路径。读者从本书获得了足够的知识之后,也会获得相应的信心,同时会发现章节的顺序和结构就是一个很有用的参考工具。

本书特色

目前市场上关于Linux命令行类的图书并不多,并且大部分只是对命令行的常用命令作简要介绍,既不全面也不深入,无法满足读者的需求。针对这种现状,本书对Linux命令行下的主要命令进行了非常详尽的系统介绍,弥补了该类图书的一个市场空白。本书的最大特点是详细,对每个命令均有详细的解说,并结合大量应用实例,力求把每一个命令的使用方法及其功能都介绍清楚,让读者能够更加深入地学习。随着Linux不同版本的不断推出和Linux应用的不断增加,新的Linux命令层出不穷,原有的命令也在不断更新,但市场上缺乏与命令行发展同步的参考用书。本书针对最新版本的Linux内核,重新整理和归纳了许多重要的常用命令和新增命令,力图为读者提供最新的命令行参考。从使用方便性上考虑,本书对Linux命令进行了详细的分类,将功能相同或相近的命令放在一起,使读者可以触类旁通、举一反三,以达到全面掌握的目的。对于初、中级用户来说,许多命令并不熟悉,而且也不了解命令的参数,需要查阅相应的资料。此时,本书就可以像字典一样供查阅。

本书的编写基于RHEL 5.0操作系统,汇集了Linux命令行下最常用、最重要的命令。这些命令同时也适用于其他Linux发行版,是所有Linux用户必备的参考用书。

本书适合的读者对象

本书的读者对象是Linux应用爱好者,Linux网络管理员和系统管理员以及对故障排除方面感兴趣的读者,IT行业的相关人员,大专院校计算机专业师生,Linux系统管理、网络管理、维护的从业人员。作为一本系统管理与维护、网络配置与管理的工具类用书,本书对于相关工程技术人员也是一本不可多得的参考书。

致谢

我首先感谢在编写过程中领导、朋友和家人的支持及帮助,包括51CTO网站编辑杨文飞、刘兵、李棉等人。另外,电子工业出版社的李冰、高洪霞编辑在我写书的过程中给了我无私的帮助和鞭策,为了使这一本书能尽快与读者见面,她们也付出了巨大的努力。李冰多次邀请专家对此书提出有益意见,对于此书的修改完善起到了重要作用。

由于作者水平有限,书中不足及错误之处在所难免,敬请专家和读者给予批评指正。

编者

2008年11月于北京