Linux每日一讲---Shell纳须弥1
-
== 本贴欢迎转载,转载请注明出处==
《维摩经不思议品》有曰:“若菩萨住是解脱者,以须弥之高广,内芥子中,无所增减。”就是说偌大一个须弥山也可以塞进Linux的这个菜籽壳(Shell)里。那么Shell到底是个什么东东,它里面到底塞了些什么?我们还得从终端说起。最初的计算机由于体积庞大,价格极其昂贵,因此,一台计算机一般是由多个人同时使用的。每个用户操作的设备本身没有计算能力,通过串口与计算机相连以获得计算机的运算支持。这种设备通常由显示器,键盘和简单的支持电路组成,我们称之为终端。最早的终端甚至连显示器也没有,它就是一台电传打字机(Teletypewriter),简称TTY,所以终端又被称之为TTY。另外计算机本身还带有一个控制台(Console),它具有终端所有的功能,有时候也笼统的称之为终端。他们实际上是有区别的。计算机启动的时候,所有的信息都会显示到控制台上,而不会显示到终端上。也就是说,控制台是计算机的基本设备,而终端是附加设备。随着计算机技术的高速发展,个人计算机普及,上述的这些终端设备逐渐退出市场。终端(TTY)和控制台(Console)也从硬件的概念演化为软件的概念。
现在说的终端是用计算机的软件来模拟以前硬件的方式。比如在linux中,你用alt+f1 ~ f6 可以切换六个虚拟终端,就好比是以前多人公用的计算机中的六个终端设备,这就是为什么叫“虚拟终端”的原因。在Linux中控制台(console)与虚拟终端(tty)已没有什么分别,而在UNIX类的系统中还是存在区别(FreeBSD通常第一个虚拟终端tty1为控制台(console))。
上世纪八十年代初期,产生了一个 Unix(Linux是一个PC环境下的类UNIX系统) 的图形子系统-- the X Window System。如果你现在还以为是微软创造的图形操作系统,请在你的Windows中点击“开始”按钮,点击“运行”,输入“shutdown -s”以获取更多信息;P 。X Window 中一个很大的好处是可以通过终端模拟程序运行多个虚拟终端。这样的终端模拟程序有很多,比如有把年纪的xterm和rxvt,目前广为使用的是konsole和gnome-terminal,它们分别是KDE和GNOME自带的终端。
在Linux的图形模式我们可以使用Ctrl+Alt+F1~F6来切换到tty1~tty6的任一个虚拟终端,在虚拟终端里使用ALT+F1~F6互相切换,使用Alt+F7切换回图形界面(X Window)。如果在X Window中使用终端的话,就要用到上面提到的终端模拟程序,比如:Ubuntu中文版Linux里点击应用程序->附件->终端就会启动一个小窗口,它其实就是gnome-terminal,试着在打开的窗口中输入:gnome-terminal。看,又跳出个相同的窗口。
我们讲了半天的终端,它其实就是那个通常黑不溜秋(也不一定)的命令行(CLI--Command Line Interface)界面。而要在终端里运行程序就要用到那个大肚能容的壳-Shell了。Shell 是操作系统的一部分,用来与用户打交道,并且可以用来协调各个命令。
第一个真正的壳-- 'sh',也叫'Bourne shell',诞生于 1975 年,作者是 Steve Bourne 。很快,就有人效仿弄出一堆名字怪异的壳,'ksh'、'zsh','csh','tcsh'等等。在 Linux 中,标准的壳叫'bash'(bash的意思不是要“痛击”那些名字怪异的壳,而是the GNU Bourne-Again Shell (意思是GNU这个怪胎又弄了个Bourne壳))。这个壳功能实在强大。强大到你都不清楚自己是谁的时候,它会告诉你:P ,真的。试着在命令行输入:whoami (Who am I 我是谁?)
tony@tony-desktop:~$ [b]whoami[/b]
[b]tony[/b]
tony@tony-desktop:~$事实上现在的Linux可以让你启动后直接进入X Window(图形界面),象windows一样在图形界面下处理事务,最后在X-Window下关机。人们说命令行操作已经落伍了。实际上如果你用Linux而不懂Shell,就象开车只会用1档一样。最初看起来,简单直接,大多数情况下也管用。但速度慢,而且无法真正体验驾驶的乐趣。Linux中的命令可以向搭积木一样互相组合,短短几行命令可以完成极其复杂的工作。那时你就是一大堆门外汉吹捧的“Linux 高手”了。为了早日达到“高手”的境界,我们接下来几天继续来学习这个古怪的壳-shell。
[[i] 本帖最后由 digitalsatori 于 2007-9-3 19:46 编辑 [/i]]
-
so interesting!