Linux shell腳本 Linux成功的殺手锏
Linux shell腳本或多或少的在影響著很多程序員的工作。有不少的問題都需要我們進(jìn)行深入的解答,接下來我們就先看看有關(guān)Linux shell腳本的問題介紹。并且你會(huì)有所收獲。
Sppence Murray 是 Linux 開發(fā)高手之一,同時(shí)長期以來他一直是 UNIX 的堅(jiān)定支持者。本文介紹的是 Murray 和他在 Codemonks Consulting 的同事在日常的 Linux 開發(fā)以及應(yīng)用服務(wù)工作中用到的基本技術(shù): shell 腳本,相信 Linux 的開發(fā)人員都會(huì)受益于這項(xiàng)有用而且通用的技術(shù)。
Spence Murray 是 Codemonks Consulting 的創(chuàng)始人之一,自從 20 世紀(jì) 80 年代最早在 SunOS 上編寫代碼到現(xiàn)在,一直致力于 UNIX/Linux 的開發(fā)。從那時(shí)起,他曾在 IBM 公司的 AIX、SGI 公司的 Irix 工作,長時(shí)間地編寫跨平臺(tái)的 UNIX 代碼,包括 HP/UX,Irix,Solaris/SunOS,SCO UNIX,各種 BSD,MacOS X,當(dāng)然,還有 Linux。從圖形/視頻設(shè)備驅(qū)動(dòng)程序到 UI 代碼,他什么工作都做過。Murray 編寫的跨平臺(tái)代碼包括 X Window System Xserver 代碼,以及作為 Netscape Navigator 一部分的核心瀏覽器代碼。
Murray 最經(jīng)常使用的 Linux 工具是 vi、bash 和 Emacs。“不論我是在寫 C、C++、Java、shell 腳本,還是 HTML,大部分的時(shí)間我都在這些工具中來回切換”,他說。
Linux shell腳本秘密武器
Murray 認(rèn)為,對(duì)一個(gè) Linux 開發(fā)人員來說,shell 是一個(gè)強(qiáng)大的軟件開發(fā)工具,無論怎么評(píng)價(jià)都不過分。“在我做的每一項(xiàng)工作中都要用到 shell 腳本,不論是快速地閱讀和修改普通文本還是編寫代碼”,他說。“它輕便而快捷,它短小的命令使得來回移動(dòng)代碼稱為一個(gè)迅速而沒有痛苦的過程。作為一名編輯,它很快就會(huì)成為第二本能”。
對(duì) Murray 來說,Emacs 作為一個(gè)開發(fā)工具出現(xiàn)的晚了一些。“在 90 年代早期,我嘗試使用 Emacs 作為一個(gè) IDE,并很快就轉(zhuǎn)換門廳。Emacs 非常強(qiáng)大,在那些日子里,我會(huì)一直開著一個(gè) Emacs 窗口,經(jīng)常打開幾十個(gè)源文件,每個(gè)都有我編輯的上下文、使用 gdb 的調(diào)試會(huì)話以及在不同的源目錄下運(yùn)行的 bash 腳本。有很多關(guān)于 Emacs 的資料,可以說,這是個(gè)可怕的工具...再者,您可以在任何您想要花時(shí)間去做開發(fā)的系統(tǒng)上運(yùn)行 Emacs。
自從 20 世紀(jì) 80 年代中期第一次使用 SunOS支持的 vi 這個(gè)簡潔的環(huán)境以來,Emacs 編輯器已經(jīng)成為了 Murray 的標(biāo)準(zhǔn)工具。"它在各種流派的 UNIX 上都可以使用,這是我在致力于跨平臺(tái)的開發(fā)工作時(shí)選擇它的主要原因之一”,他說。
Linux 開發(fā)人員:了解您的Linux shell腳本
Murray 要求您要了解您的 shell。“Bash、tcsh、csh――shell 是您最基本的軟件開發(fā)工具”,他強(qiáng)調(diào)說。“它可以做許多了不起的事情。所有的工作都要依賴于它……和它的強(qiáng)大功能”。作為說明通用的 shell 腳本功能強(qiáng)大的例子,在 參考資料部分中有一個(gè)可以下載的文件,其中有一組腳本,用于獲得 Red Hat 發(fā)行的更新 RPM 軟件包并將它們合并到原來的軟件包和定制的軟件包。下載文件并解壓縮后,您可以在 /developerworks/rpm_update_scripts 目錄下找到腳本。最終結(jié)果是一個(gè)包括所有軟件包最新版本的目錄和一個(gè)用于網(wǎng)絡(luò)安裝的升級(jí)的 hdlist 文件。
下面的代碼片段實(shí)現(xiàn)的是對(duì) Red Hat RPM 軟件包的自動(dòng)更新,以創(chuàng)建一個(gè)使用最新的 RPM 的可以安裝的版本。這對(duì)任何一個(gè)維護(hù)公共 Linux 服務(wù)器的人來說是一個(gè)基本的步驟。就我們而言,我們通常是維護(hù)許多公共 Linux 服務(wù)器上的大量網(wǎng)絡(luò)服務(wù)。下面是可以自動(dòng)完成更新最新的安全和功能的過程的部分腳本。
下面的腳本樣例證明了普通的 shell 編程技術(shù)可以廣泛應(yīng)用于各種系統(tǒng)配置和程序設(shè)計(jì)應(yīng)用。腳本使用的是 bourne shell,它是在不同的 UNIX 系統(tǒng)中最為常見的 shell。這樣就可以保證這些非常輕便的代碼可以稍加修改或者不加修改地在不同的 UNIX 系統(tǒng)上使用。修改 Red Hat 軟件包的規(guī)范以應(yīng)用于其它 Linux 發(fā)行版本是很容易的。
freshen.sh 使用指定的 RPM ftp 更新站點(diǎn)上的 RPM 軟件包來更新原有的 RPM 列表。執(zhí)行過濾器來替換更新 RPM 軟件包。最后,長長的發(fā)行列表根據(jù)從更新鏡像站點(diǎn)上得到的新 RPM 軟件包完成更新。
【編輯推薦】