Comando fc di Bash: Usa facilmente la shell Bash come un professionista

Hai mai eseguito un comando in Bash e ricevuto un errore a causa di una parola errata? O forse hai dimenticato gli ultimi tre comandi eseguiti? Invece di riscrivere o ricordare i comandi precedenti, il comando Bash fc può aiutarti a modificare rapidamente ed eseguire nuovamente i comandi precedenti.

In questo articolo, imparerai come sfruttare fc per modificare e rieseguire comandi dalla cronologia dei comandi. Dopo aver letto questa guida, sarai un abile guerriero della riga di comando con fc!

Prerequisiti

Questo articolo sarà un tutorial. Se prevedi di seguire passo dopo passo, hai bisogno di un computer Linux o di un computer con Windows 10 con Windows Subsystem for Linux (WSL) abilitato. Questo tutorial utilizzerà Ubuntu 20.04 LTS.

Informazioni sul comando fc di Bash

fc non è un’applicazione Linux ma un’utilità shell integrata in Bash. Bash è disponibile nella maggior parte delle principali distribuzioni Linux. Con pochi tasti, il comando fc di Bash ti consente di elencare, modificare o eseguire comandi precedenti.

Il comando fc è disponibile anche in Z Shell (ZSH). Ma l’esempio in questo articolo userà fc in Bash.

Hai eseguito un comando lungo che si è rivelato errato? fc ti salverà dal doverlo ridigitare per intero. Invece, fc ti consente di modificare il comando utilizzando l’editor di testo di tua scelta. Dopo aver salvato le modifiche, il/i comando/i modificato/i verranno eseguiti automaticamente!

Pronto per provare fc? Diamo un’occhiata!

Elenco dei comandi precedenti

Ti sei allontanato dal tuo computer, sei tornato e hai dimenticato quale comando hai eseguito per ultimo? O forse non ricordi se hai eseguito più comandi nella sequenza corretta. Cosa fai? Stai tranquillo, fc ti aiuterà a ricordare. Ecco come.

1. Apri un terminale Bash sul tuo computer.

2. Perché fc sia utile, deve avere una sorta di cronologia dei comandi con cui lavorare. Poiché hai appena aperto una nuova finestra del terminale, potrebbe non esserci ancora una cronologia dei comandi. Per creare una cronologia dei comandi per i test, copia ogni comando di seguito ed eseguilo nel tuo terminale. Questi comandi non sono invasivi e non mettono il tuo computer in pericolo.

# Clear the screen
 clear
 
# print a string to the terminal session
 echo 'working on the command line with fc'
 
# show some system information
 uname -a
 
# use PS command to get process information
 ps aux

3. Successivamente, elenca tutti i comandi nella cronologia eseguendo il comando qui sotto. L’opzione -l istruisce fc a elencare solo tutti i comandi precedenti e non eseguirli.

fc -l

Come puoi vedere qui sotto, il comando fc ha visualizzato tutti e quattro i comandi che hai precedentemente emesso. I numeri a sinistra indicano l’ordine in cui hai eseguito ciascun comando.

Listing command history with fc

Modifica e Riesecuzione dell’Ultimo Comando

Immagina una situazione in cui stai installando un’applicazione e hai commesso un errore di ortografia. Di conseguenza, il comando fallisce. Invece di riscrivere l’intero comando, perché non modificare il comando e rieseguirlo automaticamente? Per farlo, segui questi passaggi.

1. Simula l’installazione di un’applicazione inesistente eseguendo il comando qui sotto nel tuo terminale. Nota che intenzionalmente sbaglierai l’ortografia del nome dell’applicazione caffiene.

sudo apt install caffiene -y

Come risultato, l’installazione tentata fallisce. Riceverai un messaggio simile a quello qui sotto.

Failed installation message

2. Per correggere l’ultimo comando che hai eseguito, esegui il comando qui sotto nel terminale. In questo modo verrà aperto il buffer della cronologia dei comandi nell’editor di testo predefinito. In questo esempio, l’editor di testo predefinito è nano.

fc

Lo screenshot qui sotto mostra l’ultimo comando all’interno dell’editor nano.

Editing the last command with nano.

Se nano non è il tuo editor di testo preferito, puoi istruire fc a utilizzare un altro editor, come vi. Per farlo, includi l’opzione -e seguita dal nome dell’editor di testo. Ad esempio, fc -e vi aprirà la cronologia dei comandi nell’editor di testo vi.

