È possibile creare un alias di Bash che inserisce una determinata stringa in Terminal?

1

È possibile creare un alias di Bash che, quando è in esecuzione, inserisce una stringa della mia scelta precedente in Terminal?

Facciamo finta che questo sia nel mio ~/.bash_profile :

alias start_youtube="cd ~/Video/Youtube; **[PASTE: youtube-dl URL]**"

Immagina che: l'alias cambierebbe la directory in Video/Youtube e poi [PASTE] la stringa: youtube-dl URL . Potrebbe fare Return ⏎ o preferibilmente lasciare la stringa youtube-dl URL nel prompt Terminal in modo da poter scambiare l'URL segnaposto per un URL reale.

Se provo effettivamente a eseguire l'alias sottostante;

alias start_youtube="cd ~/Video/Youtube; youtube-dl URL"

eseguirà il comando immesso da cui youtube-dl restituirà un errore come "Impossibile analizzare l'URL" - che avrebbe potuto andare bene. Ma premendo il tasto non mostreremo l'ultimo input dell'alias ( youtube-dl URL ) ma mostreremo piuttosto il richiamo dell'alias ( start_youtube ) [che di solito sono preferibile].

Quindi la soluzione richiesta è di incollare una stringa segnaposto nel Prompt dei comandi, o in qualche modo accedere alla cronologia del comando alias tramite Shell.

    
posta Winterflags 30.07.2017 - 17:41
fonte

2 risposte

1

Ecco come vorrei affrontarlo. Utilizza questa domanda correlata per scrivere la funzione che risiederebbe nella tua bashrc o bash_profile . Quindi aggiungi una riga nella funzione che cancellerebbe la riga più recente nella cronologia di bash utilizzando questo

    
risposta data 30.07.2017 - 19:05
fonte
1

Potresti usare osascript per questo e dire agli eventi di sistema di digitare le chiavi per te. In generale, sconsiglio vivamente l'intero approccio all'invio ciecamente di sequenze di tasti alla shell, puoi devastare il tuo sistema con questo!

osascript -e 'tell application "Terminal" to activate' -e 'tell application "System Events" to keystroke "# cd /tmp; your text" '

Per motivi di sicurezza, invio il carattere di commento # come primo carattere, ma questa riga indica il risultato desiderato. Il cursore attende dopo il tuo testo e puoi continuare a digitare.

    
risposta data 11.08.2017 - 22:34
fonte

Leggi altre domande sui tag