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

Erste Schritte mit Zsh

Z-Shell (oder Zsh) ist eine interaktive Bourne-ähnliche POSIX-Shell, die für ihre Fülle an innovativen Funktionen bekannt ist. Z-Shell-Benutzer zitieren oft seine vielen Annehmlichkeiten und schreiben ihm die gesteigerte Effizienz und umfassende Anpassungsfähigkeit zu.

Wenn Sie Linux oder Unix relativ neu kennen, aber erfahren genug sind, um ein Terminal geöffnet und einige Befehle ausgeführt zu haben, haben Sie wahrscheinlich die Bash-Shell verwendet. Bash ist wohl die definitive Shell für freie Software, teilweise wegen ihrer fortschrittlichen Funktionen und teilweise, weil sie als Standard-Shell auf den meisten gängigen Linux- und Unix-Betriebssystemen ausgeliefert wird. Je häufiger Sie jedoch eine Shell verwenden, desto mehr finden Sie kleine Dinge, die möglicherweise besser für die Art und Weise sind, wie Sie sie verwenden möchten. Wenn es eine Sache gibt, für die Open Source berühmt ist, dann ist es Wahlmöglichkeiten . Viele Leute entscheiden sich für einen "Abschluss" von Bash zu Z.

Was ist Zsh?

Eine Shell ist nur eine Schnittstelle zu Ihrem Betriebssystem. Eine interaktive Shell ermöglicht es Ihnen, Befehle über die sogenannte Standardeingabe einzugeben , oder stdin , und erhalten Sie die Ausgabe über die Standardausgabe und Standardfehler , oder stdout und stderr . Es gibt viele Shells, darunter Bash, Csh, Ksh, Tcsh, Dash und Zsh. Jede hat Funktionen, die darauf basieren, was ihre Programmierer für eine Shell am besten hielten. Ob diese Funktionen gut oder schlecht sind, liegt an Ihnen, dem Endbenutzer.

Weitere Linux-Ressourcen

  • Spickzettel für Linux-Befehle
  • Spickzettel für fortgeschrittene Linux-Befehle
  • Kostenloser Online-Kurs:RHEL Technical Overview
  • Spickzettel für Linux-Netzwerke
  • SELinux-Spickzettel
  • Spickzettel für allgemeine Linux-Befehle
  • Was sind Linux-Container?
  • Unsere neuesten Linux-Artikel

Zsh verfügt über Funktionen wie interaktive Tab-Vervollständigung, automatisierte Dateisuche, Regex-Integration, erweiterte Kurzschrift zum Definieren des Befehlsbereichs und eine umfangreiche Design-Engine. Diese Funktionen sind in einer ansonsten vertrauten Bourne-ähnlichen Shell-Umgebung enthalten, was bedeutet, dass Ihnen Zsh vertraut vorkommen wird, wenn Sie Bash bereits kennen und lieben – außer mit mehr Funktionen. Man könnte es sich als eine Art Bash++ vorstellen.

Installation von Zsh

Installieren Sie Zsh mit Ihrem Paketmanager.

Unter Fedora, RHEL und CentOS:

$ sudo dnf install zsh

Unter Ubuntu und Debian:

$ sudo apt install zsh

Unter MacOS können Sie es mit MacPorts installieren:

$ sudo port install zsh

Oder mit Homebrew:

$ brew install zsh

Es ist möglich, Zsh unter Windows auszuführen, aber nur auf einer Linux- oder Linux-ähnlichen Schicht wie Windows Subsystem for Linux (WSL) oder Cygwin. Diese Installation ist in diesem Artikel nicht enthalten, siehe Microsoft-Dokumentation.

Einrichten von Zsh

Zsh ist kein Terminalemulator; Es ist eine Shell, die in einem Terminalemulator ausgeführt wird. Um Zsh zu starten, müssen Sie also zuerst ein Terminalfenster wie GNOME Terminal, Konsole, Terminal, iTerm2, rxvt oder ein anderes Terminal Ihrer Wahl starten. Dann können Sie Zsh starten, indem Sie Folgendes eingeben:

$ zsh

Wenn Sie Zsh zum ersten Mal starten, werden Sie aufgefordert, einige Konfigurationsoptionen auszuwählen. Diese können später alle geändert werden, also drücken Sie 1 um fortzufahren.

This is the Z Shell configuration function for new users, zsh-newuser-install.

(q)  Quit and do nothing.

(0)  Exit, creating the file ~/.zshrc

(1)  Continue to the main menu.

