Un’esperienza Linux migliore con la shell Fish

Sono finiti i giorni dei comandi criptici e della sintassi rigida. Perché passare più tempo a decifrare le pagine di manuale che a scrivere script o a navigare nel tuo sistema? Abbraccia il potere e la semplicità della shell fish, il tuo biglietto per un’esperienza Linux più fluida e intuitiva.

Impara a trasformare il tuo viaggio Linux con la shell fish, dalla sua interfaccia utente amichevole alle sue estese opzioni di personalizzazione.

Dì addio ai flussi di lavoro ottimizzati e a una nuova fiducia nelle tue competenze Linux!

Prerequisiti

Prima di iniziare, assicurati di avere coperti i seguenti requisiti essenziali per seguire questo tutorial:

  • Shell fish è installata sul tuo computer – Questo tutorial utilizza fish-3.7.0, l’ultima versione disponibile al momento della stesura.
  • A Linux system – This tutorial uses an Ubuntu 22.04 LTS for demonstrations, but other distributions will work.

Esplorazione delle Validazioni dei Comandi, Autocompletamento e Suggerimenti

Con la shell fish installata, immergiti nella shell fish per eseguire comandi senza interruzioni. La shell fish offre un feedback in tempo reale e suggerimenti consapevoli del contesto per comandi, nomi di file e argomenti.

Ma prima, dovrai accedere alla shell fish prima di esaminare le validazioni dei comandi, l’autocompletamento e i suggerimenti.

Per esplorare questa funzione che ti consente di identificare e correggere gli errori prima ancora di eseguirli, esegui quanto segue:

1. Apri un terminale e esegui il comando fish di seguito per accedere alla shell fish.

fish
Accessing the fish shell

2. Successivamente, digita la prima lettera del comando ls per cercare di elencare tutti i file nella tua directory corrente.

Come mostrato di seguito, la lettera ‘l‘ diventa rossa poiché la shell fish non la riconosce come un comando valido. Questo immediato segnale visivo indica che c’è qualcosa che non va con il comando.

Ma non preoccuparti! Grazie all’autosuggestione, la lettera ‘s‘ appare smorzata, suggerendo il comando corretto.

Testing command validation

3. Ora, premi la freccia destra o i tasti Ctrl+F per accettare il comando ls suggerito automaticamente.

Nota che la lettera ‘l’ è passata da rossa a blu perché la shell fish riconosce ora il tuo comando come ls.

Accepting the auto-suggested command

Definizione degli Alias dei Comandi nel File di Configurazione di Fish

Oltre al feedback in tempo reale e ai suggerimenti contestuali, fish offre un modo potente e flessibile per personalizzare l’ambiente della tua riga di comando – il file di configurazione di fish. A differenza di altre shell che possono utilizzare più file di configurazione, fish utilizza principalmente un unico file chiamato config.fish situato nella directory ~/.config/fish/.

Per vedere come le configurazioni influenzano la shell fish, inizia definendo gli alias dei comandi come segue:

1. Apri il file di configurazione di fish utilizzando il tuo editor di codice o di testo preferito, come nano o vim, ma questo tutorial utilizza il primo.

nano ~/.config/fish/config.fish

Una volta aperto, vedrai il contenuto iniziale del file di configurazione della shell fish, che potrebbe contenere configurazioni predefinite o essere relativamente vuoto. Questo stato iniziale dipende dal fatto che tu o il processo di configurazione del sistema abbiate precedentemente aggiunto configurazioni.

Il file potrebbe includere solo commenti o blocchi condizionali di base per le nuove installazioni, come quello riportato di seguito.

Opening the fish configuration file

2. All’interno del blocco if, aggiungi la seguente funzione, salva le modifiche e chiudi l’editor.

A questo punto, stai creando impostazioni personalizzate nel file di configurazione di fish, e questa funzione definisce un alias (c) per il comando clear.

# Questa funzione crea un alias per il comando "clear"
function c
    clear
end

? Nota: Ogni funzione definita ha un file .fish corrispondente nella directory ~/.config/fish/functions/ (es. c.fish).

Creating an alias for the clear command

3. Esegui il seguente comando per sorgere il file di configurazione (config.fish).

Questo comando non produce output sul terminale ma applica le modifiche alla configurazione della sessione corrente.

? Questo file di configurazione di fish viene eseguito automaticamente ogni volta che viene avviata una nuova sessione di fish ed è il luogo perfetto per definire personalizzazioni della shell.

