LoginSignup
25
10

More than 5 years have passed since last update.

[rlwrap] 任意のシェルコマンドを対話モード化する [作り直した]

Posted at

似たようなタイトルの記事を書いてすまなんだ

今北産業

  • これ作った↓
  • ウンコードだったから作り直した
  • rlwrapくん偉いぞ

つくったやつ

rlwrapってなんぞや

readline(ターミナルの標準入力的なやつ)をラップするやつ。
名前も r(ead)l(ine)wrap からきてると思う

readlineはアローキーを押したときの挙動がしょぼい。そういう悲しみを解消してくれるコマンド

rlwrapをつかわないとこうなる▼ (↑↓←→↑の順で押してます)

悲しみ

rlwrapを使ってみる

sqlplusもその悲しみを背負ったコマンドらしいので、sqlplusに対してrlwrapが使われてるらしい(知らなかった)。

要するに、

$ rlwrap sqlplus

ってするらしい。sqlplusを使う人はだいたい.zshrcあたりに
alias sqlplus="rlwrap sqlplus"なんてしてるらしいよ

本題

前に書いた これ http://qiita.com/ahyahya/items/b11b5d2dc30193c9c864
流石に実装がひどいなあと思ったから作り直した。

概要

任意のコマンドを対話モード化するためのコマンドinteract

例えば、gitしか弄らない予定のターミナルタブを開いたとする。毎回「git」って打つのめんどいだけだし省略したい。これを使えば解決する

需要はほとんどないとおもう

インストール

mac

$ curl -sL https://raw.githubusercontent.com/ahyahya/interact/master/install.sh | bash

linux

rlwrapをyumかなにかでインストールして、install.shをみながらやれば入ると思います。多分。がんばって

使い方

察してくれ

つくったやつ

なかみ

メインロジックはこれだけ▼

_interact

#!/bin/bash

cmd=$*
while true ; do
  echo -ne "\033[34m[ $cmd ] >> \033[00m"
  read args
  line=$cmd" "$args
  $line
done

前に比べるとだいぶコード短くなった。
これを呼びたいわけだけどrlwrapしないとだねってことで↓を用意

interact

#!/bin/bash

rlwrap _interact "$*"

やったぜ。

25
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
10