Es gibt vier Kategorien von Einstellungen, also fangen Sie einfach oben an.

  1. In der ersten Kategorie können Sie auswählen, wie viele Befehle in Ihrer Shell-Verlaufsdatei aufbewahrt werden. Standardmäßig ist sie auf 1.000 Zeilen eingestellt.
  2. Zsh-Vervollständigung ist eine der aufregendsten Funktionen. Um die Dinge einfach zu halten, ziehen Sie in Betracht, es mit seinen Standardoptionen zu aktivieren, bis Sie sich daran gewöhnt haben, wie es funktioniert. Drücken Sie 1 für Standardoptionen 2 Optionen manuell einzustellen.
  3. Wählen Sie Emacs- oder Vi-Tastenbelegungen. Bash verwendet Emacs-Bindungen, also sind Sie vielleicht schon daran gewöhnt.
  4. Schließlich können Sie einige der subtilen Funktionen von Zsh kennenlernen (und aktivieren oder deaktivieren). Beispielsweise können Sie die Verwendung der CD einstellen Befehl, indem Sie Zsh erlauben, einen Verzeichniswechsel einzuleiten, wenn Sie einen nicht ausführbaren Pfad ohne Befehl angeben. Um eine dieser zusätzlichen Optionen zu aktivieren, geben Sie die Optionsnummer ein und geben Sie s ein zu einstellen es. Versuchen Sie, alle Optionen zu aktivieren, um das volle Zsh-Erlebnis zu erhalten. Sie können sie später durch Bearbeiten von ~/.zshrc aufheben .

Um die Konfiguration abzuschließen, drücken Sie 0 .

Zsh verwenden

Zsh fühlt sich zunächst sehr nach Bash an, was unverkennbar eines seiner vielen Features ist. Es gibt zum Beispiel ernsthafte Unterschiede zwischen Bash und Tcsh, daher ist die Möglichkeit, zwischen Bash und Zsh zu wechseln, eine Annehmlichkeit, die es einfach macht, Zsh zu Hause auszuprobieren und zu verwenden, wenn Sie Bash bei der Arbeit oder auf Ihrem Server verwenden müssen.

Verzeichniswechsel mit Zsh

Es sind die kleinen Unterschiede, die Zsh so schön machen. Versuchen Sie zunächst, das Verzeichnis ohne die CD in Ihren Ordner "Dokumente" zu ändern Befehl . Es scheint zu schön, um wahr zu sein; aber wenn Sie einen Verzeichnispfad ohne weitere Anweisung eingeben, wechselt Zsh in dieses Verzeichnis:

% Documents
% pwd
/home/seth/Documents

Das macht einen Fehler in Bash oder jeder anderen normalen Shell. Aber Zsh ist alles andere als normal und das ist erst der Anfang.

Suche mit Zsh

Wenn Sie eine Datei mit einer normalen Shell finden möchten, greifen Sie wahrscheinlich auf find zurück oder lokalisieren Befehl. Zumindest haben Sie vielleicht ls -R verwendet für eine rekursive Auflistung einer Reihe von Verzeichnissen. Zsh hat eine eingebaute Funktion, die es erlaubt, eine Datei im aktuellen oder einem anderen Unterverzeichnis zu finden.

Angenommen, Sie haben zwei Dateien mit dem Namen foo.txt . Einer befindet sich in Ihrem aktuellen Verzeichnis und der andere in einem Unterverzeichnis namens foo . In einer Bash-Shell können Sie die Datei im aktuellen Verzeichnis auflisten mit:

$ ls
foo.txt

und Sie können das andere auflisten, indem Sie den Pfad des Unterverzeichnisses explizit angeben:

$ ls foo
foo.txt

Um beide aufzulisten, müssen Sie das -R verwenden switch, vielleicht kombiniert mit grep :

$ ls -R | grep foo.txt
foo.txt
foo.txt

Aber in Zsh können Sie das ** verwenden Kurzschrift:

% ls **/foo.txt
foo.txt
foo.txt

Und Sie können diese Syntax mit jedem Befehl verwenden, nicht nur mit ls . Stellen Sie sich Ihre gesteigerte Effizienz vor, wenn Sie bestimmte Dateitypen von einer Sammlung von Verzeichnissen an einen einzigen Speicherort verschieben, Textschnipsel in einer Datei verketten oder Protokolle durchsuchen.

Zsh-Tab-Vervollständigung verwenden

