Ho uno script Bash che restituisce un comando. Vorrei eseguire lo script e lasciare che stampi automaticamente il risultato dietro il prompt nella riga successiva. Anche sostituire la chiamata di script nella riga corrente sarebbe un'opzione. In questo modo ho potuto modificare il comando prima di eseguirlo. Questo può essere ottenuto all'interno di un terminale con Bash?Stampa risultato di script bash dietro prompt nella riga successiva
risposta
Oltre all'opzione "usa un file temporaneo" fornita in user3035772's comment, un'altra opzione sarebbe quella di utilizzare la cronologia della shell per questo.
Supponendo che il comando che crea l'output è un comando di shell (o si può essere sicuro che la sua uscita è solo il comando che si desidera eseguire in seguito) è possibile utilizzare history -s
per memorizzare un comando nella storia e poi richiamarlo sulla riga di comando per modificarlo (o utilizzare fc
per farlo).
history -s 'echo whatever you "want your" command to be'
Quindi utilizzare fc
di modificarla nel vostro $EDITOR
o colpire la freccia verso l'alto o Ctrl-p per caricare la voce Cronologia nella riga di input corrente.
Se si esegue bash all'interno di tmux (multiplexer di terminale), è possibile utilizzare le sue funzioni di buffer per incollare un comando al prompt. È quindi possibile modificare il comando prima di eseguirlo. Ecco un esempio banale:
#!/bin/bash
tmux set-buffer 'ls -l'
tmux paste-buffer &
Mettere il comando Incolla-buffer in uscita bash sullo sfondo di lasciare che il prompt prima la pasta accade. Se la pasta accade troppo in fretta, è possibile aggiungere un sub-secondo di sonno in questo modo:
#!/bin/bash
tmux set-buffer 'ls -l'
{ sleep .25; tmux paste-buffer; } &
- 1. Come rendere JLabels iniziano nella riga successiva
- 2. SSH heredoc: prompt di bash
- 3. Leggi riga per riga in script bash
- 4. Inserisci una nuova riga per i prompt di bash
- 5. Come eseguire lo script bash riga per riga?
- 6. Self-daemonizing bash script di
- 7. comprensione di quotazioni $ '' nella bash
- 8. Script Bash/Expect per SSH
- 9. sostituire il carattere di nuova riga nella variabile bash?
- 10. Errore di script Bash Catching
- 11. breve data in bash prompt PS1
- 12. Lo script Bash legge solo la prima riga del file
- 13. Wrap tavoli lungo HTML a riga successiva
- 14. Sfondo triangolare per bash prompt PS1
- 15. Bypassare prompt (a premere ritorno) in homebrew script di installazione
- 16. Script Bash con menu grafici
- 17. Wrap table row alla riga successiva
- 18. Numero di avvolgimento riga di prompt della shell
- 19. Impossibile convertire script Bash script Zsh
- 20. Ottenere la riga successiva in un file
- 21. Bash loop, stampa corrente iterazione?
- 22. Impostazione dei colori per prompt in Git Bash su Windows
- 23. incontro "operatore unario previsto" nello script bash
- 24. incorporare brevi script python all'interno di uno script bash
- 25. Auto cancellazione di script bash
- 26. parametri di script in Bash
- 27. Stringa di stampa Haskell senza nuova riga
- 28. bash printf con nuova riga
- 29. Script Bash che cattura l'output sul terminale
- 30. Script Bash o Bourne?
Come facile da implementare alternativa a questo comportamento, si potrebbe aprire un editor che contiene il comando e quindi fonte il file modificato : 'trap 'rm -f -" $ cmd_file "' ESCI; cmd_file = $ (mktemp); printf% s \\ n "$ command"> "$ cmd_file"; $ {EDITOR: -nano} - "$ cmd_file" && (. "$ Cmd_file") ' – user3035772
@ user3035772 Buona idea! Tuttavia, dovrebbe essere '$ {EDITOR: -vim}'; D – hek2mgl
correlati: http://stackoverflow.com/questions/5374255/how-to-write-data-to-existing-processs-stdin-from-external -processo –