sqlplusにヒストリ
sqlplusでカーソルキーを入力すると、^[[Aとか出てきて補完してくれない。
HP-UXだとied sqlplusで良いそうだが、Linuxだとどうするのか?
Rubyだとこんな感じらしい。
http://homepage1.nifty.com/~tetsu/ruby/diary/9906.html
#!/usr/bin/perl use Term::ReadLine; my $term = new Term::ReadLine 'my_term'; my $prompt = "SQL> "; my $OUT = $term->OUT || STDOUT; my $pid = open(KID_TO_WRITE, "|-"); die "can't fork" unless (defined $pid); if ($pid) { $old = select(KID_TO_WRITE); $| = 1; select($old); while ( defined ($_ = $term->readline($prompt)) ) { print KID_TO_WRITE "$_\n"; if ($_ eq 'exit') { sleep 1; last; } $term->addhistory($_) if /\S/; } close(KID_TO_WRITE); } else { my @options; my @args = @ARGV; my $program = shift @args; exec($program, @options, @args); }
この辺からコピペしています。
http://www.hyuki.com/yukiwiki/wiki.cgi?Term%3A%3AReadLine.pm
http://www.kt.rim.or.jp/~kbk/perl5.005/perlipc.html
まあ、ないよりマシということで。
使い方は ./tmp.pl sqlplus / as sysdba
みたいな感じ。
補足:
Term::ReadLineは、Term::ReadLine::Gnuが入っていないとヒストリーが機能しないようだ。Term::ReadLine::Gnuを単独で入れるのは面倒(色々足りないとか怒られる)。
# perl -e shell -MCPAN cpan> install Bundle::CPAN
で、とりあえずOK。