Die Tab-Vervollständigung ist eine Power-User-Funktion in Bash und einigen anderen Shells und eroberte die Unix-Welt im Sturm, als sie alltäglich wurde. Unix-Benutzer mussten beim Eingeben langer und mühsamer Pfade nicht mehr auf Platzhalter zurückgreifen (wie /h*/s*h/V*/SCS/sc*/comp*/t*/a*/*9/ 04/LS*Boot*v , was viel einfacher ist als die Eingabe von /home/seth/Videos/SCS/scenes/composite/takes/approved/109/04/LS_boat-port-cargo-mover.mkv ). Stattdessen könnten sie einfach die Tabulatortaste drücken, wenn sie genug eindeutige Zeichenfolgen eingegeben hätten. Zum Beispiel, wenn Sie wissen, dass es nur ein Verzeichnis gibt, das mit einem h beginnt Auf der Root-Ebene Ihres Systems könnten Sie /h eingeben und drücken Sie dann die Tabulatortaste. Es ist schnell, es ist einfach, es ist effizient. Es bestätigt auch, dass ein Pfad existiert; Wenn Tab nichts vervollständigt, wissen Sie, dass Sie an der falschen Stelle suchen oder einen Teil des Pfads falsch eingegeben haben.

Wenn Sie jedoch viele Verzeichnisse haben, die fünf oder mehr gleiche Anfangsbuchstaben aufweisen, weigert sich Tab standhaft, den Vorgang abzuschließen. Während in den meisten modernen Terminals (mindestens) die Dateien angezeigt werden, die es daran hindern, zu erraten, was Sie meinen, sind normalerweise zwei Tab-Pressen erforderlich, um sie anzuzeigen. Daher wird die Tab-Vervollständigung oft zu einem solchen Zusammenspiel von Buchstaben und Tabulatoren auf Ihrer Tastatur, dass Sie das Gefühl haben, für einen Klavierabend zu trainieren.

Zsh löst dieses kleine Ärgernis, indem es mögliche Vervollständigungen durchläuft. Wenn Sie ls ~/D eingeben und drücken Sie die Tabulatortaste, Zsh vervollständigt Ihren Befehl mit Documents Erste; Wenn Sie erneut die Tabulatortaste drücken, werden Downloads angeboten , und so weiter, bis Sie die gewünschte gefunden haben.

Platzhalter in Zsh

Wildcards verhalten sich in Zsh anders als Bash-Benutzer es gewohnt sind. Erstens können sie geändert werden. Wenn Sie beispielsweise alle Ordner in Ihrem aktuellen Verzeichnis auflisten möchten, können Sie einen modifizierten Platzhalter verwenden:

% ls
dir0   dir1   dir2   file0   file1
% ls *(/)
dir0   dir1   dir2

In diesem Beispiel das (/) qualifiziert die Ergebnisse des Platzhalters, sodass Zsh nur Verzeichnisse anzeigt. Um nur die Dateien aufzulisten, verwenden Sie (.) . Verwenden Sie zum Auflisten von Symlinks (@) . Um ausführbare Dateien aufzulisten, verwenden Sie (*) .

% ls ~/bin/*(*)
fop  exify  tt

Zsh kennt nicht nur Dateitypen. Es kann auch nach Änderungszeit aufgelistet werden, wobei die gleiche Konvention für Platzhalter-Modifikatoren verwendet wird. Wenn Sie beispielsweise eine Datei finden möchten, die in den letzten acht Stunden geändert wurde, verwenden Sie mh Modifikator (für modifiziert und Stunden ) und die negative ganze Zahl von Stunden:

% ls ~/Documents/*(mh-8)
cal.org   game.org   home.org

Um eine Datei zu finden, die vor mehr als (zum Beispiel) zwei Tagen geändert wurde, ändern sich die Modifikatoren in md (für geändert und Tag ) mit einer positiven Ganzzahl:

% ls ~/Documents/*(+2)
holiday.org

Mit Wildcard-Modifizierern und -Qualifizierern können Sie noch viel mehr machen, also lesen Sie die Zsh-Manpage für alle Details.

Der Wildcard-Nebeneffekt

Um Platzhalter so zu verwenden, wie Sie sie in Bash verwenden würden, müssen sie manchmal in Zsh maskiert werden. Wenn Sie beispielsweise einige Dateien in Bash auf Ihren Server kopieren, können Sie einen Platzhalter wie diesen verwenden:

$ scp IMG_*.JPG [email protected]:~/www/ph*/*19/09/14

Das funktioniert in Bash, aber Zsh gibt einen Fehler zurück, weil es versucht, die Variablen auf der Remote-Seite zu erweitern, bevor es scp ausgibt Befehl. Um dies zu vermeiden, müssen Sie die Remote-Variablen maskieren:

% scp IMG_*.JPG [email protected]:~/www/ph\*/\*19/09/14

Es sind diese Art von kleinen Ausnahmen, die Sie frustrieren können, wenn Sie zu einer neuen Shell wechseln. Es gibt nicht viele, wenn Sie Zsh verwenden (es gibt wahrscheinlich mehr, wenn Sie nach der Erfahrung mit Zsh wieder zu Bash wechseln), aber wenn sie passieren, bleiben Sie ruhig und seien Sie explizit. Es wird selten schief gehen, sich strikt an POSIX zu halten – aber wenn das fehlschlägt, suchen Sie das Problem, um es zu lösen, und fahren Sie fort. Hyperpolyglot.org hat sich für viele Benutzer als unschätzbar erwiesen, die bei der Arbeit auf einer Shell und zu Hause auf einer anderen hängen.

In meinem nächsten Zsh-Artikel zeige ich Ihnen, wie Sie Designs und Plugins installieren, um Ihre Z-Shell noch Z-ier zu machen.


Linux
  1. Erste Schritte mit ls

  2. Erste Schritte mit Samba für Interoperabilität

  3. Erste Schritte mit PostgreSQL unter Linux

  4. Erste Schritte mit SSH unter Linux

  5. Gewusst wie:Erste Schritte mit Ansible

Erste Schritte mit GitHub

Erste Schritte mit Nix Package Manager

Erste Schritte mit systemctl

Erste Schritte mit cPanel

Erste Schritte mit SiteApps

Erste Schritte mit dem Tar-Befehl