国产一级一区二区_segui88久久综合9999_97久久夜色精品国产_欧美色网一区二区

掃一掃
關注微信公眾號

對話 UNIX: 從簡單的按鍵操作學起
2009-04-23   IT168

用戶與計算機交互的方式在不斷發生變化。啟動后提供純命令行界面的操作系統已逐漸演化為圖形化前端。但是,脫離構成操作系統的構建塊有時并非是邁向正確方向的必要步驟。IBM? AIX? 操作系統一直把握著重點:穩定性、功能和穩健性。它通過保留強大的命令行界面 (CLI) 來實現這一目標。如果您未曾學習如何使用 CLI 或需要復習 CLI 的基礎知識,請繼續往下閱讀。

用戶與計算機交互的方式在不斷發生變化。啟動后提供純命令行界面的操作系統已逐漸演化為圖形化前端。然而,脫離構成操作系統的構建塊有時并非是邁向正確方向的必要步驟。向圖形化用戶界面 (GUI) 過渡往往意味著損失功能;而且,用戶漸漸傾向于不愿詳細了解他們所使用的計算機。幸運的是,與其他 UNIX? 和 Linux? 系統類似,AIX 操作系統一直把握著重點:計算機操作系統的穩定性、功能和穩健性。

大量 UNIX 和 Linux 供應商已充分認識到操作系統的 CLI 的重要性。但是,出于自動化、降低用戶使用計算機的難度或其他原因,用戶已忘記或從未了解 CLI 的細節。本文向新用戶和已經遺忘細節的用戶介紹 CLI,以幫助他們記住或回想起 CLI 對于管理、開發和常規 UNIX 計算之所以重要的原因。

什么是命令行?
在計算機上工作時,了解實際使用的工具非常重要。如果您曾經使用過 UNIX 或 Linux,那么您應該聽說過術語 shell 或 命令行。這兩個術語可以作為同義詞使用,并且指的是用戶正在運行的實際 UNIX shell。UNIX 中的術語 shell 指的是您在鍵入命令或執行功能時所使用的接口。

當用戶通過控制臺或網絡登錄 UNIX 系統時,將調用可定義 shell(位于 /etc/passwd),并通過配置文件設置用戶環境(本文稍后將進行說明),于是用戶準備好在 shell 中執行操作。當用戶在命令行(即用戶正在使用的 shell)中鍵入命令時,用戶只能看到 stdin(即標準輸入),這是用戶或程序提供的輸入。當用戶按 Enter 或 Return 鍵時,通過 shell 發送 stdin 以執行命令,然后用戶可能收到 stdout(即標準輸出)和 stderr(即標準錯誤),具體取決于輸出重定向的方式(例如,重定向到用戶的顯示器、文件或打印機)。術語 stdout 表示執行的程序所返回的輸出數據,而 stderr 指的是程序遇到或返回的錯誤。用戶不會看到處理單個或多個命令的所有底層代碼的執行情況,而是看到非常簡單化的輸入、輸出和錯誤。由于上述原因,用戶登錄時調用的程序被恰當地稱為 shell,因為它隱藏了操作系統的所有底層調用。

shell 的歷史
UNIX shell 至今存在的時間已超過 35 年,它現在仍然在發展壯大!它創始于 1971 年,這一年 AT&T 貝爾實驗室的 Ken Thompson 創建了第一個 UNIX shell,它具有貼切的名稱 Thompson shell。雖然 Thompson shell 缺少人們日常使用的 UNIX 所具備的一些重要內置功能,如管道 (|)、編寫 shell 腳本的能力和 if 條件語句,但是該 shell 的基礎功能(如數據重定向)仍存在于現今使用的 shell 中。
后來,在 1997 年,Thompson shell 被 Bourne shell(即 sh)所取代。Bourne shell 是由 AT&T 貝爾實驗室的 Stephen Bourne 創建的,它成為 UNIX 第 7 版 (V7) 的缺省 shell。Bourne shell 使 UNIX 的發展向前邁進了一大步。到這時,用戶可以編寫 shell 腳本,在變量中存儲信息和導出信息,控制文件描述符,控制信號處理,使用 for 循環和 case 語句,以及其他大量功能。雖然 Bourne shell 創建至今已有 30 多年時間,目前它仍在大量的 UNIX 系統中廣為使用,并且是當今許多 UNIX 系統的超級用戶 -root- 的缺省 shell。
在過去三十年中,UNIX shell 獲得了許多改進和增強。結果,出現了多種不同的 shell。圖 1 顯示了少數 UNIX shell 的家族樹。雖然該圖并不完整,但它顯示了衍生出其他較次要 shell 的那些主要 shell。

