GNU/Linux >> Linux Esercitazione >  >> Linux

Quale terminale è migliore:Bash vs Zsh

Comunemente, quando parliamo di server Linux o contenitori Docker, di solito intendiamo un'interfaccia della riga di comando, una shell o un'esperienza terminale. Esistono due shell ampiamente utilizzate dalla comunità:Bash e Zsh. La Bash è considerata la shell più utilizzata. Allo stesso tempo, Z shell o Zsh diventa sempre più popolare al giorno d'oggi. Quindi, quale terminale dovresti scegliere? In questo articolo, confronteremo Bash e Zsh e proveremo a rispondere alla domanda su quale terminale sia migliore.

Cronologia

La shell Bash (Bourne Again Shell) è stata introdotta nel 1989 per sostituire Bourne Shell ed è diventata molto rapidamente la shell Linux predefinita. Bash è in grado di eseguire un'ampia gamma di soluzioni di programmazione e attività automatizzate in Linux, ma non è l'unica shell che puoi utilizzare. Ci sono molte altre shell che possono svolgere funzioni simili a Bash.

Uno di questi è Zsh, che è stato creato nel 1990 come una shell Bourne estesa con molte funzionalità aggiuntive di Bash, ksh e tcsh. Se sei un utente Linux, non devi installare Zsh separatamente poiché è incluso per impostazione predefinita in quasi tutte le distribuzioni moderne. Bash e Zsh condividono alcune caratteristiche, ma ci sono anche molte differenze tra queste shell, che descriveremo in questo articolo. Questo articolo copre le seguenti sezioni:

  • Tabella di confronto delle funzioni
  • Confronto UX terminale
  • Elenco delle differenze tra Bash e Zsh

Ora andiamo verso la prima sezione di questo articolo.

Confronto delle funzioni

In questa parte tratteremo le differenze più importanti.

Zsh Ben
Contiene molte funzionalità avanzate. Non contiene funzionalità avanzate.
Ha una struttura del file di configurazione più complessa. La struttura dei file di configurazione è semplice.
La configurazione e la personalizzazione sono fornite dal framework Oh My Zsh. La configurazione e la personalizzazione sono fornite da Bash-it.
La cronologia dei comandi è condivisa su tutte le shell. La condivisione della cronologia è difficile.
Gli script Zsh non sono molto usati. Gli script Bash sono ampiamente utilizzati.
Zsh non carica SHELLOPTS durante l'avvio. SHELLOPTS vengono caricati durante l'avvio.
La configurazione dell'ambiente è più personalizzabile con zshrc , zlogin , zshenv , zlogout , zprofile . L'ambiente è meno personalizzabile e può essere implementato con un minor numero di script.
Consente di utilizzare alias espansi in qualsiasi punto del file. Bash non supporta gli alias espansi per impostazione predefinita.
zparseopts rende molto facile l'analisi degli argomenti degli script. Analisi degli argomenti dello script con getopts è un po' più impegnativo.
I calcoli del terminale possono essere eseguiti utilizzando zcalc . Devi usare due calcolatrici esterne:bc e expr .
Gli script di configurazione del terminale/avvio automatico vengono caricati da ~/.zshrc file. Gli script di configurazione del terminale/avvio automatico vengono caricati da ~/.bashrc file.
bindkey viene utilizzato per l'associazione delle chiavi. bind builtin e ~/.inputrc vengono utilizzati per l'associazione dei tasti.
Più opzioni per creare prompt fantasiosi. Meno opzioni per richieste fantasiose.
setopt responsabile delle impostazioni della shell. shopt configura le impostazioni della shell.
# non è considerato un commento a meno che INTERACTIVE_COMMENTS è impostato. # rappresenta una stringa di commento.
Modelli di caratteri jolly estesi abilitati per impostazione predefinita. Usa shopt -s extglob per abilitare i modelli di caratteri jolly estesi.
Altri modi per trasformare il valore della variabile (espansione dei parametri). Meno metodi per trasformare le variabili.
Ha funzioni di completamento automatico e correzione ortografica incorporate. Devi usare bash-completion pacchetto.
Più plugin e temi disponibili. Meno plugin e temi disponibili.
Zsh è più personalizzabile. Bash è meno personalizzabile.
POSIX compatibile se emulate sh è stato impostato. Segui gli standard POSIX se --posix è stata impostata l'opzione della riga di comando.
Il completamento automatico funziona più velocemente. Il completamento automatico è più lento.
Community più piccola Community più ampia

