Il FC comando, abbreviazione di f ix c ommands, è un comando integrato nella shell utilizzato per elencare, modificare e rieseguire i comandi inseriti più di recente in una shell interattiva. Puoi modificare i comandi inseriti di recente nel tuo editor preferito ed eseguirli senza dover riscrivere tutti i comandi. Questo comando può essere utile per correggere gli errori di ortografia nei comandi inseriti in precedenza ed evita la ripetizione di comandi lunghi e complicati. Poiché è integrato nella shell, è disponibile nella maggior parte delle shell, incluse Bash, Zsh, Ksh ecc. In questo breve tutorial impareremo a usare il comando fc in Linux.
Elenca i comandi eseguiti di recente con il comando fc
Se esegui fc -l
comando senza argomenti, visualizzerà gli ultimi 16 comandi.
$ fc -l 507 fish 508 fc -l 509 sudo netctl restart wlp9s0sktab 510 ls -l 511 pwd 512 uname -r 513 uname -ms 514 touch ostechnix.txt 515 vi ostechnix.txt 516 echo "Welcome to OSTechNix" 517 sudo apcman -Syu 518 sudo pacman -Syu 519 more ostechnix.txt 520 wc -l ostechnix.txt 521 cat ostechnix.txt 522 clear
Per invertire l'ordine dei comandi, usa -r
bandiera.
$ fc -r
Puoi sopprimere i numeri di riga usando -n
bandiera.
$ fc -ln nano ~/.profile source ~/.profile source ~/.profile fc -ln fc -l sudo netctl restart wlp9s0sktab ls -l pwd uname -r uname -ms echo "Welcome to OSTechNix" sudo apcman -Syu cat ostechnix.txt wc -l ostechnix.txt more ostechnix.txt clear
Ora non vedrai i numeri di riga.
Per elencare il risultato partendo da un comando specifico, usa semplicemente il numero di riga insieme a -l
opzione. Ad esempio, per visualizzare i comandi a partire dalla riga numero 520 fino ad oggi, facciamo:
$ fc -l 520 520 ls -l 521 pwd 522 uname -r 523 uname -ms 524 echo "Welcome to OSTechNix" 525 sudo apcman -Syu 526 cat ostechnix.txt 527 wc -l ostechnix.txt 528 more ostechnix.txt 529 clear 530 fc -ln 531 fc -l
Per elencare un comando all'interno di un intervallo specifico, ad esempio 520 a 525 , fai:
$ fc -l 520 525 520 ls -l 521 pwd 522 uname -r 523 uname -ms 524 echo "Welcome to OSTechNix" 525 sudo apcman -Syu
Invece di usare i numeri di riga, possiamo anche usare le stringhe. Ad esempio, elenca i comandi a partire da pwd
comando fino al risentimento, usa semplicemente la lettera iniziale di quel comando (cioè p ) come di seguito.
$ fc -l p 521 pwd 522 uname -r 523 uname -ms 524 echo "Welcome to OSTechNix" 525 sudo apcman -Syu 526 cat ostechnix.txt 527 wc -l ostechnix.txt 528 more ostechnix.txt 529 clear 530 fc -ln 531 fc -l 532 fc -l 520 533 fc -l 520 525 534 fc -l 520 535 fc -l 522 536 fc -l l
Per vedere tutto tra pwd
per more
comando, puoi usare uno dei due:
$ fc -l p m
Oppure, usa la combinazione della prima lettera del comando iniziale e del numero di riga del comando finale:
$ fc -l p 528
Oppure, solo i numeri di riga dei comandi di inizio e fine:
$ fc -l 521 528
Tutti questi tre comandi visualizzeranno lo stesso risultato.
Modifica ed esegui nuovamente l'ultimo comando automaticamente
A volte, potresti aver sbagliato a scrivere un comando precedente. In tali situazioni, puoi facilmente modificare gli errori di ortografia del comando utilizzando il tuo editor predefinito ed eseguirlo senza doverlo riscrivere.
Per modificare l'ultimo comando ed eseguirlo di nuovo, fai:
$ fc
Questo aprirà il tuo ultimo comando nell'editor predefinito.