圖 1. UNIX shell 家族樹

Korn shell
1982 年,AT&T 貝爾實驗室的 David Korn 開發了 Korn shell(即 ksh)。Korn shell 與許多其他 shell 類似,向后兼容 Bourne shell (sh)。在超過 25 年的發展歷程中,它已進化為強健、穩定和非常可靠的 shell。IBM 在 AIX 中使用 Korn shell 作為其缺省 shell。Korn shell 共有兩個版本,它們均包含在 AIX 中。
第一種是 AIX 普通用戶的缺省 shell,即標準 ksh shell。Korn shell 符合計算機環境的可移植操作系統接口標準 (POSIX),這是操作系統的國際標準。
AIX 提供的第二種 Korn shell 是增強 Korn shell,稱為 ksh93。除標準 Korn shell 所擁有的所有強大功能外,增強 Korn shell 還包含如下功能:
" 算術增強
" 復合變量
" 復合賦值
" 關聯數組
" 變量名引用
" 參數擴展
" 規程函數
" 函數環境
" PATH 搜索規則
" shell 歷史記錄
" 其他內置命令
有關 ksh93 增強功能以及 ksh 與 ksh93 之間差異的完整列表,請參閱參考資料。

使用 ksh 設置命令行環境
在介紹如何使用 ksh 編輯命令行之前,必須設置您的環境。根據您的喜好來設置 Korn shell 相當簡單:登錄到 ksh 下時,使用帶有 -o 開關的 set 命令來查看您的當前設置:
# set -o

Current option settings are:
allexport        off
bgnice           on
emacs            off
errexit          off
gmacs            off
ignoreeof        on
interactive      on
keyword          off
markdirs         off
monitor          on
noexec           off
noclobber        off
noglob           off
nolog            off
notify           off
nounset          off
privileged       off
restricted       off
trackall         off
verbose          off
vi               off
viraw            on
xtrace           off

下面簡單介紹各項設置。(您也可以通過運行 man set 找到這些說明。)
" allexport:自動導出所有定義的后續變量。
" bgnice:在后臺以更低的優先級運行所有進程。
" emacs:編輯輸入的命令行文本時,使用 emacs 風格的行內編輯器。
" errexit:如果某個命令產生非 0(零)的退出狀態并且設置了 ERR 陷阱,則執行 ERR 陷阱并退出。
" gmacs:編輯輸入的命令行文本時,使用 gmacs 風格的行內編輯器。
" ignoreeof :忽略文件結束字符,并且不退出 shell。如果用戶想要退出,則必須鍵入 exit 命令或按 11 次 Ctrl-D。
" keyword :此選項將命令的所有參數放入環境中,而不僅僅放入命令之前的參數,使用 set 命令可以查看這些參數。
" markdirs:在來自文件名替換的所有目錄的末尾添加一個正斜杠 (/)。
" monitor:將所有后臺進程作為獨立進程運行,并在進程結束時向 stdout 輸出一行信息以通知用戶。
" noexec:不執行命令。僅檢查語法錯誤。
注意:此參數在交互式 shell 中無效。
" noclobber :當輸出重定向到現有文件時,此標記可阻止截斷這些文件。然而,啟用此選項后,如果使用大于號加管道符號 (>|),則仍然會發生截斷。
" noglob:禁用文件名替換。
" nolog:如果使用此選項,則函數定義不會存儲在歷史文件中。
" nounset:如果執行替換,則所有未設置參數都作為錯誤返回。
" restricted :運行受限制的 shell。用戶無法執行下列操作:更改目錄;更改 SHELL、ENV 或 PATH 變量;執行在文件名中包含正斜杠 (/) 的命令;或重定向輸出。
" trackall:每個命令在最初運行時都作為被跟蹤的別名。
" verbose:當 shell 讀取輸入行時,向 stdout 顯示所有這些行。
" vi:編輯輸入的命令行文本時,使用 vi 風格的行內編輯器。
" viraw:鍵入字符時,將每個字符處理成在 vi 編輯器下輸入的原樣。
" xtrace:執行命令時,向 stdout 顯示所有命令和參數。
若要開啟內置命令集選項,請使用 -o 開關。相反,如果改變主意,可以使用 +o 開關關閉這些選項。
本文將重點講述的主要選項是行內編輯器開關。根據個人喜好不同,人們往往偏愛 vi、emacs 或 gmacs 文件編輯器中的某一個。Korn shell 包含所有這三種編輯器。然而,我將重點介紹 vi 行內編輯器。將行內編輯器選項設置為 vi 十分簡單。只需在用于查看所有當前設置的命令后加上選項 vi:
# set -o vi

