Come posso ottenere facilmente la penultima parola/argomento dal comando precedente in una shell interattiva bash? Mi capita spesso di eseguire comandi in background, e mi piacerebbe ottenere il file che è stato specificato prima della &
, per esempio,Come ottenere il penultimo argomento dal precedente comando bash? (in una shell bash interattiva)
% echo foo > /tmp/foo &
% cat !$
% &
Nell'esempio di cui sopra, !$
dà l'ultima parola, &
. Ma io voglio il secondo-to-the-ultimo argomento, /tmp/foo
Si noti che è possibile utilizzare i designatori di parole con una gamma come !-1:3
, ma questo è poco pratico per un comando con un gran numero di parole in cui non è subito chiaro quante parole ci sono, ad esempio,
% (set -x; date; pwd; git status; git diff; git log | tail -30; date; args=--verbose time make test; date) >& /tmp/log/make.test.20150122-Thu-0834 &
% echo !-1:30
/tmp/log/make.test.20150122-Thu-0834
l'esempio precedente funziona, ma devi contare e sapere che la parola che vuoi è la parola 30, che è in termini di tempo e soggetto a errori .
C'è un modo semplice per ottenere la penultima parola (penultima)?
(Si noti che questa domanda si riferisce agli argomenti di un comando precedente in una shell interattiva, e non per argomenti passati ad uno script di shell da linea di comando, come alcune risposte e commenti qui si riferiscono a.)
Correlato: [Come posso ottenere un argomento specifico da un comando precedente in bash?] (Http://superuser.com/q/210846/71161) – kojiro
'$ _' fornisce l'ultimo argomento dell'ultimo comando , ma ciò significherebbe il 'pippo' di' echo pippo' dal momento che non conta i non argomenti come il reindirizzamento I/O o lo sfondo. –
Eventuali duplicati di [Processo tutti gli argomenti tranne il primo] (http://stackoverflow.com/questions/9057387/process-all-arguments-except-the-first-one) –