スポンサーサイト 

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

bashあれこれ 

bashのviモード
「入門 bash」を読んでいたらbashのviモードというものがあることを知らされた。これはbashのインタラクティブ機能?のキーアサインをemacsライクとするかviライクとするか選択できるというものであり、デフォルトはemacsライクである。
bashも長いこと使っているのでとりたてて困ることはないのだが、emacs/xemacsを使わないでviを使う人であるためviモードの方が何かと便利だろう。
bashを起動した後にemacs/viモードを切り換える。

set -o {emacs|vi}

viの起動時のモードを指定する。
readlineの設定ファイル~/.inputrcにて次のような記述を行う。環境変数INPUTRCにファイルパスを記述することでreladlineの設定ファイルを変更できる。
[~/.inputrc]

set editing-mode {emacs|vi}

FedoraCore5ではシェル変数?環境変数?INPUTRCとして/etc/inputrcが設定されているが、最後に存在する場合には~/.inputrcを読みに来てくれているのか~/.inputrcに上記を書くだけで反映された。
readlineの設定はreadlineライブラリを利用するプログラム共通で適用されるはず。

bashのキーバインドも近い話題なのでここにメモしておく。

bind -p

これで現在のキーバインド一覧が出力される。
コマンドsourceとコマンド.は同じ動作をするとのこと。'.'がコマンドとな。コマンド'.'が/etc/init.d/などで使われているのは知っていたのだが、その意味はこれまで分からないでいた。コマンド'.'の存在はどうかと思うが...。
aliasを使用した際には引数にはalias展開が行われない。しかしaliasの値が空白で終わっている場合には次のワードに対してalias展開を試みてくれる。

alias foo='bar '

とすれば、コマンドライン

foo baz

のbazについてもalias展開を行うというわけだ。なんだか嬉しい気もするが、どんな時に役立つのか想像できない。どんな時だ?

特殊な変数表記

${variable:-word}
  $variableが存在し、かつnullではない場合にその値を返す。それ以外の場合にはwordを返す。
${variable:=word}
  $variableが存在し、かつnullではない場合にその値を返す。それ以外の場合は$variablewordを設定して返す。$1などといった特殊変数は設定できない。
${variable:?message}
  $variableが存在し、かつnullではない場合にその値を返す。それ以外の場合は変数名とmessageを出力してスクリプトを終了する。
${variable:+word}
  $variableが存在し、かつnullではない場合にwordを返す。それ以外の場合はnullを返す。
${variable:offset:length}
  部分文字列を展開する。$variableの値からoffsetの位置からlength文字長さの部分文字列を取り出す。1文字目のoffsetは0。負のoffsetが指定された際には文字列末尾からの位置指定として扱う。対象変数が$@の場合にはoffset及びlengthは位置パラメータとして扱われる。

コメント

コメントの投稿















管理者にだけ表示を許可する

トラックバック

この記事のトラックバックURL
http://haginov.blog35.fc2.com/tb.php/61-715d0eff

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。