今更なんだけど。
ksh(Korn Shell)。
実はこれまでコマンドラインの編集機能、ファイル名の補完機能は無いと思っていたのだが、ある・・・という事が判った。
http://homepage3.nifty.com/owl_h0h0/unix/job/UNIX/tool/ksh.html
http://d.hatena.ne.jp/furya/20060620/1150814106
とはいえ、今更この使いにくいシェルを使うとは思えない。
やはりbashを使うと思う。
kshでコマンドヒストリ、コマンドライン編集を有効にする
確認
# set -o
# set -o
Current option settings
allexport off
bgnice on
emacs off
errexit off
gmacs off
ignoreeof off
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 off
xtrace off
emacs、viがoffになっているのでコマンド編集等が使えない。
# set -o vi
viがonになる。
# set +o vi
viがoffになる。
# set -o emacs
emacsがonになる。
# set +o emacs
emacsがoffになる。
例(1)としてviを使って履歴、編集を行ってみる。
# set -o vi
# [esc]k
ヒストリが表示される。
キーバインドはviと同様に、jkで上下。
編集のキーバインドはviと同様のhlで左右。
[esc]でモード変更。
iやx、d等、viのキー操作がそのまま利用できる。
例(2)としてemacsを使って履歴、編集を行ってみる。
# set -o emacs
# [esc]
# [ctrl]-p
ヒストリが表示される。
キーバインドはemacsと同様に、[ctrl]-p、[ctrl]-nで上下。
編集のキーバインドはemacsと同様の[ctrl]-f、[ctrl]-bで左右。
(3)コマンドラインの補完
[esc] \
で補完できる。(TABキーではない)
候補一覧の表示は
[esc] =
で表示される。
なんだ、実はkshって慣れると使いやすいんじゃないのか?
ホント、今更だけど。
コマンドライン編集の方法(2)
# fc
環境変数FCEDITで設定されたエディタが起動されて、エディタで編集したコマンドを実行することができる。
コマンドヒストリを参照して編集して、実行する場合は
# fc for
のように入力する。この場合コマンドヒストリの中で最後に実行された for から始まるコマンドが参照されて、エディタが起動される。
コマンドヒストリを参照して編集せずに、実行する場合は
# fc -e - for
のように入力する。この場合コマンドヒストリの中で最後に実行された for から始まるコマンドが参照されて実行される。
for文
for 変数 in リスト ; do コマンド ; done
リストの内容物が無くなるまで、変数に代入されてぐるぐる実行される。
select文
select 変数 in リスト ; do コマンド ; done
リストの内容物がユーザに提示され、ユーザが選択した値が変数に代入されてぐるぐる実行される。
ちなみにプロンプトは環境変数PS3で設定された値が表示される。
コメント