Bash vs Zsh:volume di ricerca su Internet

Ecco un grafico di Google Tends, che mostra il confronto del volume di ricerca per entrambe le shell:

Bash vs Zsh – UX

In questa sezione esamineremo le funzionalità della shell UX più comunemente utilizzate, che utilizzi quotidianamente.

Configurazione del contenitore Docker

Se vuoi solo testare i seguenti esempi, il modo migliore per farlo è avviare il contenitore Ubuntu Docker:

docker run -it ubuntu:20.04 /bin/bash

Il contenitore Docker non ha Zsh installato per impostazione predefinita, quindi devi prima installarlo:

apt-get update
apt-get install -y zsh

Infine, puoi avviare zsh shell:

zsh

Scheda per il completamento automatico

La Tab l'utilizzo delle chiavi in ​​Zsh e Bash è leggermente diverso. Creiamo un paio di directory nidificate per illustrare questo esempio:

mkdir -p onedrive/docs
mkdir -p onedrive/pics

In Bash, devi usare Tab per completare automaticamente il percorso della directory o del file.

Ad esempio, digita uno , quindi premi Tab , il tipo d e premi Tab di nuovo per finalizzare il percorso nel terminale:

cd onedrive/docs

Il risultato previsto dovrebbe essere simile al seguente:

In Zsh, utilizzo della Tab key ti fornirà l'elenco delle opzioni disponibili tra cui selezionare.

Digita uno e premi Tab , quindi premi Tab di nuovo tutte le volte che vuoi selezionare la directory richiesta:

Correzione ortografica

La funzionalità di correzione ortografica è supportata da entrambe le shell Zsh e Bash. Tuttavia, Zsh lo fa in modo più efficace.

Nell'esempio seguente, imparerai come abilitare Zsh e Bash per correggere l'ortografia automaticamente.

Creiamo una directory denominata onedrive , se non l'hai fatto nella parte precedente dell'articolo:

mkdir -p onedrive

Ora facciamo un errore di battitura nel comando della shell Bash:

cd onedrave

La shell Bash non correggerà l'errore di battitura di "dra ve” a “dri ve" e visualizza l'errore "Nessun file o directory di questo tipo.

Per abilitare la funzione di controllo ortografico automatico in bash, devi modificare la configurazione di Bash.

nano ~/.bashrc

Aggiungi la seguente riga alla fine del file:

shopt -s cdspell

Usa il source comando per applicare le modifiche alla shell.

source ~/.bashrc

Esegui di nuovo il comando errato. Il terminale Bash ha corretto automaticamente l'errore di battitura:

cd onedrave

E Zsh?

Scriviamo in modo errato il comando "eco" per verificare se Zsh lo rileva e lo corregge automaticamente per noi:

ehco "Hello World"

Come previsto, Zsh non ha corretto l'ortografia.

Ora apporteremo alcune modifiche alla configurazione di Zsh.

nano ~/.zshrc

Attiva il correctexport opzione per la shell. Puoi anche specificare un messaggio di richiesta:

setopt correct
export SPROMPT="Correct %R to %r? [Yes, No, Abort, Edit ]"

Non preoccuparti se il file è vuoto, va bene, verrà popolato con una configurazione aggiuntiva non appena installeremo Oh My Zsh in seguito.

Ecco come dovrebbe apparire se ci stai seguendo nel contenitore Docker:

Esegui il source comando per applicare le modifiche alla shell.

source ~/.zshrc

Esegui l'errore di ortografia echo comando di nuovo:

ehco "Hello World"

Ecco qua!

