日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

標(biāo)準(zhǔn)化您的 UNIX 命令行工具

本文介紹用于標(biāo)準(zhǔn)化界面以簡化在不同 Unix?系統(tǒng)之間移動的方法 。如果您管理多種 UNIX 系統(tǒng)(特別是在異構(gòu)環(huán)境中),則最艱巨的任務(wù)可能是在不同環(huán)境之間切換并執(zhí)行不同的任務(wù),同時還必須考慮系統(tǒng)之間的所有差異 。本文并不介紹特定的差異,而是研究能夠提供兼容層(或包裝)以支持一致環(huán)境的方法 。
關(guān)于本系列
典型的 UNIX?管理員擁有一套經(jīng)常用于輔助管理過程的關(guān)鍵實用工具、訣竅和系統(tǒng) 。存在各種用于簡化不同過程的關(guān)鍵實用工具、命令行鏈和腳本 。其中一些工具來自于操作系統(tǒng),而大部分的訣竅則來源于長期的經(jīng)驗積累和減輕系統(tǒng)管理員工作壓力的要求 。本系列文章主要專注于最大限度地利用各種 UNIX 環(huán)境中可用的工具,包括簡化異構(gòu)環(huán)境中的管理任務(wù)的方法 。
差異和問題
如果您使用多種 UNIX 主機,特別是每種主機都支持不同的 UNIX 風(fēng)格(Berkeley Software Distribution (BSD)、UNIX System Release 4 (VSVR4) 等)或版本,您也許發(fā)現(xiàn)自己要花大量的時間來檢查和確定自己所在的主機類型,以便能夠適應(yīng)系統(tǒng)操作方式的變化 。
例如,ps 命令在基于 BSD 和基于 SVR4 的 UNIX 主機上,分別需要不同的命令行選項來獲得大致相同的信息(有關(guān)更多細(xì)節(jié),請參閱 系統(tǒng)管理員工具包: 進程管理技巧) 。平臺之間還存在更廣泛的差異 。有時,這種差異是命令名稱發(fā)生了更改;Linux?提供 adduser 命令,而 Solaris 則提供 useradd 命令 。
就標(biāo)準(zhǔn)化而言,有多種方法可供您采用 。
您可以選擇對主要平臺(例如 Solaris)進行標(biāo)準(zhǔn)化,并在其他平臺上提供等效命令的包裝以匹配 Solaris 標(biāo)準(zhǔn) 。也可以選擇對為所使用的任務(wù)提供最佳組合的命令集進行標(biāo)準(zhǔn)化,挑選您喜歡的命令并為特定平臺上不存在的命令構(gòu)建包裝 。您可以創(chuàng)建自己的一套執(zhí)行特定任務(wù)的腳本(包括您自己用于 ls、ps 等常用工具的替代腳本),以便它們生成您想要的信息 。這樣做有點危險,原因是它意味著您可能從未使用原始命令,從而可能在您的腳本不可用時導(dǎo)致潛在的問題 。如何具體實現(xiàn)各個命令的包裝以提供一個兼容或唯一的層,這取決于您是嘗試簡單地為功能相同的替代命令提供一個公認(rèn)名稱,還是需要構(gòu)建一個或多個命令的包裝以獲得等效的結(jié)果 ??赡艿慕鉀Q方案有三種:
別名——這種解決方案僅在某些外殼中受支持——別名提供了將給定的字符串展開為特定命令的簡單方法 。外殼函數(shù)——大多數(shù)現(xiàn)代外殼都支持這種解決方案——外殼函數(shù)使您能夠創(chuàng)建更復(fù)雜的序列,但是由于它們作為內(nèi)置函數(shù)運行,在差異相當(dāng)小時可能更為實用 。外殼腳本——當(dāng)您要構(gòu)建的包裝特別復(fù)雜時,更好的解決方案是使用外殼腳本,您可以代替原始命令調(diào)用這些腳本 。使用外殼腳本,您可以更創(chuàng)造性地處理替代,甚至為另一個命令提供完全由外殼腳本驅(qū)動的替代 。讓我們研究一下每種可能的解決方案和一些可通過此方法來進行模擬的示例命令 。
使用別名
別名在 Korn (ksh)、Bourne-Again SHell (bash)、TENEX C shell (tcsh) 和 Z shell (zsh) 外殼中受支持,當(dāng)您希望設(shè)置命令的特定選項,同時仍然支持其他選項時,別名提供了也許是最簡單的方法 。顧名思義,您可以將一個命令用作另一個命令的別名,或者為帶有附加選項的同一個命令提供別名 。別名從您鍵入的內(nèi)容展開為其展開形式 。
例如,一個常用的別名是 ll,它調(diào)用等效的 ls -l(ll 通常稱為長清單 (long listing)) 。每當(dāng)用戶鍵入 ll,就會直接將其替換為展開形式,因此:$ ll a* 在執(zhí)行前展開為:$ ls -l a* 。
命令行選項也仍然有效,換句話說,$ ll -a 展開為:$ ls -l -a 。

推薦閱讀