rlwrap
アスタリスクでヒントを塗りつぶすために使用するものCLI
:
rlwrap -s 99999 -a -pRED /usr/sbin/asterisk -r
man rlwrap
私も使えると読んだ
rlwrap -z pipeto
シェーダパイプラインを介して出力されます。grc
次のように動作するシェーダがあります。
cat foo | grcat <conf_file>
上記の例では、のfoo
規則を使用して色付けされています<conf_file>
。
rlwrap -z pipeto
throughの出力に色を割り当てる方法は?rlwrap
grcat
答え1
pipeto
残念ながら、rlwrap
組み込みフィルタはpipeto
所望の方法で出力をフィルタリングしない。文書は非常に誤解を招くと思われますが、対話式にrlwrap -z pipeto some-shell
実行すると、次のようなことが行われます。
パイプ記号()なしでコマンドを入力すると、
|
そのコマンドはそのまま渡され、some-shell
その出力は単に印刷されます。と入力すると
command | filter
インタプリタcommand
に渡され、出力は印刷前にパイプされます(Unixシェルのコマンドラインから実行できるコマンドはどこにありますか?)。some-shell
filter
filter
rlwrap -z pipeto asterisk
したがって、良いニュースは、| grc
実行してからアスタリスクに渡す各コマンドに追加することを覚えておいて、必要な動作を達成できることです。しかし、それはあまり便利ではありませんか?したがってoutfilter
、。
outfilter
次のフィルタスクリプトを作成することをお勧めしますrlwrap
。
#! /usr/bin/perl
use lib ($ENV{RLWRAP_FILTERDIR} or ".");
use RlwrapFilter;
use strict;
my $filter = new RlwrapFilter;
my $name = $filter->name;
my $filter_command = join ' ', @ARGV;
$filter->help_text("Usage: rlwrap -z '$name <filter-command>' <command>\n"
. "Filter <command> output through <filter-command>");
$filter->output_handler(sub {""});
$filter->prompt_handler(\&prompt);
$filter->run;
sub prompt {
my $prompt = shift;
my $output = $filter->cumulative_output;
$output =~ s/\r//g;
open (PIPE, "| $filter_command")
or die "Failed to create pipe: $!";
print PIPE $output;
close PIPE;
return $prompt;
}
として保存し、outfilter
実行可能にしてから実行しますrlwrap -z './outfilter <coloring-filter>' shell
。私は以前試しました:
rlwrap -z './outfilter ccze -A' gosh
これはGaucheの出力を素敵に着色します。あなたの場合は次のようになります。
rlwrap -z './outfilter grcat grcat-config' asterisk
フィルタが好きでパスを指定せずに実行できるようにするには、組み込みフィルタと一緒にフィルタを移動できます(私のシステムのディレクトリ/usr/share/rlwrap/filters
)。
作成されたフィルタはおそらく非効率的であり(コマンドシェルとのすべての対話に対してシェーダフィルタの新しいコピーを作成します。これはバッファを空にするための最短の方法であるため)壊れやすいです。自分自身と相互作用しても、どんな黒魔術も生成されません。動作します。