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

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


還可以為現(xiàn)有命令設(shè)置別名;假設(shè)將 -F 選項(xiàng)添加到所有 ls 命令,這樣,$ ls 將展開(kāi)為:$ ls -F 。
要設(shè)置別名,請(qǐng)使用內(nèi)置的外殼 alias 語(yǔ)句,并在引號(hào)中指定所需的展開(kāi)形式 。例如,要設(shè)置前面詳細(xì)描述的 ll 的展開(kāi)形式,可使用:$ alias ll='ls -l' 。
別名在以下情況下最為有用:您希望使用 base 命令并容易地指定附加選項(xiàng),同時(shí)仍然允許設(shè)置特定于平臺(tái)的選項(xiàng) 。
一個(gè)很好的例子就是 ps 命令,它在基于 SVR4 和基于 BSD 的 Unix 主機(jī)上是不同的 。在本系列的第一篇文章中,請(qǐng)參閱 系統(tǒng)管理員工具包: 進(jìn)程管理技巧 ——這篇文章解釋了如何使用 ps 的選項(xiàng)來(lái)獲得相似的清單 。您可以結(jié)合別名使用那些選項(xiàng),而不會(huì)影響您指定附加選項(xiàng)的能力 。例如,在 BSD 上,您將如清單 1 所示指定別名 。
清單 1. 在 BSD 上指定別名
$ alias ps='ps -o pid,ppid,command'
而在 SVR4 主機(jī)上,您將如清單 2 所示創(chuàng)建別名 。
清單 2. 在 SVR4 上指定別名
$ alias ps='ps -opid,ppid,cmd
現(xiàn)在,在這兩個(gè)系統(tǒng)對(duì) ps 的不同操作方式的限制下,您獲得了 ps 產(chǎn)生的標(biāo)準(zhǔn)輸出 。和前面一樣,您可以繼續(xù)添加更多選項(xiàng);例如,在安裝了該別名的任一個(gè)平臺(tái)上請(qǐng)求所有進(jìn)程,添加 -A 選項(xiàng)就是這樣一種情況 。這會(huì)在 BSD(在此示例中為 Mac OS X)上產(chǎn)生類似于清單 3 的輸出 。
清單 3. 在 BSD 上使用 -A 選項(xiàng)
$ ps -A
 PID PPID COMMAND
1 0 /sbin/launchd
23 1 /sbin/dynamic_pager -F /private/var/vm/swapfile
27 1 kextd
32 1 /usr/sbin/KernelEventAgent
33 1 /usr/sbin/mDNSResponder -launchdaemon
34 1 /usr/sbin/netinfod -s local
35 1 /usr/sbin/syslogd
36 1 /usr/sbin/cron
37 1 /usr/sbin/configd
38 1 /usr/sbin/coreaudiod
39 1 /usr/sbin/diskarbitrationd
...
SVR4 系統(tǒng)(Gentoo Linux 主機(jī))會(huì)顯示同樣的列,如清單 4 所示 。
清單 4. 在 SVR4 上使用 -A 選項(xiàng)
$ ps -A
 PID PPID CMD
1 0 init [3]
2 1 [migration/0]
3 1 [ksoftirqd/0]
4 1 [watchdog/0]
5 1 [migration/1]
6 1 [ksoftirqd/1]
7 1 [watchdog/1]
8 1 [events/0]
9 1 [events/1]
10 1 [khelper]
11 1 [kthread]
1411 [kblockd/0]
1511 [kblockd/1]
1611 [kacpid]
...
另一個(gè)選項(xiàng)或多或少地鏡像了本文其他地方給出的腳本和函數(shù)解決方案 。該選項(xiàng)是為給定命令的特定輸出創(chuàng)建別名,這些別名采用同一方法來(lái)提供相同的格式化輸出 。同樣以 ps 為例,您可以創(chuàng)建別名 ps-all 來(lái)輸出所有進(jìn)程列表,并根據(jù)需要為每種平臺(tái)設(shè)置相應(yīng)的展開(kāi)形式 。
設(shè)置這些別名的最佳位置是在登錄期間執(zhí)行的外殼初始化腳本中,例如 .ksh、.profile 或 .bashrc 。您可以在這些腳本中執(zhí)行同樣的系統(tǒng)檢查,以驗(yàn)證要啟用哪些別名 。如果希望提供適用于所有用戶的全局解決方案,則應(yīng)將別名定義放在公開(kāi)可用的文件中(例如放在 /etc or /usr/local 中),并設(shè)置用戶初始化腳本以獲得別名定義來(lái)源 。
別名機(jī)制最適合于您希望設(shè)置單個(gè)命令的命令行選項(xiàng)的情況,雖然也可以使用它們來(lái)將給定的命令展開(kāi)為一組命令或管道 。這樣削弱了為展開(kāi)形式中除最后一個(gè)命令以外的其他任何命令指定附加參數(shù)的能力 。對(duì)于處理此類包裝,外殼中的內(nèi)聯(lián)函數(shù)可能更為適合 。
使用內(nèi)聯(lián)外殼函數(shù)
大多數(shù)外殼都支持函數(shù),這些函數(shù)本質(zhì)上是微型腳本,您可以在其中放置命令和其他外殼腳本元素以執(zhí)行特定的任務(wù) 。由于它們是主外殼定義中的函數(shù),因此使用起來(lái)方便快捷,同時(shí)仍然支持許多完整外殼腳本所具有的相同功能,如命令行參數(shù) 。
對(duì)于支持別名無(wú)法在其中工作的某些命令和組合,對(duì)命令行參數(shù)的支持非常關(guān)鍵 。例如,killall 命令最基本的功能是終止所有與特定字符串匹配的命令 。該命令并非在所有平臺(tái)上都可用,但是一旦您了解了它,就會(huì)希望在其他環(huán)境中使用它 。

推薦閱讀