GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Welches Terminal ist besser:Bash vs. Zsh

Wenn wir über Linux-Server oder Docker-Container sprechen, meinen wir normalerweise eine Befehlszeilenschnittstelle, Shell oder Terminalerfahrung. Es gibt zwei von der Community weit verbreitete Shells:Bash und Zsh. Die Bash gilt als die am weitesten verbreitete Shell. Gleichzeitig wird Z-Shell oder Zsh heutzutage immer beliebter. Welches Terminal sollten Sie also wählen? In diesem Artikel vergleichen wir Bash mit Zsh und versuchen, die Frage zu beantworten, welches Terminal besser ist.

Verlauf

Die Bash-Shell (Bourne Again Shell) wurde 1989 als Ersatz für die Bourne-Shell eingeführt und wurde sehr schnell zur Standard-Linux-Shell. Bash kann eine breite Palette von Programmierlösungen und automatisierten Aufgaben unter Linux ausführen, aber das ist nicht die einzige Shell, die Sie verwenden können. Es gibt mehrere andere Shells, die ähnliche Funktionen wie Bash ausführen können.

Eines davon ist Zsh, das 1990 als erweiterte Bourne-Shell mit vielen zusätzlichen Funktionen von Bash, ksh und tcsh erstellt wurde. Wenn Sie ein Linux-Benutzer sind, müssen Sie Zsh nicht separat installieren, da es standardmäßig in fast allen modernen Distributionen enthalten ist. Bash und Zsh teilen einige Funktionen, aber es gibt auch viele Unterschiede zwischen diesen Shells, die wir in diesem Artikel beschreiben werden. Dieser Artikel behandelt die folgenden Abschnitte:

  • Funktionsvergleichstabelle
  • Terminal-UX-Vergleich
  • Liste der Unterschiede zwischen Bash und Zsh

Kommen wir nun zum ersten Abschnitt dieses Artikels.

Funktionsvergleich

In diesem Teil behandeln wir die wichtigsten Unterschiede.

Zsh Bash
Es enthält viele erweiterte Funktionen. Es enthält keine erweiterten Funktionen.
Hat eine komplexere Konfigurationsdateistruktur. Die Struktur der Konfigurationsdateien ist einfach.
Konfiguration und Anpassung werden vom Oh My Zsh-Framework bereitgestellt. Konfiguration und Anpassung werden von Bash-it bereitgestellt.
Der Befehlsverlauf wird von allen Shells gemeinsam genutzt. Das Teilen des Verlaufs ist schwierig.
Zsh-Skripte werden nicht so häufig verwendet. Bash-Skripte sind weit verbreitet.
Zsh lädt SHELLOPTS nicht beim Start. SHELLOPTS werden beim Start geladen.
Umgebungskonfiguration ist mit zshrc besser anpassbar , zlogin , zshenv , zlogout , zprofile . Die Umgebung ist weniger anpassbar und kann mit weniger Skripten implementiert werden.
Erlaubt die Verwendung erweiterter Aliase überall in der Datei. Bash unterstützt die erweiterten Aliase standardmäßig nicht.
zparseopts macht das Parsen von Skriptargumenten sehr einfach. Parsen von Skriptargumenten mit getopts ist etwas anspruchsvoller.
Klemmenberechnungen können mit zcalc durchgeführt werden . Sie müssen zwei externe Taschenrechner verwenden:bc und expr .
Terminalkonfigurations-/Autostart-Skripte werden aus ~/.zshrc geladen Datei. Terminalkonfigurations-/Autostart-Skripte werden aus ~/.bashrc geladen Datei.
bindkey wird für die Schlüsselbindung verwendet. bind eingebaut und ~/.inputrc werden für die Schlüsselbindung verwendet.
Weitere Optionen zum Erstellen ausgefallener Eingabeaufforderungen. Weniger Optionen für ausgefallene Eingabeaufforderungen.
setopt zuständig für Shell-Einstellungen. shopt konfiguriert Shell-Einstellungen.
# wird nicht als Kommentar betrachtet, es sei denn INTERACTIVE_COMMENTS eingestellt ist. # stellt eine Kommentarzeichenfolge dar.
Erweiterte Platzhaltermuster standardmäßig aktiviert. Verwenden Sie shopt -s extglob um erweiterte Wildcard-Muster zu aktivieren.
Weitere Möglichkeiten, den Variablenwert zu transformieren (Parametererweiterung). Weniger Methoden zum Transformieren von Variablen.
Verfügt über Funktionen zur automatischen Vervollständigung und Rechtschreibkorrektur. Sie müssen bash-completion verwenden Paket.
Weitere Plugins und Designs verfügbar. Weniger Plugins und Designs verfügbar.
Zsh ist anpassbarer. Bash ist weniger anpassbar.
POSIX-kompatibel, wenn emulate sh eingestellt wurde. Folge den POSIX-Standards, wenn --posix Befehlszeilenoption wurde festgelegt.
Die automatische Vervollständigung funktioniert schneller. Die automatische Vervollständigung ist langsamer.
Kleinere Community Größere Community

Bash vs. Zsh – Internet-Suchvolumen

Hier ist ein Diagramm von Google Tends, das den Suchvolumenvergleich für beide Shells zeigt:

Bash vs. Zsh – UX

In diesem Abschnitt gehen wir auf die am häufigsten verwendeten UX-Shell-Funktionen ein, die Sie täglich verwenden.

Docker-Container-Setup

Wenn Sie nur die folgenden Beispiele testen möchten, starten Sie am besten den Ubuntu Docker-Container:

docker run -it ubuntu:20.04 /bin/bash

Im Docker-Container ist Zsh nicht standardmäßig installiert, also müssen Sie es zuerst installieren:

apt-get update
apt-get install -y zsh

Schließlich können Sie die zsh-Shell starten:

zsh

Tab für automatische Vervollständigung

Der Tab Schlüsselverwendung in Zsh und Bash etwas anders. Lassen Sie uns ein paar verschachtelte Verzeichnisse erstellen, um dieses Beispiel zu veranschaulichen:

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

In Bash müssen Sie Tab verwenden Taste, um den Pfad zum Verzeichnis oder zur Datei automatisch zu vervollständigen.

Geben Sie beispielsweise eins ein , und drücken Sie dann Tab , der Typ d und drücken Sie Tab erneut, um den Pfad im Terminal abzuschließen:

cd onedrive/docs

Das erwartete Ergebnis sollte wie folgt aussehen:

In Zsh Verwendung des Tab Mit der Taste erhalten Sie eine Liste der verfügbaren Optionen zur Auswahl.

Geben Sie eins ein und drücken Sie Tab , und drücken Sie dann Tab erneut so oft Sie möchten gewünschtes Verzeichnis auswählen:

Rechtschreibkorrektur

Die Rechtschreibkorrekturfunktion wird sowohl von Zsh- als auch von Bash-Shells unterstützt. Zsh macht es jedoch effektiver.

Im folgenden Beispiel erfahren Sie, wie Sie Zsh und Bash aktivieren, um die Rechtschreibung automatisch zu korrigieren.

Lassen Sie uns ein Verzeichnis mit dem Namen onedrive erstellen , wenn Sie das im vorherigen Teil des Artikels nicht getan haben:

mkdir -p onedrive

Machen wir jetzt einen Tippfehler im Bash-Shell-Befehl:

cd onedrave

Die Bash-Shell korrigiert den Tippfehler von „dra nicht ve“ zu „dri ve“ und zeigen den Fehler „No such file or directory. an ”

Um die automatische Rechtschreibprüfung in Bash zu aktivieren, müssen Sie die Bash-Konfiguration bearbeiten.

nano ~/.bashrc

Fügen Sie am Ende der Datei die folgende Zeile hinzu:

shopt -s cdspell

Verwenden Sie die source Befehl, um Änderungen auf die Shell anzuwenden.

source ~/.bashrc

Führen Sie den falsch geschriebenen Befehl erneut aus. Das Bash-Terminal hat den Tippfehler automatisch korrigiert:

cd onedrave

Was ist mit Zsh?

Lassen Sie uns den Befehl „echo“ falsch schreiben, um zu überprüfen, ob Zsh ihn automatisch erkennt und für uns korrigiert:

ehco "Hello World"

Wie erwartet hat Zsh die Rechtschreibung nicht korrigiert.

Jetzt werden wir einige Änderungen an der Zsh-Konfiguration vornehmen.

nano ~/.zshrc

Aktivieren Sie den correctexport Option für die Schale. Sie können auch eine Aufforderungsnachricht angeben:

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

Machen Sie sich keine Sorgen, wenn die Datei leer ist, sie ist in Ordnung, sie wird mit zusätzlicher Konfiguration gefüllt, sobald wir Oh My Zsh später installieren.

So sollte es aussehen, wenn Sie uns im Docker-Container folgen:

Führen Sie die source aus Befehl, um Änderungen auf die Shell anzuwenden.

source ~/.zshrc

Führen Sie das falsch geschriebene echo aus Befehl erneut:

ehco "Hello World"

Bitte schön!

Die automatische Rechtschreibprüfung ist jetzt aktiviert:

Designs

Sie müssen Git installieren, um Bash- oder Zsh-Designs und -Anpassungen verwenden zu können:

apt-get install -y git

Um Anpassungen für die Bash-Shell zu installieren, verwenden Sie den folgenden Befehl:

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

Der Installationsprozess ist sehr einfach:

~/.bash_it/install.sh

Jetzt können wir ~/.bashrc bearbeiten Datei zum Bearbeiten des Bash-Designs:

nano ~/.bashrc

Ändern Sie BASH_IT_THEME Variablenwert für jedes Design, das im Designpaket vorhanden ist, versuchen Sie es beispielsweise mit Neid .

Um Änderungen zu übernehmen, führen Sie den folgenden Befehl aus:

source ~/.bashrc

Lassen Sie uns nun Zsh anpassen.

Wie bereits erwähnt, bietet das Oh My Zsh-Framework viele nützliche Funktionen und eine umfangreiche Themensammlung.

Oh, meine Zsh-Installation ist auch nicht sehr schwierig:

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

Antworten Sie einfach mit Y auf alle Fragen und Sie erhalten standardmäßig eine schöne Shell-Anpassung:

Jetzt befinden sich Zsh-Designs in:~/.oh-my-zsh/themes Ordner:

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

Hier sehen Sie die Namen der im Paket enthaltenen Themen.

Das Standardthema von Zsh ist „robbyrussell “. Um dieses Design zu ändern, aktualisieren Sie ZSH_THEME Variablenwert in ~/zshrc Datei:

nano ~/.zshrc

Bearbeiten Sie nun das ZSH_THEME Variablenwert, um ein neues Thema für Ihr Terminal einzurichten. Hier ist eine Liste mit UX-Beispielen.

Um Änderungen anzuwenden, verwenden Sie die source Befehl:

source ~/.zshrc

Wildcard-Erweiterung

Dateinamen werden verwendet, um mit den Platzhaltern übereinzustimmen. Bash hat diese eingebaute Funktion, während Sie für Zsh die Wildcard-Erweiterung aktivieren müssen, indem Sie die globale Teilmenge festlegen.

Lassen Sie uns ein paar .txt erstellen Dateien in Bash:

touch text_file1.txt
touch text_file2.txt
ls

Jetzt können wir unsere .txt auflisten Dateien, indem Sie den Platzhalterausdruck in einer Variablen verwenden:

files="*.txt"
echo $files

In Zsh funktioniert ein solcher Ansatz standardmäßig nicht:

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

Jetzt funktionieren Platzhalterausdrücke!

Setzen Sie diese Option auf ~/.zshrc , wenn Sie ein solches Verhalten von Zsh in Zukunft beibehalten möchten:

set -o GLOB_SUBST

Zusammenfassung

Sowohl Zsh als auch Bash sind extrem leistungsfähige Shells mit vielen Erweiterungen und Konfigurationsoptionen. Zsh bietet robuste Anpassungsmöglichkeiten, Erweiterbarkeit und erweiterte Funktionen. Bash wird immer noch häufiger verwendet, denken Sie also an die Abwärtskompatibilität Ihrer Skripte mit anderen Systemen, die Sie möglicherweise verwalten müssen.

Meine persönliche Wahl ist Zsh, wenn es um persönliche Laptops geht, und Bash, wenn es um Serververwaltungsaktivitäten geht.

Ich hoffe, dieser Artikel war hilfreich für Sie. Wenn ja, helfen Sie uns bitte, es in der Welt zu verbreiten!


Linux
  1. Linux vs. Windows:Welches Betriebssystem ist besser für PC-Spiele?

  2. Welcher Shell-Interpreter führt ein Skript ohne Shebang aus?

  3. Deklarationssyntax für die Befehlssubstitution in Bash – Welche dieser beiden ist die bessere Vorgehensweise?

  4. Welche Shell sollte ich verwenden – Tcsh Vs Bash?

  5. Wie liest man eine Zeichenfolge als Hex-Zahl in Bash?

MITTEL Vs. LAMPE:Was ist besser?

Welche Linux-Distributionen sind besser - Linux Mint oder Ubuntu

Ubuntu vs. Arch:Welche Linux-Distribution ist besser?

Pop!_OS vs. Ubuntu:Welches ist besser?

Was ist Zsch? Sollten Sie es verwenden?

Ubuntu vs. Arch:Welche Linux-Distribution ist besser?