Come puoi vedere nello screenshot qui sopra, il mio ultimo comando è stato "fc -l"
. Ora puoi apportare qualsiasi modifica al comando ed eseguirlo nuovamente automaticamente una volta salvato e chiuso l'editor. Questo può essere utile quando usi comandi o argomenti lunghi e complicati.
Nota importante: Tieni presente che anche questo può essere un distruttivo . Ad esempio, se il comando precedente era un comando mortale come "rm -fr <some-path>"
, verrà eseguito automaticamente e potresti perdere i tuoi dati importanti. Quindi, DEVI stare molto attento mentre usi fc
comando.
Cambia l'editor predefinito per modificare i comandi
Un'altra opzione notevole di fc è "e"
che viene utilizzato per scegliere un editor diverso per modificare i comandi. Ad esempio, possiamo usare "nano"
editor per modificare l'ultimo comando come di seguito.
$ fc -e nano
Questo comando aprirà il nano editor (invece dell'editor predefinito) per modificare l'ultimo comando.

L'utilizzo di -e
potrebbe richiedere molto tempo opzione per ogni comando. Per impostare il nuovo editor come predefinito, imposta la variabile di ambiente FCEDIT
al nome dell'editor che vuoi fc da usare.
Ad esempio, per impostare "nano" come nuovo editor predefinito, modifica il tuo ~/.profile
o file di ambiente:
$ vi ~/.profile
Aggiungi la seguente riga:
FCEDIT=nano
Puoi anche utilizzare il percorso completo dell'editor come di seguito.
FCEDIT=/usr/local/bin/emacs
Digita :wq
per salvare e chiudere il file. Per aggiornare le modifiche, esegui:
$ source ~/.profile
Ora puoi semplicemente digitare "fc" per modificare l'ultimo comando usando "nano"
editore.
Esegui nuovamente l'ultimo comando senza modificarlo
Sapevamo già che se eseguiamo "fc" senza argomenti, carica l'editor con il comando più recente. A volte, potresti non voler modificare, ma semplicemente eseguire l'ultimo comando. Per farlo, usa il trattino (-
) alla fine come mostrato di seguito.
$ echo "Welcome to OSTechNix" Welcome to OSTechNix $ fc -e - echo "Welcome to OSTechNix" Welcome to OSTechNix
Come puoi vedere, fc non ha modificato l'ultimo comando (ovvero echo "Welcome to OSTechNix") anche se ho usato -e
opzione.
Si noti che alcune delle opzioni sono specifiche della shell. Potrebbero non funzionare in altre shell. Ad esempio, le seguenti opzioni possono essere utilizzate in zsh guscio. Non funzioneranno nelle shell Bash o Ksh.
Visualizza quando i comandi sono stati eseguiti
Per vedere quando sono stati eseguiti i comandi, usa -d come di seguito.
fc -ld 1 18:41 exit 2 18:41 clear 3 18:42 fc -l 4 18:42 sudo netctl restart wlp9s0sktab 5 18:42 ls -l 6 18:42 pwd 7 18:42 uname -r 8 18:43 uname -ms 9 18:43 cat ostechnix.txt 10 18:43 echo "Welcome to OSTechNix" 11 18:43 more ostechnix.txt 12 18:43 wc -l ostechnix.txt 13 18:43 cat ostechnix.txt 14 18:43 clear 15 18:43 fc -l
Ora vedi il tempo di esecuzione degli ultimi comandi eseguiti.
Possiamo anche visualizzare il timestamp completo di ogni comando usando -f
opzione.
fc -lf 1 4/5/2018 18:41 exit 2 4/5/2018 18:41 clear 3 4/5/2018 18:42 fc -l 4 4/5/2018 18:42 sudo netctl restart wlp9s0sktab 5 4/5/2018 18:42 ls -l 6 4/5/2018 18:42 pwd 7 4/5/2018 18:42 uname -r 8 4/5/2018 18:43 uname -ms 9 4/5/2018 18:43 cat ostechnix.txt 10 4/5/2018 18:43 echo "Welcome to OSTechNix" 11 4/5/2018 18:43 more ostechnix.txt 12 4/5/2018 18:43 wc -l ostechnix.txt 13 4/5/2018 18:43 cat ostechnix.txt 14 4/5/2018 18:43 clear 15 4/5/2018 18:43 fc -l 16 4/5/2018 18:43 fc -ld
Naturalmente, la gente europea può usare il formato della data europea usando -E
opzione.
fc -lE 2 5.4.2018 18:41 clear 3 5.4.2018 18:42 fc -l 4 5.4.2018 18:42 sudo netctl restart wlp9s0sktab 5 5.4.2018 18:42 ls -l 6 5.4.2018 18:42 pwd 7 5.4.2018 18:42 uname -r 8 5.4.2018 18:43 uname -ms 9 5.4.2018 18:43 cat ostechnix.txt 10 5.4.2018 18:43 echo "Welcome to OSTechNix" 11 5.4.2018 18:43 more ostechnix.txt 12 5.4.2018 18:43 wc -l ostechnix.txt 13 5.4.2018 18:43 cat ostechnix.txt 14 5.4.2018 18:43 clear 15 5.4.2018 18:43 fc -l 16 5.4.2018 18:43 fc -ld 17 5.4.2018 18:49 fc -lf
TL;DR
- Quando viene eseguito senza argomenti, fc caricherà il comando più recente nell'editor di testo predefinito.
- Quando si esegue con un argomento numerico, fc carica l'editor con il comando con quel numero specificato.
- Quando viene eseguito con un argomento stringa, fc carica il comando più recente che inizia con la stringa specificata.
- Quando si esegue con due argomenti in fc , gli argomenti specificano l'inizio e la fine di un intervallo di comandi.
Nota: Alcune opzioni sono obsolete nelle versioni BASH recenti.
Per maggiori dettagli, fare riferimento alle pagine man.
$ man fc
Lettura correlata:
- Diversi modi per ripetere l'ultimo comando in Linux
- Come cancellare un comando specifico dalla cronologia di Bash in Linux
- Come cancellare la cronologia della riga di comando in Linux