-----------------------------
-----------------------------可能您早已能够熟练的使用GUI(图形用户界面),例如您可以使用鼠标双击一个图标,来打开或者执行它。
我们来看这个过程,您把鼠标的指针定位一桌面上的一个程序,按下鼠标左键两次。系统读取鼠标指针的位置,并且判断该位置下图标的涵义,根据预设的双击动作,运行或者执行此图标。
这一套GUI系统,便是一种Shell,它的作用是实现人机交互。如果我们不能够控制电脑,那么电脑还不如电视机好玩,不是么?电视机也可以选择频道(电视机的遥控器,也是一种人机交互的界面,不过相对于电脑,确实是相当简单了:)
易于上手、界面直观是GUI的优点,但是GUI为不意味着简单!或许您有类似经历,您的桌面上有几十个程序的启动图标,您也知道它们的名字,但是找出其中的一个,却并不是一件轻松的事情。
在Windows下,我的桌面上经常排满了图标,每次启动程序都令我非常的紧张。后来我尝试了类似“音速启动”这样的程序启动管理器,但是效果并不如传说中那样好。
在我的不懈努力下,这个难道最终得到了完美的解决:给程序作一个简短的快捷方式,放到某一特定目录下,然后使用“Win+R”组合键呼出“运行”对话框,键入快捷方式的名称来运行该程序。比如“反恐精英”的快捷方式为“cs”,我把它放在“Windows”目录下,只要运行“cs”命令,就可以去维护世界和平了。
不过这么多快捷方式,统统放到“Windows”目录下,可能会非常的混乱。因此,我在D盘建立了一个名为“path”的目录,并把它的路径加入到环境变量的“path”项中,所有的快捷方式都放在“D:/path”目录中,即便重装系统,只要在环境变量中加入此路径,原来的程序大多可以直接以命令来运行,连快捷方式都省了……我的朋友们强烈要示我帮他们设定这种启动方式,因为这确实方便:)
其实在Linux下,所有的程序都可以输入命令来运行。虽然Linux也包括了GUI,但是它并不比Windows的GUI更好用!上面的例子只是简单的介绍了CLI(命令行界面)比GUI的优越之处,使用CLI还有更多的好处,您会慢慢体会到的。
当然了,在您的印象中,CLI一定非常的不友善,缺少亲和力,冷漠而拒人于千里之外……您和CLI之间甚至有代沟的存在:)
命令
====
坦白的说,第一次见到那么老长的一行命令,谁都会毛骨悚然。也许您使用过DOS,您甚至得到这样一种印象:命令先放一边,光是正确的输入目录、文件名都得让人抓狂,DOS还不区分大小写,如果像Linux一样区分大小写,那多可怕啊!!!
其实Linux命令行的补全功能非常实用,假设有这样一个命令:
command path/file
如果只有一个以“c”起始的命令,键入“c”,再按一次“tab”键,系统将自动补全该命令余下的部分。 只要“c” “tab” 两次按键,就可以完成“command”的输入。
如果不只一个“c”起始的命令,那么您可以按两次“tab”键,系统会列出所有符合条件的选项。在这个例子中是列出所有以“c”起始的命令。您进一步输入“o”,如果只有一个以“co”起始的命令(一直输入,直到项符合条件的选项唯一),您再按一次“tab”就可以补全它。
路径和文件名也可以通过“tab”键来补全。还有一种“遍历补全”的方式,如果您的文件名是中文,而您不想切换输入法;甚至您的文件名中出现乱码,无法输入,这时“遍历补全”就可以大显身手了。这部分内容我们稍后再谈:)
现在我们来了解命令的语法结构,这一部分相当重要,您可得看仔细。
我们知道,任何语言都有特定的语法结构,以我们的中文为例:
“我们郑重地推荐您Ubuntu/Linux!”
这个句子的语法非常简单,但是却是大部分的命令行语句采用的句型。让我们看一下,这个句子都有哪些部分:
“我们”是主语,Linux命令的执行者只有一个,所以主语一概省略。
“推荐”是一个动词,作为谓语而存在。Linux命令中,这一部分是必须的。这一部分也是不同命令之间最根本的区别方式,所以它通常作为命令名,写在最前面。键入“date”命令,您可以查看当前的时间日期。(应用程序->附件->终端)
“郑重的”是一个状语,用来修饰谓语。与之相对应,Linux命令可以使用参数来精细调节程序的行为。为了与命令的操作对象相区别,参数前通常要加“-”或者“--”符号。原则上,在命令名之后,参数的位置可以随意,但是为了养成一个良好的习惯,我们建议您在命令名后直接跟参数。
“您 Ubuntu/linux”这两个部分都是宾语,它们是命令的操作对象。大部分的命令只有一个操作对象,也有一些命令是双宾语结构的,具有一个直接宾语和一个间接宾语。比如“拷贝”这个命令 cp(copy)
分隔符,我们的汉语是象形文字,没有分隔符。但是所有的拼音文字中都有分隔符,来区分单词。Linux命令中同样使用空格作分隔符。
cp a /home 表示把当前目录下的a文件,拷贝到/home目录下。(命令的不同部分使用空格分隔,连续的空格视为一个空格)
上面的那句话,翻译成Linux的命令,就应该是这个样子的:
推荐 --郑重的 您 Ubuntu/Linux (按照传统,“-”后跟简写为单个字母的参数,“--”后跟完整单词的参数。不过也有例外:)
呵呵,Linux的命令也蛮简单的吧?
Linux程序、进程
===============
或许您会这样想,Linux命令的句型确实不难,但是那么多命令,我怎么知道它们都是作什么的呢?而且不同的系统中,可以使用的命令似乎也不太一样,这真让人困惑……
其实Linux的命令,是运行Linux系统中安装的程序。只要您安装了程序,您就可以通过命令来运行它,并且可以使用参数来精细的调整它的运行状态。也可以通过点击启动图标来运行,不过启动图标不能够方便的调整参数,并不是很方便。
举一个例子:
mplayer -shuffle -loop 3 -playlist mymp3.list
可能您运行上面命令,系统会提示您“无法找到命令”,那是因为您没有安装mplayer这个程序。mplayer是我见过的支持格式最多的播放器,几乎任何已知格式的多媒体文件,都可以使用mplayer来播放。它包含一个图形界面的前端,您可以在菜单中找到它,鼠标点击运行;也可以通过执行命令来运行它的命令行版本。
如果您的系统中没有mplayer播放器,我们建议您安装一个。关于程序的安装,请参阅 程序安装。
在上面的命令中,mplayer调用了mplayer播放器程序。参数 -shuffle表示随机播放,-loop表示循环播放,后面的3为循环的次数,如果为0,则一直播放。-playlist表示播放列表中的曲目。我们可以把mp3的路径放到mymp3.list文件中,让mplayer来播放它们。
进程为正在执行的程序,是程序在内存中的镜像。
好了,现在您已经了解了Shell、命令、程序、进程的概念,您基本上也就了解了Linux(Linux系统真是非常简洁,十分容易理解:)。
但只知道这些,您并不能顺畅的使用它。所以接下来的章节中,我们来进一步介绍它的细节。