大功告成!若要驗證該設置,可以再次查看您的當前設置:
# set -o

Current option settings are:
allexport        off
bgnice           on
emacs            off
errexit          off
gmacs            off
ignoreeof        on
interactive      on
keyword          off
markdirs         off
monitor          on
noexec           off
noclobber        off
noglob           off
nolog            off
notify           off
nounset          off
privileged       off
restricted       off
trackall         off
verbose          off
vi             on
viraw            on
xtrace           off


使用 Korn shell vi 行內編輯器
既然已將您的 shell 配置為使用 vi 行內編輯器,現在應該開始進行測試了。
在命令行上修改文本
現在,當您在命令行上鍵入時,將其視為處于 vi 編輯器中的插入模式。如果出錯或者需要向要執行的命令添加一些內容,只需按 Esc 鍵退出插入模式并切換回命令模式。
例如,您當前所在的工作目錄包含如下文件:
# ls
fileA    fileAA   fileAAA  fileAB   fileABA  fileABB  fileB    fileBAA  fileBB   fileBBB

您希望查找以 fileAA 開頭的文件并刪除它們,于是輸入以下命令:
# find . -name "fileAB*" -exec rm {} \;

在執行您輸入的行之前,您發現自己犯了一個錯誤,意外地將 fileAA 誤輸入為 fileAB。不必擔心。只需退出插入模式并切換到命令模式,將光標移動到錯誤字符并進行替換,所有這些操作都使用 vi 命令完成。下面詳細說明命令序列,此時仍然處于行內編輯器的插入模式:
1. 按 Esc 切換到命令模式。
2. 使用 vi 風格的移動命令向左移動光標,以突出顯示字符串"fileAB*"中的 B。(H 鍵可向左移動光標。)
注意:如果您習慣于在 vi 中使用箭頭鍵,那么明智的做法是了解鍵盤上用于移動光標的實際字母鍵,因為不同類型的終端上的箭頭鍵不一定能產生預想中的結果:
o h:向左
o l:向右
o k:向上
o j:向下
3. 使用 vi 風格的"替換單個字符"命令將 B 替換為 A(即單擊 R,然后鍵入 A)。
經過檢查確認輸入無誤后,按 Enter 鍵執行命令:
# find . -name "fileAA*" -exec rm {} \;
# ls
fileA    fileAB   fileABA  fileABB  fileB    fileBAA  fileBB   fileBBB

