Isso porque, o
echo "j" > /proc/5440/fd/0
na verdade, é algo assim (o pts
number pode ser diferente no seu caso):
echo "j" > /dev/pts/2
Explicação:
Eu não tenho ranger
, então eu estava rodando vim
- a não diferença aqui, o mecanismo é o mesmo. Então, descobri o% PID vim
e procurei no diretório 6466
:
$ ls -l /proc/6466/fd
lrwx------ 1 minimax minimax 64 Nov 20 01:20 0 -> /dev/pts/2
lrwx------ 1 minimax minimax 64 Nov 20 01:20 1 -> /dev/pts/2
lrwx------ 1 minimax minimax 64 Nov 20 01:20 2 -> /dev/pts/2
Todos os descritores de arquivo do processo /proc/6466/fd
são links simbólicos para o terminal atual. Assim, o vim
converte para o echo "j" > /proc/5440/fd/0
, o que significa literalmente: "Redirecionar a saída do comando echo "j" > /dev/pts/2
para o arquivo de terminal echo
". Não para o stdin do processo de /dev/pts/2
.
Tanto quanto eu sei, o terminal pode obter entrada apenas do teclado e não há como passar a entrada para ele de outra forma. Então, você precisa procurar outro método para transmitir comandos ao processo de trabalho.
Além disso, lembre-se de que vim
adiciona a nova linha à saída, o que está causando a impressão de echo
por escadas, no seu caso. Se alterar para j
, a saída será echo -n j
- sem novas linhas.