Il controllo ortografico automatico è ora abilitato:

Temi

Devi installare Git per poter utilizzare qualsiasi tema e personalizzazione Bash o Zsh:

apt-get install -y git

Per installare le personalizzazioni per la shell Bash, usa il seguente comando:

git clone --depth=1 https://github.com/Bash-it/bash-it.git ~/.bash_it

Il processo di installazione è molto semplice:

~/.bash_it/install.sh

Ora possiamo modificare ~/.bashrc file per modificare il tema Bash:

nano ~/.bashrc

Cambia BASH_IT_THEME valore variabile per qualsiasi tema esistente nel bundle di temi, ad esempio, prova envy .

Per applicare le modifiche, esegui il seguente comando:

source ~/.bashrc

Ora personalizziamo Zsh.

Come accennato in precedenza, il framework Oh My Zsh offre molte funzioni utili e un'ampia raccolta di temi.

Anche l'installazione di Oh My Zsh non è molto difficile:

apt install -y curl wget git
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

Rispondi solo S a tutte le domande e otterrai una bellissima personalizzazione della shell per impostazione predefinita:

Ora, i temi Zsh si trovano in:~/.oh-my-zsh/themes cartella:

ls ~/.oh-my-zsh/themes/

Qui puoi vedere i nomi dei temi inclusi nel pacchetto.

Il tema predefinito di Zsh è "robbyrussell “. Per modificare questo tema, aggiorna il ZSH_THEME valore della variabile in ~/zshrc file:

nano ~/.zshrc

Ora modifica il ZSH_THEME valore variabile per impostare un nuovo tema per il tuo terminale. Ecco un elenco di esempi di UX.

Per applicare le modifiche, usa il source comando:

source ~/.zshrc

Espansione con caratteri jolly

I nomi dei file vengono utilizzati per corrispondere ai caratteri jolly. Bash ha questa funzionalità incorporata, mentre per Zsh devi abilitare l'espansione dei caratteri jolly impostando il sottoinsieme globale.

Creiamo un paio di .txt file in Bash:

touch text_file1.txt
touch text_file2.txt
ls

Ora possiamo elencare il nostro .txt file utilizzando l'espressione jolly in una variabile:

files="*.txt"
echo $files

In Zsh tale approccio non funzionerà per impostazione predefinita:

touch text_file1.txt
touch text_file2.txt
ls
file="*.txt"
echo $file
set -o GLOB_SUBST
file="*.txt"
echo $file

Ora, le espressioni jolly funzionano!

Metti questa opzione su ~/.zshrc , se desideri mantenere tale comportamento di Zsh in futuro:

set -o GLOB_SUBST

Riepilogo

Sia Zsh che Bash sono shell estremamente potenti con molte estensioni e opzioni di configurazione. Zsh ha una robusta personalizzazione, estensibilità e funzionalità avanzate. Bash è ancora più ampiamente utilizzato, quindi pensa alla compatibilità con le versioni precedenti dei tuoi script con altri sistemi che potresti dover gestire.

La mia scelta personale è Zsh quando si tratta di laptop personale e Bash quando si tratta di attività di gestione del server.

Spero che questo articolo ti sia stato utile. Se è così, per favore, aiutaci a diffonderlo nel mondo!


Linux
  1. Conserva la cronologia di Bash in più finestre di terminali?

  2. Sintassi della dichiarazione di sostituzione dei comandi in Bash:quale di queste due è una pratica migliore??

  3. Quale shell dovrei usare:Tcsh Vs Bash??

  4. Come leggere la stringa come numero esadecimale in Bash?

  5. Glob senza distinzione tra maiuscole e minuscole su zsh/bash

MEDIA vs. LAMPADA:Quale è meglio?

Quale distribuzione Linux è migliore:Linux Mint o Ubuntu

Ubuntu vs Arch:quale distribuzione Linux è migliore?

Pop! _OS vs Ubuntu:qual è il migliore?

Cos'è Zsh? Dovresti usarlo?

Ubuntu vs Arch:quale distribuzione Linux è migliore?