分类: LINUX
2010-01-04 15:27:42
摘自《Ubuntu部落》
可能您早已能够熟练的使用 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 是大小写敏感的系统,所有的命令、路径、参数、变量……都区分大小写使用 TAB 键补全命令,无论任何时候,多按几次 TAB 总会有所帮助。
Shell 的功能键能够协助您更高效的编辑命令,请熟悉其键绑定,尽量使用它。
命令由 命令名 、 分隔符 、 参数 、 操作对象 构成
命令名
标识命令的功能,例如 cp(copy)、mv(move)、rm(remove)……有些命令包含一些子命令,您可以认为它的命令名由两个单词构成,
例如“apt”软件包管理系统:
apt-get install 安装一个软件 apt-get remove 删除一个软件
分隔符
通常为空格,多个连续的空格视为一个空格,下面两个命令相同:
cp a b cp a b
有一些特殊符号也属于分隔符,例如管道 | 、复位向 > 、 >> 、 < 、
后台运行 & 、序列执行 && 、 ; 。使用这些符号时,您不需要再使用空格作为分隔符,例如:
ls -al|less
写为以下形式,是为了让您更容易的阅读它:
ls -al | less
参数
精细调节命令的行为,以 – 引导,通常为参数名的首字母。许多软件都可以使用 -h 参数来阅读使用说明,例如:
apt-get -h
也可以使用参数的全名,一般以 — 引导,例如:
apt-get --help
多数命令中,使用 – 引导多个字符,将会被视为多个参数,例如:
apt-get -help
系统会解读为以下命令
apt-get -h -e -l -p
少数命令的参数,不需要以 – 引导,或者使用 – 引导参数全名,例如:
ps aux /etc/init.d/gdm start mplayer -loop xxx
需要对多个对象进行操作时,可以使用空格分隔符将它们隔开:
touch 1 2 3 4 5 6
使用空格分隔的多个对象,视为一个整体,作为命令的一个操作对象:
mv 1 2 3 4 5 6 /home/
这个命令把“1 2 3 4 5 6”作为一个操作对象,移动到另一个操作对象,“/home/”目录
递归 表示在子层次中重复相同操作。例如递归复制某目录,不但复制当前目录及其下的所有文件;而且对当前目录的子目录,也进行递归复制的操作。
格式约定
使用 [] 表示可选项,实际输入为方括号中的内容,例如
ls [-al]
ls 是必须的,参数不需要以方括号括起来。
使用 <> 表示必需项,实际输入为尖括号中的内容
使用 | 表示 或 ,以 | 分隔的项目不能同时使用,例如
tar [-z|j c|x vf] <归档文件> [源文件]
参数通常紧跟命令名,除非必要,在命令格式中,我们通常省略它们