專家專訪:Linux命令行的點點滴滴
雖然很多系統管理員對于Linux操作系統已經很熟悉了,但是他們可能不會在熟悉的圖形用戶界面(GUI)之外的領域冒險。而William E. Shotts Jr.認為這一行為是錯誤的,他是《Linux命令行:完整介紹》一書的作者。
作為一名超過15年使用年齡的Linux熱心用戶,Shotts希望更多的用戶發現命令行的潛在價值,而不只是局限在GUI下方。在這一次的專家問答中,Shotts解釋說,在命令行中敲擊幾次鍵盤將會進入Linux的高級功能,讓管理員可以在更少的時間內更有效地完成復雜的任務。
記者:那么對于那些對命令行還不熟悉的人來說,什么時候才該使用它呢?
William E. Shotts Jr.:一般來說,命令行是一門很深的學問。一般的Linux安裝將擁有一千或者更多個用戶可以運用的命令行程序。另外,shell有大量的功能,這個程序從用戶那里接收命令。要學會所有這些有些難度,尤其是對于那些外來的Windows用戶來說。
我寫這本書的目的就是解決這個問題。經過調查在線學習資源的可用性,不管是設想的先備知識數量還是以我叫做“系統”方式對待材料的書籍或網站數量都讓我深受打擊。我的意思是說這本書的編寫是以其性能的列表為基礎。以這種方式編寫的文件只涵蓋一個系統獎參與錢的所有程序性能,而不是以一個用戶真實體驗它的方式為基礎。
bash手動頁可能是這一類的最極端例子。雖然它以有邏輯和有組織的方式涵蓋了shell的每個特性,它對于一個新用戶來說就是完全不知所云。我通過按照先備知識嘗試顯現新用戶帶到桌面上的內容并且基于此以一小串步驟提高來著手處理這個問題,一次顯示一個特性并解釋它和大局的關系,有時候是與起源和歷史的關系。
另一個問題是完整性。其它的書和資源往往只關注于一個程序或一組程序。我想要告訴用戶如何在命令行中“生存”,講解關鍵特性工作的方式并闡釋你可以用它執行的多種多樣的任務。
如果我說命令行的學習很容易,那我一定是在撒謊。它并不容易。命令行界面的有些部分極其晦澀。但是學習它所花費的精力會是一段美好時光。它讓Linux環境更加強大實用。學習命令行的另一個好處:它是一個持久的技巧。不像其它很多其它幾個月就發生變化的計算機技巧,命令行具有持久力。很可能你今天學的內容10年后仍然是相關的。
記者:在當今世界,似乎更強調流線型的GUI。那么使用命令行的好處是什么呢?
William E. Shotts Jr.:有句老話這么說,“圖形用戶界面讓簡單的任務容易執行。命令行界面則讓艱難的任務可能執行。”我對GUI并沒有異議。我這本書是使用雷鳥郵件客戶端(Mozilla Thunderbird)在Ubuntu桌面上編寫的。
但是這產生了一個GUI方面的問題。你會受限于設計者的想像。如果設計者沒有預見到你正設法解決的問題,那么很有可能這個圖形程序可能會不適合你。以和Linux行事相反的方式完成它。Linux作為一個類Unix的操作系統,它沿襲了Unix的理念:你會得到一個小工具的集錦,你可以用有趣且實用的方式連接它們來解決你的問題。用命令行解決問題通常不會很輕松,但是通常來說,這至少是可行的。
有時候你還會遇到的另一個必須處理的問題就是問題規模。我曾經開玩笑說,當今的計算機似乎不是由電力提供能源了,看上去它們是由鼠標的“晃動”行為(所有的指向和點擊)供能。GUI程序通常擅長于執行小任務,比如從一個位置復制一個文件到另一個位置。但是如果說你的問題更大,比如“復制屬于特定用戶的所有HTML文件,但是更新該文件到另一個文件夾,哦,并且單獨壓縮每個文件”。你可能會愿意用GUI來處理少量的文件,但是如果有上百個或都上千個文件又怎么辦呢?這一類問題就是命令行真正擅長解決的。
記者:對于那些承擔管理Linux服務器任務的人來說,有沒有一些被忽略的強大命令呢?
William E. Shotts Jr.:在我的書中,我設法找到Unix“可移植性”論證。這個論點是說,每個腳本都應該能在任意類Unix系統上運行。這已經讓一些管理員編寫所有內容就像仍然仿佛仍在90年初使用shell一樣,而不是完全利用bash的完整功能,bash是大部分Linux發行版中可見的默認shell。我認為很多Linux命令行用戶,甚至是經驗豐富的用戶也不知道shell支持數組,可以基于正則表達式執行測試,并且可以完成多種整數數學操作。
記者:在網絡化的商業環境中,Linux相比于其它操作系統有什么優勢?
William E. Shotts Jr.:Linux的技術優勢眾所周知,已經成為談資很多年了。
如Linux和免費開源軟件(FOSS)倡導的,我是因為哲學原因受到Linux的吸引。這也是我早期接觸計算機的結果。我在70年代中期***次進行計算機工作,當時我還是雪城大學設計系的學生。我在穿孔卡上寫程序,讓一臺IBM System/370大型機在繪圖儀上產生圖畫。大學畢業后,我擁有了一臺微型計算機,然后開始在家里做相同的事情,只是不需要穿孔卡了。在我所成長的時代,世界上所有的計算機都由大型企業和政府控制,所以“個人”計算機的發展確實非常了不起。當然,現在計算機隨處可見,我們把這看成是理所當然的。
但是對我來說,擁有計算機的一大好處是能夠控制它。你可以編寫你自己的軟件,如果你愿意,且你的計算機沒有秘密或者不可告人的安排。如果你留意,那么你可以了解它的一切。這樣的自由對于個人是實用的,對于企業也是有益的。如果你想要對你的命運有所控制,至少是在你的計算機工作的領域,那么你會想要使用一款你可以控制的操作系統,比如Linux。
記者:商務環境中基于Linux的系統有什么好處?
William E. Shotts Jr.:Linux中你能獲得的控制權帶來了很多有力的優勢。比如,你可以編譯定制內核,按照你的特定性能需要調節它們。你還可以在多個廠商中自由選擇支持來源,或者如果你有足夠的能力,你也可以內部完成。如果某個具體的軟件不合你意,你也可以更改它或都請別人來做這項工作。
自由選擇權還在成本上。在Linux世界中,用戶不只是被動消費者而是參與者,而參與者常常涉及到時間和精力。
記者:在較新版本的Linux中,哪些新命令可能還沒有出現在一般管理員的工作中?
William E. Shotts Jr.:這個問題很難回答。一直都有新東西出現。如果你經常去Sourceforge逛逛,你會看到每天都會產生很多關于現在程序的新軟件和更新。
除了正在開發的新程序,我希望用戶學習并探索他們已經熟悉的程序。正如我之前談到的bash,很多你已經使用過的普通程序可能會有新的或者還沒被發現的功能,聰明的管理員會利用它們來解決日常的任務。