Saída Saída do comando para linha de comando diretamente, NÃO variável [duplicada]

5

Estou no bash shell e quero que a saída de um comando apareça diretamente no prompt de comando que aparece depois que o comando foi executado!

Exemplo do que eu imagino, para ilustrar minha ideia:

locate create_tables.sql|MAGIC_command
user@localhost:~# /usr/share/doc/phpmyadmin/create_tables.sql

Agora, usando comman dsubstitution como este

sudo $(locate create-tables.sql)

funciona, mas executa imediatamente a saída, eu gostaria de poder editá-la antes. Existe um caminho?

    
por dawg 05.07.2015 / 21:11

3 respostas

5

No modo Emacs, digite sudo $(locate create-tables.sql) , Esc , Controle + e

Veja shell-expand-line em Manual de referência do bash :

Expand the line as the shell does. This performs alias and history expansion as well as all of the shell word expansions

    
por 05.07.2015 / 23:22
4

Eu geralmente uso a área de transferência para esse tipo de coisa

$ some_command | cb
$ cb_edit
$ 'cb' #or paste it with your paste button/shortcut

A magia:

 cb() {
  if [ ! -t 0 ]; then
    #if somebody's piping in reproduce input and pipe a copy to the clipboard
    tee >(xclip -selection c)
  else
    #otherwise, print the contents of the clipboard
    xclip -selection c -o 
  fi
}
cb_edit() { cb | vipe "$@" | cb; }
    
por 06.07.2015 / 00:32
2

Não é uma solução muito elegante armazenar a saída em algum arquivo tmp, editar esse arquivo e depois executar:

$ locate create_tables.sql > /tmp/tmpfile
$ vi !$    # last argument of last command
$ bash !$
    
por 05.07.2015 / 22:58