source ~/.config/fish/config.fish

4. Successivamente, digita c nel prompt per verificare le tue modifiche.

Nota come la lettera ‘c‘ diventa blu poiché il shell fish la riconosce come il comando clear. Questo comportamento indica una modifica riuscita nella configurazione di fish.

Osserva come la lettera ‘c’ diventa blu? Questo cambiamento avviene perché il shell fish riconosce la lettera ‘c’ come il comando clear. Questo comportamento segnala un aggiornamento riuscito nella configurazione di fish.

Ora, perché non impostare alcuni alias in più per quei comandi affidabili a cui continui a tornare ogni volta che ti colpisce l’ispirazione?

Verifying the newly created alias for the clear command works

Personalizzazione del Prompt di Fish Shell

Oltre a impostare alias per operazioni più fluide, fish ti dà il potere di personalizzare il tuo prompt, aggiungendo un tocco personale alla tua shell. Invece di percorsi di directory lunghi, goditi un prompt più pulito e organizzato.

Per personalizzare il prompt della shell fish, esegui le seguenti azioni:

1. Apri il file di configurazione di fish (~/.config/fish/config.fish), e aggiungi la seguente funzione.

Questa funzione personalizza il prompt della tua shell fish per visualizzare (echo) un segno di dollaro ($) seguito da uno spazio.

# Personalizzazione del prompt di fish
function fish_prompt
    echo '$ '
end
Customizing the fish shell prompt

2. Salva le modifiche al file di configurazione di fish ed esci dall’editor.

3. Ora, esegui il comando source sul file di configurazione per applicare le tue modifiche.

source ~/.config/fish/config.fish

Una volta eseguito il comando, vedrai le modifiche al prompt come nello screenshot seguente.

Sourcing the fish configuration file to apply the shell prompt changes

Per Persistere le Modifiche tra le Sessioni

Hai visto come personalizzare la shell fish. Ma una cosa da notare: queste impostazioni sono disponibili solo nella sessione corrente.

Cosa succede una volta che chiudi la sessione corrente e ne apri una nuova? Puff! Le tue configurazioni meticolosamente realizzate scompaiono tutte – che seccatura, vero? Ma non temere, c’è ancora speranza. Lascia che il comando funcsave salvi le tue configurazioni dall’oblio!

Per persistere le tue configurazioni tra le sessioni, procedi come segue:

1. Apri il file di configurazione di fish e aggiungi il comando funcsave a ogni function insieme al nome della funzione, così:

Appending the funcsave command to persist functions across sessions

2. Salva le modifiche, chiudi l’editor e il terminale.

3. Apri una nuova sessione terminale e esegui il comando fish qui sotto per accedere alla shell fish

fish

Se i comandi funcsave che hai aggiunto funzionano nel persistere le tue configurazioni, vedrai messaggi come quelli di seguito.

Accessing the fish shell to verify the configurations persist across sessions

Impostazione e Persistenza delle Variabili d’Ambiente

Anche se le funzioni di persistenza sono ottime, gestire valori globalmente accessibili porta lo scripting della shell a un livello superiore: impostare le variabili d’ambiente. A differenza delle shell tradizionali che si basano su export, fish utilizza set con opzioni per controllare lo scope della variabile e il comportamento di esportazione.

Ma c’è una fregatura, lo sai? Ah, hai indovinato giusto! Una variabile impostata tramite il comando set sul terminale è accessibile solo nella sessione corrente.

Per impostare e persistere le variabili d’ambiente, il flag -gx sarà utile come segue:

1. Aggiungi il seguente comando per set la variabile MY_VARIABLE nel file di configurazione di fish come globale. Di seguito è illustrato come funziona il flag -gx:

  • -g – Rende la variabile globale, accessibile da qualsiasi scope all’interno dello stesso ambiente utente.
  • -x – Esporta la variabile, rendendola disponibile a qualsiasi comando esterno o programmi avviati da fish.
# Imposta MY_VARIABLE globalmente ed esportala
set -gx MY_VARIABLE HelloWorld
Setting an environment variable in the fish configuration file

2. Salva le modifiche alla configurazione, quindi chiudi l’editor e il terminale.

3. Apri una nuova sessione del terminale, accedi alla shell di fish ed esegui il seguente comando per confermare le modifiche.

echo $MY_VARIABLE