3. Una volta dentro l’editor di testo nano, correggi l’ortografia del nome dell’applicazione da caffiene a caffeine.

4. Dopo aver corretto il nome dell’applicazione, premi CTRL+X per uscire da nano.

5. Alla successiva richiesta di salvare il buffer modificato, premi Y —> Invio per salvare le modifiche.

Editing the last command and saving changes to the history buffer

Immediatamente dopo aver chiuso l’editor di testo, fc esegue automaticamente il comando che hai modificato.

Automatically re-executing the edited command

Modifica e Riesecuzione di un Comando Precedente

Con fc, non solo puoi modificare l’ultimo comando eseguito, ma puoi modificare anche qualunque dei comandi precedenti eseguiti. Ad esempio, per modificare il comando echo 'working on the command line with fc', segui questi passaggi.

1. Elenca il comando precedente nel terminale eseguendo il comando seguente.

fc -l

2. Trova il comando che desideri modificare dall’elenco della cronologia dei comandi e prendi nota del numero alla sua sinistra. In questo esempio, il numero del comando è 2.

Listing the command history and finding the command number to edit

3. Per modificare il comando con il numero di ingresso 2, esegui il comando seguente nel terminale. Il comando si aprirà nell’editor di testo per la modifica.

fc 2

4. Una volta nel editor di testo, modifica il comando come necessario.

5. Dopo aver modificato il comando, premi CTRL+X per uscire da nano.

6. Alla successiva richiesta di salvataggio del buffer modificato, premi Y —> Invio per salvare le modifiche.

Editing a past command entry in the history buffer

Dopo aver salvato il comando ed essere uscito dall’editor di testo, il comando modificato viene eseguito automaticamente nella shell.

Modifica e Ri-Esecuzione di Più Comandi

Se pensi che fc possa modificare ed eseguire solo un comando precedente alla volta, allora ti aspetta una sorpresa. Perché? fc ti consente di modificare anche più comandi precedenti! In che modo è utile modificare più comandi precedenti? Per esempio, puoi cambiare l’ordine di esecuzione dei comandi.

Supponiamo che tu voglia modificare i comandi precedenti dal numero 2 al 7. Per farlo, procedi come segue.

1. Esegui il comando seguente nel tuo terminale Bash e premi Invio. Il comando seguente si legge come fc <spazio> 2 <spazio> 7, il che significa che fc aprirà i comandi dal 2 al 7 per la modifica.

fc 2 7

2. Successivamente, modifica i comandi come necessario. Per questo esempio:

  • Elimina il comando sudo apt install caffiene -y.
  • Scambia l’ordine di uname -a e ps aux.
  • Elimina clear.
Editing command history entries 2 through 7 at once

3. Dopo aver modificato i comandi, premi CTRL+X per uscire da nano.

4. Alla successiva richiesta di salvataggio del buffer modificato, premi Y —> Invio per salvare le modifiche.

I comandi che hai modificato verranno eseguiti automaticamente dopo aver uscito dall’editor di testo.

Automatically re-executing the edited command

Riesecuzione di un Comando Precedente Senza Modifiche

Supponiamo che tu debba eseguire solo un comando precedente senza modificarlo prima. fc ha un’opzione per questo. Segui i passaggi seguenti per eseguire un comando precedente da una voce specifica nella cronologia.

  1. Elenca il comando precedente nel terminale eseguendo il comando qui sotto.
fc -l

2. Dalla lista della cronologia dei comandi, trova il comando che desideri eseguire nuovamente e prendi nota del numero alla sua sinistra. In questo esempio, il numero del comando è 2.

Listing the command history and finding the command number to execute

3. Per eseguire il comando precedente specifico, esegui il comando qui sotto nella shell. L’opzione -s istruisce fc di saltare la modifica e continuare ad eseguire il comando numero 2.

fc -s 2

La schermata sottostante mostra fc che ha eseguito il comando numero 2 dalla cronologia dei comandi.

Executing a previous command from the history buffer without editing

Conclusione

Questo articolo ha lo scopo di suscitare il tuo interesse per un comando utile ma spesso trascurato e dimenticato chiamato fc. Hai imparato come utilizzare fc per evitare di ridigitare comandi precedentemente eseguiti, il che può essere uno spreco di tempo.

Con la conoscenza che hai ora su fc, pensi che lo useresti? O preferirai ancora ridigitare i comandi nella shell? Fai una scelta saggia!

Source:
https://adamtheautomator.com/bash-fc-command/