文件名完成
Korn shell 中 vi 行內編輯器的另一個十分有用的操作是文件名完成。執行命令時,經常會遇到這樣一種情況,您用作 stdin、stdout 或 stderr 參數的文件將被寫入到某個文件中。文件名可能很長,也可能有多個文件具有類似的文件名,或者您就是無法記起完整的文件名。這時就會用到文件名完成功能。在鍵入文件名時,如果完成了一部分,那么只需先按 Esc 鍵,再按反斜杠 (\)鍵。這樣做省時省力!
例如,我要查看 AIX 上的 /etc/filesystems 文件,但我忘記了完整文件名。我知道它位于 /etc 下,并且該文件以 file 開頭,僅此而已。我只需鍵入 view /etc/file 并按 Esc-\,哇!ksh 已經為您完成了這行內容。現在命令行顯示為 view /etc/filesystems。
對于目錄結構也可以執行同樣的操作,因為它們實際上也可算作文件名。
查看和修改命令歷史記錄
在您的 UNIX 系統上監視進程或執行其他一些功能時,您需要多次反復鍵入相同的命令。為了避免反復重新輸入的麻煩,Korn shell 提供了內置的命令歷史記錄供您查看。如果您也將行內編輯器設為 vi,ksh 將允許您提取用戶所執行命令的歷史記錄(有時僅限該會話,具體取決于您的系統配置),并按照您在命令行中輸入的其他文本修改命令。
如果您在變量 HISTFILE 中定義了一個文件名,ksh 允許用戶從其歷史記錄中提取和修改命令,或僅僅再次執行原始命令。例如,以下是示例 $HISTFILE 顯示的最后 10 個命令:
# tail -10 $HISTFILE
ls
cd ~cormany/testdir/dirA
./fileA 1>fileA.out 2>fileA.errors
pwd
ps -fu cormany
df -k .
ps -fu cormany
find . -name "fileA.out" -ls
find . -name "fileA.errors" -ls
tail -10 $HISTFILE

在命令行中,只需按 Esc 鍵即可進入 vi 行內編輯器的命令模式,然后按 K 鍵提取上次執行的命令。由于您仍處于命令模式,您可以繼續按 K 鍵向上移動所執行命令的歷史記錄,或按 J 鍵向下移動列表。
若要幫助簡化命令模式下的光標移動,當您在命令提示符處按 Esc 鍵時,請想象您加載的 $HISTFILE 為 vi 中的普通文件。在 vi 編輯器中,K 鍵向上移動一行,而 J 鍵向下移動一行。如果按 Esc-J 鍵并使用示例 $HISTFILE,想象正在編輯 $HISTFILE,并且光標開始位于文件底部。該行將顯示 tail -10 $HISTFILE。如果再次按 J 鍵,正在編輯的 $HISTFILE 將向上移動一行,顯示為 find . -name "fileA.errors" -ls。
圖 2 提供了小型的"備忘單",將常規 vi 命令模式光標移動與 ksh vi 行內編輯器命令模式移動進行比較。

圖 2. vi 命令模式備忘單
命令行與 shell 腳本
有時會用到 shell 腳本,其他一些時間則要用到命令行。如果需要定期執行某項任務,或者任務非常復雜、需要進行數據處理,同時不需要用戶反復鍵入各種命令,則適合使用 shell 腳本。有時,某些任務只需要執行一次并且相對簡單,則使用命令行可以很好地完成這類任務。
例如,假設存在下列字典列表:
# ls
fileA.tar.gz   fileAA.tar.gz  fileB.tar.gz   fileBB.tar.gz

如果只需要解壓縮文件,并使用 bzip2 重新壓縮,然后將它們傳送到 ATC-AIX2 上,那么與其鍵入 shell 腳本,不如使用命令行。可以將 shell 腳本視為一次輸入多個命令行條目,因為從某種意義上來說,這就是實際情況。在命令行上鍵入命令時,就像將它們輸入到腳本中,然后執行腳本。
您希望遍歷目錄中以 gz 結尾的文件,解壓這些文件,然后使用 bzip2 重新壓縮它們,再對這些文件使用 scp 命令,將它們復制到目標 ATC-AIX 服務器上。循環在命令行中的工作效果與在腳本中同樣出色。當開始 loop…if 條件語句、case switch 語句,或其他代碼塊語句時,您正在運行的 ksh 只會將光標移動到下一行,但提示符將更改為 $PS2。當代碼塊完成時,將執行代碼塊并使用戶返回 $PS1 提示符。
也就是說:
" $PS1 提示符:等待下一個命令
" $PS1 提示符:代碼塊開始
" $PS2 提示符:代碼塊繼續
" $PS2 提示符:代碼塊繼續
" $PS2 提示符:代碼塊結束
" 代碼塊執行
" $PS1 提示符:等待下一個命令
變量 PS2 的缺省值為 >。返回前一個解壓縮后重新壓縮的功能,您只需在 ksh 命令行中鍵入以下內容:
# for _FNAME in 'ls -1 *.gz'
> do
> gzip -d ${_FNAME}
> bzip2 ${_FNAME%*.gz}
> scp ${_FNAME%*.gz}.bz2 cormany@ATC-AIX2:/home/cormany
> done

完成代碼塊(也就是說,使用 done 結束循環)后按 Enter 鍵,將開始執行循環。在命令行上鍵入的循環將搜索當前工作目錄下以 .gz 結尾的所有文件,將這些文件解壓縮,然后使用 bzip2 重新壓縮它們,最后將它們復制到 ATC-AIX2 上的 /home/cormany 目錄中。就是如此簡單。

結束語
在閱讀本文之后,您應當能夠學會以新的方法使用 Korn shell。掌握命令行可以簡化您的工作,并幫助您更好地理解如何在工作中充分利用 shell 和命令行,從而擺脫使用它們的困擾。

熱詞搜索:

上一篇:審視服務器市場昔日霸主Unix操作系統
下一篇:Unix時間并沒有出現錯誤

分享到: 收藏
国产一级一区二区_segui88久久综合9999_97久久夜色精品国产_欧美色网一区二区
韩国成人精品a∨在线观看| 成人国产免费视频| 精品国产免费人成在线观看| 黄网站免费久久| 亚洲免费观看高清完整版在线观看| 丁香六月综合激情| 精品在线一区二区三区| 亚洲人成在线观看一区二区| 在线不卡中文字幕| 91女厕偷拍女厕偷拍高清| 国产一区二区在线影院| 亚洲久本草在线中文字幕| 欧美va在线播放| 欧美三级三级三级| 91小视频在线| 成人激情小说乱人伦| 美国三级日本三级久久99| 亚洲欧美国产高清| 国产精品情趣视频| 国产嫩草影院久久久久| 欧美一级高清片| 91精品视频网| 日韩一区二区电影在线| 在线观看亚洲精品视频| 99精品国产视频| 色综合欧美在线| 在线看国产一区| 一本久道久久综合中文字幕| 色婷婷av一区二区| 91精品国产日韩91久久久久久| 波多野结衣欧美| 欧美性欧美巨大黑白大战| 欧美日韩亚洲国产综合| 欧美久久久影院| 日韩一区二区麻豆国产| 精品日本一线二线三线不卡| 国产亚洲婷婷免费| 国产精品情趣视频| 日韩精彩视频在线观看| 国模冰冰炮一区二区| 91丨porny丨中文| 91免费观看在线| 欧美怡红院视频| 欧美一区二区三区人| 国产精品区一区二区三区| 亚洲免费在线观看视频| 亚洲精品国产高清久久伦理二区| 亚洲一区二区av电影| 久久国产精品第一页| 94色蜜桃网一区二区三区| 精品三级在线观看| 亚洲国产人成综合网站| 成人a级免费电影| 色94色欧美sute亚洲13| 制服丝袜一区二区三区| 中文字幕一区二区视频| 日本伊人精品一区二区三区观看方式| 黑人巨大精品欧美黑白配亚洲 | 成人免费一区二区三区在线观看 | 欧美www视频| 亚洲精品少妇30p| 麻豆91在线播放免费| 91麻豆视频网站| 国产日韩欧美a| 久久成人综合网| 欧美精品在欧美一区二区少妇| 亚洲欧洲av色图| 99国产精品视频免费观看| 久久品道一品道久久精品| 免费在线观看一区二区三区| 欧美午夜宅男影院| 国产精品短视频| 成人一道本在线| 国产精品乱子久久久久| 99国产精品一区| 亚洲成av人片在线观看| 91精品国产一区二区三区蜜臀| 午夜电影一区二区| 欧美一级淫片007| 日本福利一区二区| 亚洲一区二区高清| 欧美成人aa大片| 99久久国产综合精品女不卡| 亚洲色图制服诱惑| 欧美日韩精品一区二区天天拍小说| 亚洲福利视频一区二区| 久久久精品综合| 欧美日韩综合在线| 狠狠色狠狠色综合| 日韩伦理av电影| 欧美一二三区在线| 色国产综合视频| 国产一区二区在线观看视频| 中文字幕一区二区在线播放| 91官网在线免费观看| 久久9热精品视频| 亚洲精品成人在线| 欧美国产日韩一二三区| 欧美一区二区三区在线视频| 成人国产在线观看| 丁香网亚洲国际| 五月天中文字幕一区二区| 国产精品麻豆视频| 26uuu精品一区二区三区四区在线| 欧美日韩精品一区二区天天拍小说| 国产呦精品一区二区三区网站| 日本不卡视频在线观看| 亚洲成av人影院| 亚洲成人在线网站| 尤物视频一区二区| 亚洲精品中文在线| 亚洲综合一区在线| 亚洲成a人在线观看| 亚洲国产一区二区在线播放| 亚瑟在线精品视频| 麻豆精品久久精品色综合| 性久久久久久久久| 毛片av一区二区| 成人午夜视频网站| 在线一区二区三区做爰视频网站| 色综合久久88色综合天天| 91国偷自产一区二区开放时间| 一本色道久久综合狠狠躁的推荐| 日本道精品一区二区三区| 欧美性生交片4| 日韩欧美自拍偷拍| 中文字幕在线观看不卡视频| 亚洲国产精品一区二区www| 老司机午夜精品| 成人精品国产一区二区4080| 欧美亚洲免费在线一区| 日韩美女一区二区三区四区| 久久久综合激的五月天| 亚洲精品欧美二区三区中文字幕| 免费人成黄页网站在线一区二区| 看电视剧不卡顿的网站| 99久久精品国产网站| 26uuu久久天堂性欧美| 亚洲午夜日本在线观看| www.在线欧美| 国产欧美精品一区二区色综合朱莉| 依依成人精品视频| 成人激情免费网站| 久久久久久亚洲综合| 亚洲成人激情社区| 欧美中文字幕一区二区三区| 国产精品免费久久| 国产精品综合一区二区三区| 欧美一区二区三区日韩视频| 首页亚洲欧美制服丝腿| 欧美日免费三级在线| 国产精品久久久久久户外露出| 国产激情偷乱视频一区二区三区| 国产亚洲人成网站| 另类小说欧美激情| 欧美大片在线观看| 国内精品国产三级国产a久久| 精品久久久久99| 成人禁用看黄a在线| 国产精品水嫩水嫩| 色国产精品一区在线观看| 亚洲欧洲av一区二区三区久久| 色噜噜狠狠色综合欧洲selulu| 亚洲伦在线观看| 日本精品视频一区二区三区| 亚洲一区在线视频| 欧美成人video| 99在线精品免费| 亚洲超碰精品一区二区| 欧美一区二区三区性视频| 久久国产麻豆精品| 亚洲天堂a在线| 91精品国产丝袜白色高跟鞋| 国产精品一区专区| 亚洲午夜精品久久久久久久久| 91精品国产黑色紧身裤美女| 国产乱码精品1区2区3区| 亚洲精品一二三| 久久一区二区三区四区| 欧美日韩激情在线| 风间由美一区二区三区在线观看| 亚洲一级二级三级在线免费观看| 国产欧美日韩一区二区三区在线观看 | 欧美性xxxxxxxx| 成人av片在线观看| 秋霞电影网一区二区| ●精品国产综合乱码久久久久| 欧美精品自拍偷拍| 欧美优质美女网站| 91在线小视频| 国产精品一二三四区| 国产综合成人久久大片91| 免费成人美女在线观看| 日韩av电影天堂| 亚洲成人精品在线观看| 亚洲国产成人tv| 午夜av区久久| 美女网站视频久久| 成人免费的视频| 99国产精品视频免费观看|