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
).
작성된 필터는 아마도 비효율적일 수 있으며(명령 셸과의 모든 상호 작용에 대해 셰이더 필터의 새 복사본을 생성합니다. 이것이 버퍼를 비우기 위해 찾을 수 있는 가장 짧은 방법이기 때문입니다) 깨지기 쉽습니다. 자기 자신과 상호작용한다고 해서 어떤 흑마술도 생성되지는 않습니다. 작동할 것입니다.