L’output qui sotto conferma che le modifiche hanno avuto effetto in tutte le sessioni.

Verifying variable persistence

4. Una volta confermato, aggiungi il seguente comando set al file di configurazione di fish, salva le modifiche e chiudi l’editor.

Questo comando rende la variabile MY_UNIVERSAL_VARIABLE globale in tutte le sessioni, anche dopo i riavvii.

# Imposta MY_UNIVERSAL_VARIABLE come universale ed esportalo
set -Ux MY_UNIVERSAL_VARIABLE universal

Vedi come funziona il flag -Ux qui sotto:

  • -U – Rende la variabile MY_UNIVERSAL_VARIABLE universale, garantendo che sia condivisa in tutte le sessioni terminali correnti e future, inclusi quelli di utenti diversi.
  • -x – La variabile viene esportata ai processi figlio, rendendola accessibile a qualsiasi comando o script invocato dalla sessione corrente.
Setting a universal environment variable in the fish configuration file

5. Apri una nuova sessione terminale, accedi alla shell fish e esegui il comando echo qui sotto per verificare le modifiche.

echo $MY_UNIVERSAL_VARIABLE

Se tutto va bene, avrai l’output seguente, che indica che le modifiche hanno avuto effetto in tutte le sessioni.

Verifying universal variable persistence

? Oltre al file di configurazione di fish, sfrutta fish_config nel terminale per personalizzazioni rapide e automatiche. Questo comando avvia un’interfaccia web nel tuo browser, consentendo aggiustamenti rapidi del prompt, modifiche delle impostazioni e gestione delle funzioni e delle variabili in un ambiente user-friendly.

Gestione dei Plugin di Fish con il Fisher Package Manager

La shell fish è impressionante di per sé, vero? Ma indovina un po’? Quando inizi a integrare plugin, diventa ancora più potente. Questi plugin espandono le capacità della shell fish, portando nuovi comandi, utility e integrazioni per migliorare significativamente la tua esperienza sulla riga di comando.

Un buon esempio è Fisher, un gestore di pacchetti progettato per la shell fish. Questo plugin è costruito con prestazioni e semplicità in mente ed è leggero.

? Fisher è leggero nella gestione dei plugin della shell fish e non è direttamente confrontabile con i gestori di pacchetti a livello di sistema. Questa distinzione è evidente riguardo alle dimensioni e alla complessità dei pacchetti che gestisce.

Per gestire i plugin fish, devi prima installare Fisher seguendo i passaggi indicati:

Apri il tuo terminale, accedi alla shell fish ed esegui il seguente comando per scaricare e installare Fisher. Questo comando recupera lo script di installazione di Fisher e lo indirizza a source, che esegue lo script all’interno della sessione corrente della shell fish tramite curl.

curl -sL https://raw.githubusercontent.com/jorgebucaran/fisher/main/functions/fisher.fish | source && fisher install jorgebucaran/fisher

Una volta installato, vedrai il seguente output.

Installing the Fisher package manager

Ora, esegui il comando fisher di seguito per confermare l’installazione visualizzando la --version attualmente installata di Fisher sul tuo sistema.

fisher --version
Confirming the installed Fisher version

Installazione del plugin GitNow

Ora che hai Fisher in esecuzione, qual è il prossimo passo? Cosa ne dici di potenziare il tuo shell fish con alcuni plugin interessanti? GitNow, ad esempio, è un toolkit che potenzia il tuo workflow Git all’interno del shell fish – allettante.

GitNow offre comandi ottimizzati per le attività di routine di Git, migliorando la produttività e semplificando la tua routine di comandi Git.

Per installare GitNow usando il gestore dei pacchetti Fisher, segui questi passaggi:

1. Nel tuo shell fish, esegui il seguente comando fisher per installare il plugin GitNow (joseluisq/gitnow).

Questo comando dice a Fisher di recuperare e integrare GitNow nella tua configurazione fish, rendendo immediatamente disponibili la sua serie di scorciatoie Git.

fisher install joseluisq/gitnow
Installing the GitNow plugin

2. Una volta installato, esegui il comando gitnow qui sotto per confermare che GitNow sia correttamente installato.

Questo comando visualizza la versione attualmente installata di GitNow, ma solo se i comandi GitNow sono riconosciuti nel tuo shell.

gitnow --version
Verifying the GitNow installation

3. Infine, esegui questo comando fisher per elencare tutti i plugin gestiti da Fisher, inclusi GitNow.

