Escreva o comando em um terminal, veja o resultado em outro


Respostas:


46

Sim. Uma imagem vale mais que mil palavras:

terminal do radu

Portanto, você deve redirecionar a saída do seu comando usando o >operador para /dev/pts/#. Você pode encontrar #usando whoou wcomando. Se você deseja redirecionar e os erros, use:

<command> >& /dev/pts/#

obrigado. mas se o outro terminal não existir. o que devemos fazer? Ou melhor, dizer: passe para um mais novo?
Mohammad Reza Rezwani

5
Você provavelmente precisará de um script para fazer isso: o script terá como argumento seu comando, então deverá abrir um novo gnome-terminale detectar o tty (usando o ttycomando) do novo terminal e, finalmente, enviar a saída para ele.
Radu Rădeanu

8

Algo assim para o seu $HOME/.bashrc:

ng() { gnome-terminal -x sh -c "$*; bash"; }

Isso executará um comando e mostra o resultado em uma nova janela do terminal.

Exemplos:

ng ls -l
ng echo foo

Editar: para considerar aliases do $HOME/.bashrcuso isto:

ng() { gnome-terminal -x bash -ic "$*; bash"; }

então a saída de lsdeve ser colorida (obrigado a Radu Rădeanu por esta dica ).


Isso executará o comando diretamente no novo terminal.
Radu Rădeanu

Sim, mas qual é a vantagem de executá-lo primeiro no terminal antigo?
12774 TuKsn em

Nenhuma vantagem ..., mas na verdade esta resposta a este comentário .
Radu Rădeanu

4
Você vai entender se você vai correr type lse depois ng type ls:)
Radu Rădeanu

1
se a função write estiver em uma linha no bashrc, talvez seja necessário um ponto-e-vírgula para finalizá-la ou você encontrará um erro "fim inesperado de arquivo". então ng() { gnome-terminal -x sh -c "$*; bash" ;}deveria ser melhor. E se você estiver usando o Xfce (xfce4-terminal como emulador padrão): ng() { xfce4-terminal -x sh -c "$*; bash" ;}ou você pode simplesmente executar por qualquer emulador padrãong() { x-terminal-emulator -x sh -c "$*; bash";}
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.