GNU/Linux >> Linux Esercitazione >  >> Linux

$_ Vs!$. Ultimo argomento del comando precedente e reindirizzamento dell'output?

La domanda riguarda le variabili speciali. La documentazione dice:

!!:$

designa l'ultimo argomento del comando precedente . Questo può
essere abbreviato in !$ .

($_ , un carattere di sottolineatura.) All'avvio della shell, impostare il percorso assoluto utilizzato per richiamare la shell o lo script della shell eseguito come passato nell'ambiente
o nell'elenco di argomenti. Successivamente, si espande all'ultimo argomento del comando precedente dopo l'espansione. Imposta anche il percorso completo utilizzato per richiamare ogni comando eseguito e inserito nell'ambiente
esportato in quel comando.

Ci deve essere qualche differenza che non riesco a cogliere, perché:

$ echo "hello" > /tmp/a.txt
$ echo "!$"
echo "/tmp/a.txt"
/tmp/a.txt

$ echo "hello" > /tmp/a.txt
$ echo $_
hello

Qual è la differenza?

Risposta accettata:

!$ è una parola che designa l'espansione della cronologia, si espande all'ultima parola del comando precedente nella storia . IOW, l'ultima parola della voce precedente nella storia. Questa parola è solitamente l'ultimo argomento da comandare, ma non in caso di reindirizzamento. In:

echo "hello" > /tmp/a.txt

l'intero comando 'echo "hello" > /tmp/a.txt' è apparso nella cronologia e /tmp/a.txt è l'ultima parola di quel comando.

_ è un parametro della shell, si espande all'ultimo argomento del comando precedente. Qui, il reindirizzamento non fa parte degli argomenti passati al comando, quindi solo hello è l'argomento passato a echo . Ecco perché $_ esteso a hello .

_ non è più uno dei parametri speciali standard della shell. Funziona in bash , zsh , mksh e dash solo quando interattivo, ksh93 solo quando due comandi sono su righe separate:

$ echo 1 && echo $_
1
/usr/bin/ksh

$ echo 1
1
$ echo $_
1

Linux
  1. CentOS / RHEL:come ottenere la data e l'ora del comando eseguito nell'output del comando della cronologia

  2. Come aggiungere l'output a un file?

  3. Ottieni gli ultimi 4 caratteri dell'output da standard out

  4. Slash e il comando rsync

  5. Memorizza l'output del comando date e watch in un file

Lavorare con l'output di input e il reindirizzamento degli errori in Linux

Prettyping – Rendi l'output del comando Ping più carino e più facile da leggere

Come modificare il colore di output di "Echo" in Linux

Come accedere all'ultimo argomento di un comando commentato?

Spiegazione:input, output e reindirizzamento degli errori in Linux

Esempi di comandi echo Linux