fisher list

In basso, puoi vedere il plugin GitNow e il plugin Fisher stesso.

Viewing all plugins managed by Fisher

Rimozione dei Plugin di Fish Shell

Il tuo shell fish è sommerso di plugin? Come se fossi costretto a cercare nel caos per trovare ciò di cui hai bisogno? Sistemare l’ambiente del tuo shell fish rimuovendo i plugin non necessari.

Per rimuovere un plugin gestito da Fisher nella tua shell fish, procedi con questi passaggi:

1. Esegui il seguente comando per elencare tutti i plugin attualmente installati.

fisher list

Scegli uno dalla lista che desideri rimuovere.

Viewing all installed plugins

2. Successivamente, esegui il comando fisher remove qui sotto, seguito dal nome del plugin (joseluisq/gitnow) da rimuovere.

fisher remove joseluisq/gitnow

Questo comando dice a Fisher di disinstallare il plugin GitNow dal tuo ambiente shell fish.

Removing the GitNow plugin

3. Ora, esegui lo stesso comando fisher list per confermare che il plugin GitNow sia stato rimosso con successo.

fisher list

Il plugin GitNow non dovrebbe più apparire nell’elenco dei plugin installati.

Verifying the GitNow plugin removal

Disinstallazione del Gestore di Pacchetti Fisher

Come hai visto, il gestore di pacchetti Fisher è veramente utile. Ma disinstallarlo può essere la scelta migliore se ti ritrovi insoddisfatto o con problemi con Fisher.

Per disinstallare Fisher in modo completo dalla tua shell fish, completa quanto segue:

Esegui il comando qui sotto per elencare e rimuovere fisher e tutti i plugin installati tramite Fisher.

fisher list | fisher remove
Listing and removing all plugins

In alternativa, esegui il seguente comando per rimuovere solo fisher stesso.

fisher remove jorgebucaran/fisher
Removing Fisher only

Esplorando il Gestore di Pacchetti Oh My Fish

Quando sei già in viaggio con Fisher, perché considerare Oh My Fish? Hai già sperimentato il potere dei plugin della shell dei pesci con Fisher. Ma ecco il colpo di scena: questo framework apre un nuovo regno di personalizzazione per la shell dei pesci, offrendo una vasta collezione di temi e plugin.

Per vedere cosa Oh My Fish ha in serbo per te, installa prima questo gestore di pacchetti con il seguente:

