GNU/Linux >> Linux Esercitazione >  >> Linux

Come accedere all'ultimo argomento di un comando commentato?

Trovo . (alt . per molti altri) per essere molto utile quando si lavora in un terminale, inserendo l'ultimo argomento dall'ultima riga al prompt corrente. Tuttavia, non funziona quando l'ultima riga è stata commentata (supponendo set -o interactivecomments ).

Non riesco a pensare a un caso d'uso esatto, ma è successo diverse volte che ho commentato un comando che prima dell'esecuzione mi rendevo conto che non era quello di cui avevo bisogno a quel punto, e quindi volevo l'argomento finale in un comando successivo.

Mi rendo conto che c'è una logica nell'ignorare tutto ciò che viene commentato, poiché non viene mai interpretato e quindi nessuno di essi viene tokenizzato in argomenti, ma c'è un modo per fare quello che voglio?

Non sarebbe l'ideale, ma sarebbe utilizzabile, se dovessi utilizzare una sequenza di tasti diversa, associata a un comando alternativo che farebbe ciò che voglio.

Sto usando Zsh, ma una soluzione Bash potrebbe funzionare o essere vicina a ciò che dovrei fare in Zsh.

Risposta accettata:

Non commentare il comando.

Invece, inserisci un : nella parte anteriore anziché un # . Ciò renderà gli argomenti del testo del comando nell'utilità nulla : , che non fa nulla quando viene eseguito. Gli argomenti vengono tokenizzati e analizzati, perché è ancora un comando, ma non viene fatto nient'altro.

Ci sono casi in cui questo non è adatto:in particolare, quando si calcola il comando stesso ha effetti collaterali. Un semplice esempio è la sostituzione dei comandi:

$ : log $(find -print -delete) --target /var/run/cache

In questo caso, il comando all'interno di $(...) verrebbe eseguito e sostituito negli argomenti di : , anche se il comando originale stesso non verrebbe mai eseguito. Un caso meno distruttivo sarebbe ${foo:=default} espansione del parametro, che ha l'effetto collaterale di assegnare un valore a $foo .

Infine, i reindirizzamenti o le pipe avranno ancora luogo:

$ : foo > outfile
$ : bar | grep x | ...

in entrambi i casi invierà un output vuoto nella destinazione, che troncherà o creerà il file o eseguirà i comandi successivi, a cui potrebbe non piacere l'input vuoto che ottengono.

Se non hai nessuna di queste preoccupazioni speciali per il tuo comando, questo è completamente sicuro e funziona in zsh, Bash e qualsiasi shell compatibile con POSIX (sebbene il comportamento alt-. in seguito non funzionerà ovunque).

Se è specificamente l'ultima parola che desideri, zsh fornisce associazioni di tasti e comandi personalizzabili che puoi utilizzare per manipolare la riga di comando. Se bindkey '^K' kill-region quindi puoi tornare a prima della parola, CtrlK per cancellare all'inizio della riga, : , e poi avere un comando sicuro con solo la parola che ti interessa rimasta.

Correlati:Debian – Come installare alcuni pacchetti da Debian "unstable" su un computer che esegue Debian "stable"?
Linux
  1. Come usare il comando Linux grep

  2. Come usare il comando cronologia in Linux

  3. Come funziona il comando oc debug in OpenShift

  4. Come posso richiamare l'argomento del precedente comando bash?

  5. Come stampare l'ultima riga di un file compresso gz nella riga di comando?

Come utilizzare il comando tee di Linux

Come utilizzare il comando superiore in Linux

Come utilizzare il comando Ping di Linux

Come usare il comando nmap

Come personalizzare il comando top di Linux

Come utilizzare il comando fd sul sistema Linux