前言
Slackware Linux操作系統是一個基於Intel構架計算機上的強大平台。它的設計目標是穩定、安全,同時可作為高端服務器和強大的工作站。
這本書的目的是指導如何你開始使用Slackware Linux操作系統。這並不意味著簡單面面具到地覆蓋該發行版的所有細節,而是顯示它能作什麼並告訴你操作該系統的基本知識。在你有了Slackware Linux的使用經歷後,我們希望你能將本書作為手邊的參考。我們同樣希望當你的朋友們問到“你所運行著的酷斃了的Slackware Linux操作系統”時你會將本書借給他們。
然而這部書也許不是符合你口味的小說,我們依然會試著盡量使它有趣。運氣好的話,我們也許會理出一個電影主題,當然我們也希望你能從中學到東西並覺得它有用。
好了,請看下文。
書中使用的約定
這本書是用SGML用DocBook 4.0 DTD寫成的。因此,我們使用內建DocBook元素來表示文件參考,命令參考,以及文件內容參考。這為書中的所有方面提供了統一的形式。在你繼續以前你需要熟悉一下一些我們的約定。
任何時候我們提到你要運行一條命令時,它將看起來像這樣:
command
在很少見的場合,一條命令可能會超過本書一行的長度。當那種情況發生時,我們將該命令換行到下一行並使用一個反斜槓標明命令繼續。這是一個例子,來自書中稍後的內容:
ifconfig eth0 192.168.1.10 broadast 192.168.1.255 \
netmask 255.255.255.0
文件名和目錄將被提及貫穿於全書。它們將看起來像這樣:
filename
directory
許多屏幕的命令輸出和配置文件的內容也同樣在書中使用到。它們將以這樣的形式出現:
command output
許多時候當我們列出你將運行的命令時,我們會以一個示例命令符來顯示它們。當一個命令需要以普通用戶的身份來運行,我們將顯示美元符($)為命令提示符。當一個命令需要以根用戶的身份來運行,我們將顯示井號(#)為命令提示符。
網絡硬件
就像用計算機做其他大多數有趣的事情一樣,要讓計算機連接到網絡上,你就必須使用一些特殊的硬件。
你需要一個NIC(Network Interface Card 網卡)來連接到一個LAN上,或者一個Modem來連接到Internet供應商那裡,或者你兩者都需要(也可能每種都要幾個,甚至都不需要)。
為了配置的目的,我們將這些硬件分成兩類:PCMCIA(本本族專用的)和非PCMCIA。使用這樣不對稱的分類的是有原因的,因為目前發布的內核都不支持PCMCIA,你只能通過一個另外的包(比如內核模塊)來支持它,其中包含必要驅動程序和一些配置管理軟件。而其他的硬件則可以由發布的內核來直接支持。
netmods
內核支持的網絡設備的驅動在netmods包中(slackware/n3/netmods.tgz)。如果你沒有安裝這個包,那你現在就應該把它裝上。(關於包的安裝請參見第十六章)
開機時要裝載的內核模塊保存在/etc/rc.d目錄下的rc.modules中。默認的rc.modules文件包含有一個“Network device support”的部分。如果你打開這個文件察看這一部分內容,你就會發現代碼首先檢查/etc/rc.d下的rc.netdevice文件。如果 setup在安裝過程中成功的檢測到了你的網絡設備,這個文件就會被創建。一般如果它存在,那麼你很可能不會來讀這不分內容(呵呵,有沒有悖論的感覺?);反之,繼續讀吧。
在那個“if”塊下面是一系列的網絡設備和modprobe命令,但是每個都被注釋掉了。找到你的設備,然後去掉相應的modprobe的注釋,最後保存文件。現在用root運行rc.modules就會裝載你的網絡設備的驅動程序了(當然同時也會加載其他沒有被注釋掉的模塊)。注意有些模塊(比如 ne2000的驅動)需要參數,你必須選擇好有正確參數的那行。
PCMCIA網絡設備
PCMCIA網絡設備應該比其他設備更加簡單。首先你必須確保安裝了pcmcia包(slackware/all/pcmcia.tgz)。(關於安裝可以參見第十六章。)安裝過程中,pcmcia包會在/etc/rc.d下創建一個rc.pcmcia文件,同時創建一個/etc/pcmcia目錄,並且把驅動安裝到/lib/modules//pcmcia目錄。pcmcia包Cool的地方在於它會自動檢測設備的插入和卸載。你應該可以在插入設備的時候聽到系統發出 “滴”的一聲,這表明需要的模塊被載入了。如果你卸載了這個設備,則相應的模塊也會被自動的釋放。
不幸的是,如果你編譯了一個新版本的內核,你很可能需要重新編譯pcmcia-cs來更新這些驅動。當然,源代碼是包含了的;在source/a/pcmcia目錄下有源代碼,腳本以及相關的幫助文檔。
網絡工具
ifconfig
現在你的內核總算可以和你的網絡硬件對話了,剩下的就是軟件需要一種方法告訴內核把信息傳過來,如此等等。我們需要對接口進行配置。我們需要ifconfig(8)。
學習ifconfig的最好方法恐怕莫過於實例。你可以看看rc.inet1文件(在rc.inet1節中有介紹)來學習一下。下面舉個最簡單的例子:
# ifconfig eth0 192.168.1.10 broadcast 192.168.1.255 \
netmask 255.255.255.0
該行命令啟動了eth0(第一個網卡,對於令牌網使用tr0,ppp使用ppp0,……),並設置其IP為192.168.1.10,其廣播地址為 192.168.1.255(整個192.168.1子網),其網絡掩碼為255.255.255.0(表示IP前面三個部分用來標識網絡,最後一個部分,即.10,用來標識主機)。除非你要做一些特別的事情,你通常都可以使用IP的前三個部分加上一個255來表示廣播地址。通常掩碼設置成 255.255.255.0都是沒錯的。其實如果你要做一些特別的事情,你基本上在這方面已經有足夠的知識了,於是這些話就基本上成了廢話。
ifconfig也可以用來查看當前的網絡配置。當你不帶參數的運行這個程序,你就能得到你當前所有的網絡接口及其配置。
route
內核通過維護一個路由表來決定網絡數據該發向哪裡。這裡我不打算仔細探討細節方面的內容,只是告訴你可以使用/sbin/route(8)來查看當前的路由表。route -n將會用IP地址代替所有的主機名稱,這在DNS服務器出故障或者你對主機名不感興趣的時候很有用。幸運的是,如果你進行了一個簡單的網絡安裝過程(大多數人都做過),那麼2.2的內核自動幫你創建一個必要的路由表項。
netconfig
netconfig是Slackware安裝程序的一部分,但就像大多數安裝程序的組件一樣,它可以單獨運行。netconfig很直觀,它會引導你建立一個基本的網絡連接。當你對網絡配置的那些rc文件不熟悉的時候,這個工具非常有用。運行netconfig的時候,你會看到下面的屏幕提示:
下一步,netconfig會提示你輸入計算機的主機名和域名。一般你可以隨便設置這兩個名字,除非你設置的機器是一台服務器或者是一台很多人都會訪問的機器。然後,netconfig會問你如何分配IP:使用靜態IP(static IP),DHCP或者僅僅環路(loopback)就可以了。
如果你的機器不與網絡連接,那麼直接選擇環路就可以了。如果你的計算機要和一個大學或者一個大的辦公網絡相連,一般你應當選擇DHCP。其他情況則選擇靜態IP。如果你沒有選擇靜態IP,那麼設置工作到現在已經完成了。否則你還要接著輸入計算機的IP地址、網絡掩碼、廣播地址以及DNS服務器地址。 netconfig會告訴你如何得到所有的這些數字的。
pppsetup
Slackware包含了配置撥號連接用的pppsetup。該軟件包位於N軟件系列中的ppp.tgz中。pppsetup使用的界面和setup 程序相同。如果你不記得怎麼使用這個界面,你可以參考前面第三章的“setup程序”一節。pppsetup通過一系列的問題來為你配置好 /etc/ppp目錄下的幾個配置文件。以root運行pppsetup,我們來看一下這些問題:
第一個問題是ISP電話號碼,你同時應該將撥號方式寫在前面。大多數人使用音頻撥號(tone)。如果你ISP的號碼是555-1013並且使用音頻撥號,那麼你就應該在對話框輸入atdt5551013。
如果你的電話線需要接電話,而你希望在上網的時候屏蔽掉外來的電話,那就應該輸入類似atdt*70,5551013的東西。
注意逗號不可省略,它會在*70後維持一個1.5秒的停頓,然後再撥號。沒有逗號是不行的。(譯注:不知道在國內到底有沒有用)
下一步,選擇Modem的位置。如果你知道在Windows下使用的是哪個COM接口,你在這裡選擇同樣的就可以了。否則你可能要做些嘗試。推薦的辦法是從ttyS0開始往下逐個嘗試。
現在你應該用上你的ISP給你的信息了。其實很少有ISP使用回撥,所以你一般都可以選擇“NO”。回撥是指你撥了ISP以後,他們撥你的號碼讓你登陸。(譯注:電信就不指望了,真這樣的話電話費可以省了:P)
如果你確實要使用回撥,那你就應該選擇“YES”。然後配置程序會提示你輸入你的電話號碼、登陸的用戶名以及密碼。你可以先不輸入用戶名和密碼。最後,你還要輸入你的ISP使用的認證方式。如果他們使用CHAP或者PAP,那麼選擇“YES”。你以後還會需要配置他們,這個一會再說。如果ISP不用這兩個,那麼選擇“NO”,然後參考下面的“Chat腳本”那個部分。
第七章 引導
引導你的Linux系統的過程有時候簡單,有時候復雜。很多用戶在他們的計算機上安裝Linux僅此而已。他們只需打開電源,系統就准備好並開始使用。然而,對於其他人會因為特定的任務而使用另外的操作系統,因此他們需要機器上兩個操作系統均可訪問。
這一節包含了使用LILO和Loadlin,Slackware包含的兩個引導器。同時也說明了某些典型雙系統引導情況和如何開始設置。
LILO
Linux Loader或LILO,是在Linux系統中使用的最流行的引導器。它易於配置並很容易地用於引導其他操作系統。
Slackware Linux自帶了一個稱為liloconfig的菜單驅動配置工具。這個程序在安裝過程中首次運行,但你可以隨後通過在命令提示符下輸入liloconfig來調用它。
LILO從/etc/lilo.conf文件讀取它的設置。不是每次啟動都會讀取它,而是每回在你安裝LILO的時候讀取。每次你對配置做了修改都必須重新安裝LILO到引導區塊。liloconfig將幫助你生成配置文件這樣你就可以為你的系統安裝LILO。如果你偏好手動編輯 /etc/lilo.conf,那重新安裝LILO只需在命令提示符下輸入/sbin/lilo。(編程入門網)
你首次調用liloconfig時,他看起來將會像是這樣:
插圖 7-1.liloconfig初始屏幕
如果這是你第一次設置LILO,你最好選擇“simple”。另外或許你會發現“expert”會更快如果你熟悉LILO和Linux的話。選擇“simple”將開始LILO的配置。
如果內核幀緩沖支持已編譯到你的內核中,liloconfig將詢問你想使用哪一種視頻解析度。該解析度也會被XFree86幀緩沖服務器使用。如果你不想讓控制台運行於一個特定的視頻模式,選擇normal將繼續使用標准的 80x25 文本模式。
插圖 7-2.Liloconfig詢問使用哪種視頻模式的幀緩沖
LILO的配置的下一部分是選擇它的安裝位置。這或許是最重要的步驟。下面的列表說明了安裝位置:
Root 這個選項安裝LILO到你Linux根分區的開始。這是最安全的選項如果你在你的計算機上安裝了其他操作系統。它確保任何其他引導器不被覆蓋。缺點是如果你的Linux驅動器是你系統裡的第一個驅動器的話LILO將只能從這裡引導。 Floppy 該方法甚至比前面的更安全。它創建一個引導軟盤用於引導你的Linux系統。這將使引導器完全與硬盤隔離,所以當你想使用Slackware時你只需從這個軟盤引導。 MBR 你可以使用這種方式如果Slackware是你計算機上唯一的操作系統,或者如果你想用LILO選擇在你的計算機上的多個操作系統。
注意:該選項將覆蓋任何在MBR上其他的引導器。
在選擇安裝位置後,liloconfig將寫入配置文件並安裝LILO。就是這樣。如果你選擇了"expert"模式你會看到一個特別的菜單。這個菜單允許你改變/etc/lilo.conf文件,添加其他操作系統到你的引導菜單。expert菜單看起來像這樣:
插圖 7-3.liloconfig "expert"模式
無論你的系統(軟件)配置如何,安裝一個可工作的引導器是簡單的。liloconfig讓它的安裝簡單易行。可是,仍然有LILO無法在系統上工作的實例。幸運的是,還有其他選擇。
Loadlin
由Slackware Linux自帶的另一個引導選擇是LOADLIN。LOADLIN是一個DOS可執行程序可以用來從一個正在運行中的DOS系統啟動Linux。它要求Linux內核存在於DOS分區這樣LOADLIN就可以裝載它並正確引導系統。
在安裝過程中,LOADLIN將以一個.ZIP文件的形式拷貝到root的家目錄。沒有LOADLIN的自動安裝過程。你將需要拷貝Linux內核(/vmlinuz)和root的家目錄的LOADLIN文件到DOS分區。
LOADLIN很有用如果你希望在你的DOS分區創建一個引導菜單。一個菜單會被添加到你的AUTOEXEC.BAT文件那將允許你在Linux和DOS中做選擇。選擇Linux將運行LOADLIN,從而引導你的Slackware系統。Windows 95下的AUTOEXEC.BAT文件將提供一個足夠(滿足需要)的引導菜單:
@ECHO OFF
SET PROMPT=$P$G
SET PATH=C:\WINDOWS;C:\WINDOWS\COMMAND;C:\
CLS
ECHO Please Select Your Operating System:
ECHO.
ECHO [1] Slackware Linux
ECHO [2] Windows 95
ECHO.
CHOICE /C:12 "Selection? -> "
IF ERRORLEVEL 2 GOTO WIN
IF ERRORLEVEL 1 GOTO LINUX
:WIN
CLS
ECHO Starting Windows 95...
WIN
GOTO END
:LINUX
ECHO Starting Slackware Linux...
CD \LINUX
LOADLIN C:\LINUX\VMLINUZ ROOT=<root partition device> RO
GOTO END
:END
你需要以Linux設備名來指定你的根分區,就像/dev/hda2或其他的。你始終都可以在命令行使用LOADLIN。你可以以上述例子中相同的形式簡單地使用它。LOADLIN文檔包含了很多關於如何使用它的例子。
第八章 Shell
在一個圖形界面環境下,接口是由一個可以創建窗口,滾動條,菜單等的程序提供的.而在一個命令行的環境下,用戶接口是"shell"提供的,shell解釋命令且通常使電腦上的東西可以運行.在登陸(本章將做說明)之後,用戶會被立即放置到shell程序中,並通過shell來做他們想做的事情.本章將對 shell--Bourne Again Shell(bash),Linux用戶普遍使用的一種shell--做以介紹.如果想得到關於本章的更多詳細的信息,請查閱幫助頁bash(1).
用戶
登陸
當你的電腦啟動之後,你會看到類似如下的字符提示:
Welcome to Linux 2.2.14
darkstar login:
##這一段有關什麼四維通道的翻譯不是很准確
##Hmm.. nobody said anything about a login. And what's a darkstar? Don't worry; you probably didn't accidentally fire up a hyperspace comm-link to the Empire's artificial moon. (I'm afraid the hyperspace comm-link protocol isn't currently supported by the Linux kernel.) No, darkstar is just the name of one of our computers, and its name gets stamped on as the default. If you specified a name for your computer during setup, you should see it instead of darkstar.
恩..沒有人提起過關於登陸的任何事情.那麼這裡的darkstar是什麼意思?不必擔心,你根本沒有偶然的打開一個通向帝國人造月球的四維通道.(恐怕目前linux的內核還不支持多位空間連接協議),darkstart只是你的計算機名字而已,而且他是默認的計算機名字,如果在安裝過程中你給你計算機起了一個名字,那麼darkstart將被你起的名字替代掉.
對於登陸麼...如果這是你的第一次登陸,你將會以root用戶的身份登陸,然後系統會提示你輸入密碼.密碼一般在安裝時候設定,如果你沒有設定密碼那麼只要按enter鍵就可以了.好了--你已經登陸成功了!
Root:超級用戶
root是什麼,又在你的系統上做些什麼?
恩,在Unix和類Unix(如linux)的操作系統裡,有很多使用者所以有了用戶的概念.本章的後面部分將對此做詳細的介紹,你現在僅僅需要知道的是 root是高於其他用戶的一個用戶,root是無所不能,無所不知的,沒有人可以不服從root.所以我們不得不正確的稱root用戶為"超級用戶".更好的是你現在就是root.
是不是很酷?
如果你不確定:是的,那樣的確很酷.但是我們忽略了一些問題,root可以隨心所欲的破壞任何東西.你可以先跳到12章去看看如何添加一個用戶,然後我們以一個普通用戶登陸,回到這裡,繼續我們的學習.為了減小root的破壞力,只有在必要的時候才使用root用戶是一個明智的辦法.
順便一提,你可以很輕易的從任何一個用戶變為root用戶,只需使用su(1)命令.輸入密碼後你將獲得root身份,直到你使用命令exit或者 logout.只要你知道其他用戶的密碼你也可以使用su命令變成其他用戶的身份,比如:su logan,你將使用我的帳號登陸.
命令行
運行程序
##這一段實在翻譯不出來
##It's hard to get much accomplished without running a program; you might be able to prop something up with your computer or hold a door open, and some will make the most lovely humming noise when running, but that's really about it. And I think we can all agree that its use as a humming doorstop isn't what brought the personal computer the popularity it now enjoys.
還記得linux下所有東西都是文件麼?程序也是如此.你運行(不是shell的內部程序)的每一個程序都是你電腦上某個地方的一個文件.你可以通過指明程序的詳細路徑來運行它.
舉個例子,還記得上一節我們使用過的su命令麼?實際上它位於目錄/bin下:/bin/su也可以讓su運行起來.你可能會問為什麼只輸入su也可以運行?我並沒有指明su是在/bin這個目錄下啊?su也有可能在/usr/local/bin這個目錄下,不是麼?shell是怎麼知道su到底在哪裡的呢?答案是"PATH環境變量".大多數shell都會有PATH這個變量,或與之類似的變量.PATH主要由一系列包含可執行文件的路徑組成,當你運行 run的時候,shell會自動到PATH的目錄去尋找那些名字為su的可執行文件,而且只運行它第一個查找的文件.如果你不表明路徑,程序就會按如上的方法運行,如果你的到了一個"Command not found error(無法找到該命令)"的錯誤提示,就意味著你的命令不再PATH的目錄列表裡.(當然了,也可能那個程序根本就不存在).我們將在Bourne Again Shell(bash)一節中更深的討論有關環境變量的問題.
你要記住,符號"."是一個你所在目錄的縮略表示方法,如果你在/bin下,./su也就是一個完整的路徑:/bin/su
通配符匹配
幾乎任何一種shell都存在這樣一種替代或縮寫用的字符,這些字符表示他們所在的位置可以是任何東西字符串.這樣的字符被稱為通配符,最長使用的是 '*'和'?'.一般來說,'?'通常匹配任何單個字符.舉個例子,假如你所在的文件夾裡面有這樣三個文件:ex1.txt,ex2.txt,和 ex3.txt.你想同時把這三個文件(使用cp命令,第十章將做介紹)拷貝到另外一個文件夾,如,/tmp文件夾.如說使用:cp ex1.txt ex2.txt ex3.txt /tmp 這樣拷貝的話好像有些太麻煩.如果這樣的話:cp ex?.txt /tmp就簡單多了,這裡的'?'匹配所有字符,如'1','2','3'或其他的字符.
什麼?你還是覺的這樣很麻煩?你是對的.那樣太駭人聽聞了,我們有勞動法保護我們免做那樣的事情.幸運的是,我們還有'*'.就像我們上面提過的,'*' 可以匹配任意數量的字符,包括沒有任何字符的情況.所以像上面的例子,如果你的文件下面只有那三個文件,那麼可以使用cp * /tmp,一步到位!假如文件下面還有一個叫example.txt和hejaz.txt的文件.我們想拷貝example.txt文件,但是不想拷貝 hejaz.txt文件,這樣可以使用cp example* /tmp.
cp example?.txt /tmp這個命令將只能得到原來的三個文件,因為文件下面沒有匹配'?',所以example.txt將不會被拷貝.
輸入輸出重定向和管道
(下面要講的東西很酷了!)
$ ps > blargh
你知道上面的命令是什麼意思麼?我使用ps命令來查看當前運行的程序,ps命令在第十一章介紹.這個命令沒有什麼酷的地方,酷的是後面的部分" > blargh",這個部分的意思是將ps命令的輸出寫到一個名字為blargh的文件中.但是等等,下面的更酷
$ ps | less
這個命令將ps的輸出通過"管道"傳給less命令,這樣我就可以使用滾屏來看.
$ ps > > blargh
這是第三個最常使用的重定向命令,這個命令中的>>和>基本相同,不同點是>>會檢測並報告blargh文件是否存在,如果存在就在原文件追加新的內容,如果不存在>>會像>一樣創建一個文件.(使用'>'會覆蓋原來的文件)
還有一個'<'操作符,用來從文件中讀入輸入的數據,但是這個符號不經常使用.
$ fromdos < dosfile.txt > unixfile.txt
如果你把他們疊起來的話會更有趣
$ ps | tac > > blargh
這個命令將運行ps,顛倒輸出的每一行然後將結果寫入blargh文件中.你可以疊加更多的命令,但要記住他們的解釋順序是從左到右的.
你可以通過幫助頁bash(1)得到更多的有關重定向的信息.
Bourne Again Shell (bash)
環境變量
Linux系統是一個復雜的怪物,有很多東西你需要明白,這些細節的東西在你和不同程序交互過程中起到作用(一些你可能根本不需要知道的東西).沒有人希望在運行每個程序時都傳遞一些基本的參數,如終端如何使用,計算機名,提示符風格...
所以我們有了一個拷貝機制的環境.環境定義了程序運行的條件,這些條件中有些是可以改變的變量
##這一句也翻譯不好
##The environment defines the conditions in which programs run, and some of this definition is variable; the user can alter and play with it, as is only right in a Linux system.
幾乎所有的shell都有環境變量(如果沒有,那麼那種shell可能不太好用).我們下面將給出一個在命令行下操作環境變量的命令概述.
$ set
只是用set命令時,系統將返回所有的變量和他們的值.像其他的大多數的bash內置,他也可以做一些其它的事情(加參數);你可以查看bash(1)去看更詳細的介紹.下面是我的電腦上set命令的部分輸出.
PATH=/usr/local/lib/qt/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:
/usr/openwin/bin:/usr/games:.:/usr/local/ssh2/bin:/usr/local/ssh1/bin:
/usr/share/texmf/bin:/usr/local/sbin:/usr/sbin:/home/logan/bin
PIPESTATUS=(\[0\]="0")
PPID=4978
PS1='\h:\w\$ '
PS2='> '
PS4='+ '
PWD=/home/logan
QTDIR=/usr/local/lib/qt
REMOTEHOST=ninja.tdn
SHELL=/bin/bash
我們可以看到先前提過的PATH變量,我可以直接用文件名運行任何包含在PATH變量的路徑下的文件.
$ unset VARIABLE
unset將刪除一個變量,包括變量值和變量名,而且是永久性刪除.(不必擔心.除非你那個部分明確的定義,變量可能被其他程序重新定義< Don't worry. Unless it's something you explicitly defined in that shell session, it'll probably get redefined in any other session> )
$ export VARIABLE=some_value
export很簡單,你可以使用他來把環境變量 VARIABLE 的值設為 "some_value";如果VARIABLE不存在則創建,存在將覆蓋以前的值.這樣有些時候並不是很好,比如你想增加一個路徑PATH變量中,你可能要按下面的方法來完成
$ export PATH=$PATH:/some/new/directory
注意到我們使用了$PATH,把一個$放到PATH前面來解釋PATH的值.例如,echo $PATH將返回PATH的值,我的電腦上就應該顯示:
$ echo $PATH
/usr/local/lib/qt/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:
/usr/openwin/bin:/usr/games:.:/usr/local/ssh2/bin:/usr/local/ssh1/bin:
/usr/share/texmf/bin:/usr/local/sbin:/usr/sbin:/home/logan/bin
tab鍵補全
(這裡又有一些很酷的東西了)
1.命令行意味著要打很多字.
2.打字是一種工作.
3.沒有人喜歡工作.
從2,3中我們可以推斷4:沒有人喜歡打字,幸運的是,bash把我們從結論5(沒有人喜歡命令行)中解救出來.
你可能會問bash何德何能?bash除了通配符擴展外,還有一個tab鍵補全的功能.
我們來看看tab鍵補全是如何工作的:比如你想打一個文件的名字,可能他在你的PATH變量的路徑中,你可能將名字完整的打出來,其實你只需要打出文件名不同於其他的文件名的部分然後按tab鍵,bash將自動補全整個文件名.
我們來檢測一下./usr/src 下面有兩個子目錄:/usr/src/linux和 /usr/src/sendmail,我想看看/usr/src/linux目錄下面的東西,我輸入 ls /usr/src/l,然後按tab鍵,bash將把命令補全為ls /usr/src/linux
如果現在有這樣兩個子目錄/usr/src/linux 和 /usr/src/linux-old,如果我輸入/usr/src/l後按tab鍵的話,bash將補全盡可能多的字符,所以我們將的得到這樣的結果: /usr/src/linux.我們可以在這裡停下來,或者我們在按一下tab鍵得到符合目前的字符串的所有路徑,
因此,大大減少輸入的內容(而且因此,人們喜歡命令行終端).所以我說他很酷的!
虛擬終端
當你正在執行某個程序的時候,你發現你又需要做一些別的事情,你可能中斷當前的程序,去做你要做的事情,但是linux不是一個多用戶系統麼?你不是可以同時等錄n次麼?那麼為什麼你只能同時做一個事情那?
你可以同時做多件事情的.我們一台機器不可能有多個鍵盤,多個鼠標和多個顯示器;幸運的是,也沒有必要有.我們不是通過硬件來解決這個問題,那麼這個問題只能由軟件來解決.Linux通過"虛擬終端"簡稱"VTs"來解決這個問題.
你可以通過按Alt和一個功能鍵在虛擬終端之間切換;每一個功能鍵對應一個控制台.Slackware默認有6個虛擬控制台.如,Alt+F2你將切換到第二個終端,Alt+F3是第三個等等.
其余的功能鍵被X sessions占用.每一個X session用戶擁有自己VT(虛擬終端),從第七個(Alt+F7)到最後.當你在X中時,由於Alt+功能鍵可能會沖突,因此我們用Alt+ Ctrl+功能鍵來替換,所以你要從X切換回一個字符登陸界面而不退出X session的話,Ctrl+Alt+F3將切換到第三個控制台.(如果你使用第一個X session的話,可以用Alt+F7將切換回X)
小結
這一章我們討論了用戶,shell,命令行和虛擬終端.你可能可以很順利的使用命令行工作了:運行程序,使用重定向來組合命令等.最後,你應該對root這個超級用戶有一些了解並牢記一直使用root不是一件好事情.