Esegui il seguente comando curl per scaricare ed eseguire lo script di installazione di Oh My Fish (https://get.oh-my.fish) all’interno della shell fish.

curl -L https://get.oh-my.fish | fish

Se avrai successo, avrai un output simile al seguente.

Installing the Oh My Fish package manager

Una volta installato, esegui il seguente comando omf per controllare la versione installata di Oh My Fish.

omf --version

A successful response, as shown below, indicates that Oh My Fish is ready and waiting to transform your fish shell experience.

Verifying the Oh My Fish installation

Personalizzazione dell’ambiente con i temi di Oh My Fish

Sei stanco dello stesso vecchio aspetto della shell dei pesci? Perché non aggiungere un tocco di personalità? Dà al tuo ambiente della shell dei pesci un restyling con temi freschi e personalizzati da Oh My Fish.

Per personalizzare il tuo ambiente della shell dei pesci, devi installare i temi con questi passaggi:

1. Apri il file di configurazione della shell dei pesci e rimuovi la funzione fish_prompt che definisce come viene visualizzato il tuo prompt. In questo modo assicuri che il prompt personalizzato che hai impostato non entri in conflitto o sovrascriva i temi forniti da Oh My Fish.

? I temi sono dotati di prompt unici cruciali per il loro aspetto e la loro funzione. Disabilitare il prompt personalizzato (fish_prompt) assicura che il tema Oh My Fish scelto si integri completamente nel design e nelle funzionalità della tua shell fish.

2. Successivamente, elimina (rm) il file ~/.config/fish/functions/fish_prompt.fish. Questo comando non ha output, ma eliminando questo file la shell fish torna al suo prompt predefinito.

rm ~/.config/fish/functions/fish_prompt.fish

3. Esegui questo comando source affinché le modifiche nel file di configurazione di fish abbiano effetto.

source ~/.config/fish/config.fish
Sourcing the fish configuration file

4. Ora, esegui il seguente comando omf per scoprire il tema perfetto per la tua shell fish.

omf theme

Scegli un tema che desideri integrare nella shell fish (ad esempio, cbjohnson).

? Visita il repository GitHub ufficiale per i temi di Oh My Shell per vedere come appare ciascun tema prima di installarli.

Listing available Oh My Fish themes

? Migliora la tua shell fish con plugin eseguendo il seguente comando per installare i plugin. Visita il repository GitHub di OMF per una lista di plugin da installare. omf install <nome_plugin>

5. In seguito, esegui il comando seguente per installare il tema che hai scelto al passo quattro (cbjohnson).

omf install cbjohnson

Una volta installato, il tuo prompt cambierà immediatamente, come segue.

Installing an Oh My Fish theme (cbjohnson)

? Suggerimento: Passa rapidamente tra i temi quando ne hai due o più eseguendo il seguente comando. omf theme <nome_tema>

Disinstallare Oh My Fish

Oh My Fish è una gemma per ravvivare l’atmosfera della tua shell. Ma se desideri mai un cambio di scenario o provare qualcosa di nuovo, disinstallare Oh My Fish darà alla tua shell fish un nuovo inizio.

Per disinstallare Oh My Fish, seguire i seguenti passaggi:

1. Eseguire i seguenti comandi rm per eliminare tutti i file correlati a Oh My Fish.

rm -rf ~/.local/share/omf
rm -rf ~/.config/omf

Una volta rimossi, vedrai scomparire il tema inizialmente installato.

Deleting Oh My Fish-related files

2. Successivamente, eseguire ciascun comando di seguito per eliminare ulteriori file correlati a Oh My Fish.

Questi comandi non producono output, ma eliminando questi file si assicura che tutti i resti di Oh My Fish vengano rimossi dal sistema.

rm -rf ~/.local/share/omf/pkg/omf/functions/omf.fish
rm ~/.config/fish/conf.d/omf.*

3. Ora, eseguire il seguente comando omf per verificare la cancellazione.

omf --version

Vedrai un errore simile al seguente, che indica che il comando omf non è stato trovato e che Oh My Fish è stato completamente disinstallato.

Verifying the Oh My Fish deletion

Impostare Fish come Shell Predefinita

Se hai apprezzato l’esperienza con la shell fish che migliora la tua esperienza Linux, perché non impostarla come tua shell predefinita? In questo modo, ti risparmi il fastidio di cambiarla ogni volta che apri un nuovo terminale.

Per impostare fish come tua shell predefinita, segui i seguenti passaggi:

1. Esegui il comando qui sotto per trovare il percorso in cui si trova la shell fish.

which fish

Copia il percorso negli appunti, poiché ne avrai bisogno nei passaggi successivi.

Finding the path to the fish shell

2. Successivamente, esegui il seguente comando per aggiungere fish all’elenco delle shell accettabili in /etc/shells.

echo "/usr/bin/fish" | sudo tee -a /etc/shells
Adding fish to the list of acceptable shells

3. Infine, esegui il comando chsh qui sotto per cambiare la tua shell predefinita in fish (/usr/bin/fish).

chsh -s /usr/bin/fish

Quando riavvii il tuo computer, avrai fish come tua shell predefinita.

Changing the default shell to fish

? Suggerimento: Torna da fish a un’altra shell come Bash come predefinita ripetendo tutti i passaggi di questa sezione. Assicurati di specificare il percorso di Bash nei passaggi due e tre, quindi riavvia il computer affinché le modifiche siano applicate..

Conclusione

In questo tutorial, hai approfondito l’essenza della shell fish, scoprendo le sue potenti funzionalità e opzioni personalizzabili. Dalla definizione di alias alla personalizzazione dei prompt e alla persistenza delle variabili d’ambiente alla gestione dei plugin, la shell fish è stata il tuo fidato compagno.

Hai acquisito conoscenze su come trasformare la tua esperienza Linux con il gestore di pacchetti Oh My Fish. Inoltre, hai imparato come scoprire e installare facilmente nuovi plugin e temi, ampliando la funzionalità e l’estetica del tuo ambiente di shell fish.

Ora che hai esplorato le basi della shell fish, approfondisci e sblocca il suo pieno potenziale. Perché non sperimentare con prompt personalizzati come Powerline o Starship per dare alla tua shell un tocco personalizzato?

Source:
https://adamtheautomator.com/fish-shell/