Em vez de adicionar ferramentas, você pode usar as que provavelmente terá (e, no processo, aprender alguma coisa). Se você quiser usar o Puppy Linux efetivamente, isso seria uma coisa boa > em>.
Aqui está um exemplo rápido usando apenas o shell, cat
, printf
, stty
e tty
(todas as partes do GNU CoreUtils, embora o exemplo evita o uso de recursos não-portáteis fornecidos por esses programas):
#!/bin/sh
# $Id: osc4-demo,v 1.2 2016/04/03 12:50:20 tom Exp $
# A simple demo for retrieving a color using xterm's OSC 4 control
osc4_demo() {
result=$(
old=$(stty -g);
stty raw -echo min 0 time 2;
printf '3]4;%d;?$ osc4-demo 4 44 144 244
asked 4, result: ^[]4;4;rgb:0000/0000/eeee^G
asked 44, result: ^[]4;44;rgb:0000/d7d7/d7d7^G
asked 144, result: ^[]4;144;rgb:afaf/afaf/8787^G
asked 244, result: ^[]4;244;rgb:8080/8080/8080^G
7' "$1" >$(tty);
cat $(tty);
stty $old
)
echo "asked $1, result: $(echo "$result" | cat -v)"
}
for code in "$@"
do
osc4_demo $code
done
O script define a variável result
e a ecoa no formato imprimível. Por exemplo:
exec < /dev/tty
Funciona alterando temporariamente o terminal para o modo raw, com a capacidade de ler os valores sem uma nova linha final. Isso é essencialmente o que as ferramentas fariam.
Como o script envia / recebe para / do real tty
, você pode redirecionar o resultado para um arquivo. Ele usa a opção -v
de cat
para tornar o resultado legível (embora a variável real controle os caracteres de controle).
Eu considerei adicionar
#!/bin/sh
# $Id: osc4-demo,v 1.2 2016/04/03 12:50:20 tom Exp $
# A simple demo for retrieving a color using xterm's OSC 4 control
osc4_demo() {
result=$(
old=$(stty -g);
stty raw -echo min 0 time 2;
printf '3]4;%d;?$ osc4-demo 4 44 144 244
asked 4, result: ^[]4;4;rgb:0000/0000/eeee^G
asked 44, result: ^[]4;44;rgb:0000/d7d7/d7d7^G
asked 144, result: ^[]4;144;rgb:afaf/afaf/8787^G
asked 244, result: ^[]4;244;rgb:8080/8080/8080^G
7' "$1" >$(tty);
cat $(tty);
stty $old
)
echo "asked $1, result: $(echo "$result" | cat -v)"
}
for code in "$@"
do
osc4_demo $code
done
para melhorar isso, baseado em outros scripts para o xterm (veja, por exemplo, Usando exec no Advanced Bash-Scripting Guide ), mas descobriu que isso não ajudou com o traço do Debian.
A expressão multilinha pode, é claro, ser dobrada em uma única linha para aqueles que insistem nesse formulário, com a usual perda de clareza.
Leitura adicional: