UNIX/Linuxの部屋 rlwrapコマンドの使い方

TOP UNIX/Linuxの部屋 UNIX/Linuxコマンド一覧 用語集 新版 由来/読み方辞書 環境変数マニュアル Cシェル変数 システム設定ファイル システムコール・ライブラリ ネットワークプログラミングの基礎知識 クラウドサービス徹底比較・徹底解説




コマンド rlwrap 既存プログラムを readline 対応させ、便利な行編集機能を追加できる wrapper コマンド このエントリーをはてなブックマークに追加

最終更新


rlwrap コマンドは、行入力においてヒストリ機能などがないコマンドに、readline 相当の
機能を後付けする wrapper コマンドである。これにより、Ctrl-a で行頭移動・Ctrl-p でヒストリをさかのぼる、といったことが簡単に実現できる



rlwrap コマンドの基本的な使い方
実例を見るのが早いだろう。下記はユーザに入力させ、q なら終了、それ以外なら入力された文字列を表示するだけのシェルスクリプトである。
#!/bin/sh
while [ 1 ]; do
/bin/echo -n "Type Yes/No: "
read line
case $line in
[qQ])
break
;;
*)
echo your input is $line
esac
done
このスクリプトを rlwrap-sample.sh として保存し、実行権限をつけて実行してみる。
% chmod +x rlwarp-sample.sh
% ./rlwarp-sample.sh
Type Yes/No: hoge
your input is hoge
⇒ 入力した文字列が表示されるのはいいとして…
Type Yes/No: ^P
⇒ Ctrl-p を押してもヒストリをさかのぼれない
Type Yes/No: aaa^A
⇒ 入力途中で Ctrl-a を押しても行頭に移動できない
上記のように、Ctrl-p を押してもヒストリをさかのぼれないし、入力途中で Ctrl-a を押しても行頭に移動できない。

rlwrap コマンド経由で実行
これを rlwrap コマンド経由で実行してみよう。
% rlwrap ./rlwarp-sample.sh
すると、スクリプト自体には一切修正を加えていないのに Ctrl-a や Ctrl-p など、bash ライクなキーバインドが使えるようになってる。

rlwrap コマンドのヒストリファイル
デフォルトでは ~/.rlwrap-sample.sh_history として履歴ファイルが作成されるので、次回起動時でもこの履歴ファイルを元にヒストリ機能が効くようになっている。

SQL*plus と rlwrap
Oracle に同梱されている SQL*plus (sqlplus ) コマンドと言えば、世界中のエンジニアの忍耐力を向上させてきたコマンドとして有名である。このコマンドも、rlwrap を使うことで幸せになっている人がたくさんいるので、ぐぐってみてほしい。