命令行是你的至交好友

  命令行既可以成为你的至交好友,又可能成为你最大的敌人。它关键取决于你怎样用它,以及用它来做什么。如果你还是像大部分人一样畏惧使用命令行界面,那么这篇文章定会让你受益匪浅。

命令行界面?

  是的,它是在黑色屏幕上的白色(或者绿色)的显 示区域,是神秘的文字流和奇怪的命令执行的地方。我知道很多大师级的程序员从来不使用命令行界面;然而,我也知道一些初级用户用命令行来做所有的事而不是 用图形界面。他们控制应用程序去浏览网页和文件系统,查收邮件,查看图片和编辑文字。他们甚至看youtyube视频和查看PDF文件都不使用图形界面!

  最好的工作流程是取决于个人的。有些人倾向于图形界面,其他人则钟爱于命令行。

术语

  刚刚接触Unix或者Linux的人在面对诸如终端,控制台和shell时是比较困惑的。

  从用户的角度来看,它们之间似乎是没有太大区别的,但事实上,用户是使用控制台来连接终端来查看运行在计算机上的脚本。

  在过去的时候,这三者是独立的硬件。控制台无非是一个显示器和一个键盘;它没有计算能力。它通过一个串行接口去连接终端,应用最广泛的是RS-232接口。

  终端就像大型主机的界面。它一般具有计算、网络通信或进行其他特殊连接,如与大型主机连接的能力。终端也提供了对系统的管理者权限,这也是它为什么总是被 关在小黑屋的原因。被雇用者使用连接到这些终端的控制台进行工作,但是却无法获得大型主机的管理者权限。控制台与终端最终合并为一个单独的设备,最好的例 子的就是现代linux发行版中仿真的虚拟机终端。

  shell就是一个可以读取用户输入,然后在屏幕输出结果的程序。一个shell可以是基于字符的(像CLI),或者是基于图形的(像Windows的 GUI)。今天,shell已经不仅仅是用户与系统的接口,他还肩负着管理进程,窗口,应用程序,命令,以及系统的其他方面。

  shell解释执行命令行中输入的命令,用户也可以将命令组合起来写成一个脚本。现代的shell拥有自己的脚本语言,这提供了执行复杂任务的能力。

  大多数现代的Linux发行版,如同Mac OSX一样,使用一个shell,BASH(译注:默认的,想用什么自己换)。Solaris和OpenIndiana默认使用Korn Shell,一个BASH的变种。请注意这篇指南主要讲的是BASH。

让我们说说 BASH

  BASH 代表 Bourne Again Shell。它被作为 Bourne Shell 的新版本于1989年发布,之后成为了 Unix 系统的默认 shell。它由斯蒂芬·伯恩(Stephen Bourne)编写,用以取代 Thompson Shell。老版的 Bourne Shell 至今仍工作在一些 Unix 系统中。通常你可以用 /bin/sh 找到它。总之,尽管 Bourne Shell 在新的 Linux 发行版中 已经为 BASH 取代,/bin/sh 和 /bin/bash 都能被 BASH 运行。

BASH的提示符

  你永远都会碰到BASH的提示符。它是一个贯穿BASH及其历史的东西。如果篇幅允许,我们可以用所有篇幅讲讲如何按自己的希望配置BASH的提示符。但是,我们只会在这个指南中提到一些基本的东西。

csaba@csaba-pc ~/Personal/Programming/NetTuts$

  我的BASH提示符就像上面那个样子。 第一个词csaba是我的用户名,后接@和我的主机名称,最后是当前的文件夹。~这个字符代表了用户文件夹,对于我来说是/home/csaba。整行以$结尾,在$后面输入的东西是我想shell执行的命令。

  当然,这仅仅是一个简单的例子。你可以放更多的东西进提示符中。来看看更多的例子吧。

  PS1,PS2,PS3和PS4是BASH的特殊变量,它们控制着不同类型的提示符(例如PS2是一般使用于命令行里较长命令的换行提示信息)。我们在这篇指南中只用到PS1。你可以用下面的命令查看你的PS1变量。

csaba@csaba-pc ~/Personal/Programming/NetTuts $ echo $PS1 \[\033[01;32m\]\u@\h\[\033[01;34m\] \w \$\[\033[00m\]

  输入命令echo $PS1,然后你就看见了我的PS1变量。在BASH中,我们将$到变量名称前就可以得到这个变量的内容。这个echo命令仅仅会输出它接到的参数。我们给echo的参数是变量的值,所以它会输出这个变量的值。

  输出代表着一种格式。\[\033[01;32m\]表示绿色,\u表示当前用户的用户名。\h表示主机名,\[\033[01;34m\]表示蓝色,\w是当前目录,\[\033[00m\]是将文字后续输入的文字置为高亮灰色。通过下面的屏幕截图你能够更好地理解结果。

  以“\&;开头的特殊字符具有特别的意义。反之“\&;标识后面的字符是一个转义字符(比如颜色代码)。下面的内容是从BASH官方手册中引用的,你可以在BASH命令中使用的特殊字符的完整列表:

操作目录和文件

  在命令行环境中,每个人都要做的一件事就是操作文件系统,创建,删除,复制和移动文件系统对象,并且执行命令。这对你来说可能已经是家常便饭,然而,还是让我们来看一眼:

csaba@csaba-pc ~ $ mkdir ~/tmp/NetTuts csaba@csaba-pc ~ $ cd ~/tmp/NetTuts/ csaba@csaba-pc ~/tmp/NetTuts $ mkdir ./AnotherDir csaba@csaba-pc ~/tmp/NetTuts $ mkdir ./SecondDir csaba@csaba-pc ~/tmp/NetTuts $ touch ./SecondDir/aFile csaba@csaba-pc ~/tmp/NetTuts $ touch ./SecondDir/AnotherFile csaba@csaba-pc ~/tmp/NetTuts $ cd ./SecondDir/ csaba@csaba-pc ~/tmp/NetTuts/SecondDir $ pushd ~/tmp/NetTuts ~/tmp/NetTuts ~/tmp/NetTuts/SecondDir csaba@csaba-pc ~/tmp/NetTuts $ ls -al total 16 drwxr-xr-x 4 csaba csaba 4096 Feb 19 21:09 . drwx—— 7 csaba csaba 4096 Feb 19 21:09 .. drwxr-xr-x 2 csaba csaba 4096 Feb 19 21:09 AnotherDir drwxr-xr-x 2 csaba csaba 4096 Feb 19 21:09 SecondDir csaba@csaba-pc ~/tmp/NetTuts $ popd ~/tmp/NetTuts/SecondDir csaba@csaba-pc ~/tmp/NetTuts/SecondDir $ ls -al total 8 drwxr-xr-x 2 csaba csaba 4096 Feb 19 21:09 . drwxr-xr-x 4 csaba csaba 4096 Feb 19 21:09 .. -rw-r–r– 1 csaba csaba 0 Feb 19 21:09 aFile -rw-r–r– 1 csaba csaba 0 Feb 19 21:09 AnotherFile csaba@csaba-pc ~/tmp/NetTuts/SecondDir $

逐句解释:

临行之前,面对太多的疑问和不解:

命令行是你的至交好友

相关文章:

你感兴趣的文章:

标签云: