標籤:
set -o vi再用esc+K鍵就可以使用上一條指令了
esc+k
esc+j
上下翻
ksh預設是emacs風格的。set -o emacs
在AIX下使用自己已經使用過的命令
在AIX下使用,預設的shell是KSH,和linux下的bash不一樣的是,他不能採用我們大家已經熟悉的DOS下的鍵或者其他我們已經熟悉的快速鍵來使用我們上次已經使用過的命令,比如在DOS命令狀態下(我把我自己經常用的快速鍵列出來,可能還其他的,慢慢補充),大家可以通過F7來取得你已經在當前DOS視窗中輸入過的不重複的命令(Windows對你自己在當前視窗順序輸入的非重複命令進行排序,以0,1,2...來編號),F1重複上次同一個位置上的字元,F3重複上次所有的命令,F5和F8向上翻我已經輸入過的命令,F9是可以輸入你要顯示的上次輸入的非重複的命令ID(比如,進入某DOS視窗之後,我依次輸入了兩條命令:dir和cd test,那麼本視窗的第0條命令就是dir,類推,當我按下F9的時候,系統提示我“輸入命令號碼”,這個時候我按照上次輸入的順序號進行輸入即可,比如選擇0那麼這個時候就是dir命令,這個功能和F7的功能是一致的,只是F7可以選擇,F9可以直接輸入,這兩個功能當你輸入的命令比較長的時候是比較有用的)。
要想在AIX下使用上次你已經使用過的命令,可以使用以下的方法:
1、在ksh下,運行set -o vi,這個時候整個命令狀態就是是VI編輯器了,操作的方法和VI編輯器一摸一樣,要重複上次的命令,就在目前狀態欄下按ESC,然後輸入k,就可以看到下一條命令,按下k就可以查詢上一條命令,h可以在當前行向前移動一個字元的位置,l可以在當前行向後移動一個字元的為止,當然這個時候相當於處於vi的狀態,所有在vi狀態下的對單行操作的命令都可以使用。編輯好之後直接按斷行符號即可。
2、如果不不是在ksh下,那麼你可以在命令視窗下運行ksh -o vi,其他的命令和第一種方法一樣
3、在ksh的環境變數中設定EDITOR=vi即可,修改的方法即在.profile中直接加入EDITOR=vi;export EDITOR即可。
4、刪除曆史命令,可以在目前使用者的主目錄下,查詢到一個.sh_history的檔案,裡面記載了你所有在目前使用者輸入過的命令。可以將這個檔案編輯一下,然後將其中的命令刪除掉就可以了。當然你可以將自己喜歡的命令或者比較長的命令放在裡面,以後你就直接調用就可以了。當然從這個檔案可以看出上面幾點講的採用vi的命令來取得上次的命令,其實ksh是取得這個檔案中的資訊。
5、以下小技巧:
a、重複上一條命令可以直接在ksh狀態下輸入r
b、你可以在ksh狀態下執行r a=b,意思是先將上一條命令中的a字元用b字元替換,然後運行。
////////////////////
原因後來上網查了一下,暫且引用一下《FreeBSD使用大全》中的一段內容:
-----------------------------------------------------------------------------------------------
事實上sh與csh,並不是普通用戶的最佳選擇,因為這兩個shell在易用性方面做的不夠好,例如命令列編 輯功能不強、不能利用熱鍵重復執行命令等。較新的shell,如bash和tcsh都具有這些方便用戶使用的功能,但 必須安裝了這些shell程式之後,才能更改普通用戶的shell設置以使用這些shell程式。更改用戶的shell 可以使用pw、vipw或chsh。
這兩個shell分別遵照sh和csh的風格,因此喜好csh風格的可以選擇tcsh,而喜歡sh風格的選擇 bash。除了這兩種shell之外,還有ksh、zsh等shell可供選擇。如果對兩種shell沒有偏好,可以 選擇bash,它是一個GNU軟件,比標准sh功能強大的多。
使用了這兩些增強型shell之後,用戶就可以使用shell提供的命令列編輯功能。按照習慣的不同,可以選 擇vi風格的編輯方式或emacs風格的方式,預設為emacs方式,這種方式使用方向鍵來回溯執行過的命令,並進行 修改,而vi風格使用字母命令作編輯鍵,例如使用h、j、k、l四個鍵來移動光標,vi風格的好處是不使用基本鍵盤之 外的控制鍵,因而可以適用於任何終端設備,並且進行編輯時手不需離開基本鍵盤,熟練操作之後最為快捷。emacs風格 比起vi風格更適合從個人計算機轉向Unix的使用者的習慣。bash, ksh ,zsh下使用下面的命令在emacs 風格和vi風格切換:
bash$ set -o emacs
bash$ set -o vi
tcsh中使用不同的命令:
% bind emacs
% bind vi
還可以為常用的命令設置別名,簡化用戶輸入,例如:
bash$ alias ec=”echo This is a alias”
bash$ ec
This is a alias
shell用於方便用戶操作的另一項能力是自動補全命令或檔案名稱的功能,因為FreeBSD下的檔案名稱可能很 長,將它們全部輸入比較麻煩。事實上可以輸入部分名字,然後按Tab鍵(在vi風格下是連續兩次按Esc鍵),shell 將自動補全檔案名稱的剩餘部分。如果已經輸入的這部分名字不能確定具體的命令或檔案,那麼shell只將能確定的部 分補上,然後響鈴通知使用者繼續輸入以明確具體的檔案。
事實上即使在基本的sh或csh下,也可以使用 “*” 等特殊字元,用模式比對的方式來簡化輸入。
bash$ cd /usr/loca*
bash$ pwd
/usr/local
Unix中的多數程式都具備模式比對的處理能力,而shell的模式比對功能最為常用。shell可以使用這 些特殊模式來配置多個檔案,達到簡化操作的目的。如果要熟練掌握Unix,必須掌握模式比對。
當試圖在bash下輸入漢字的時候,除了必須設置終端屬效能接受8位字元之外(執行stty pass8命令 ),還需要設置bash的輸入輸出轉換,可以在登錄腳本.profile檔案中包括以下設置:
bind ‘set convert-meta off‘
bind ‘set meta-flag on‘
bind ‘set output-meta on‘
set -o vi AIX下shell