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

5 Tipps zur Verbesserung der Produktivität mit zsh

Die als zsh bekannte Z-Shell ist eine Shell für Linux/Unix-ähnliche Betriebssysteme. Es hat Ähnlichkeiten mit anderen Shells im sh (Bourne-Shell)-Familie wie bash und ksh , aber es bietet viele erweiterte Funktionen und leistungsstarke Bearbeitungsoptionen für die Befehlszeile, wie z. B. eine verbesserte Tab-Vervollständigung.

Es wäre unmöglich, hier alle Optionen von zsh abzudecken; Es gibt buchstäblich Hunderte von Seiten, die seine vielen Funktionen dokumentieren. In diesem Artikel präsentiere ich fünf Tipps, wie Sie die Verwendung der Befehlszeile mit zsh produktiver machen können.

1. Designs und Plugins

Im Laufe der Jahre hat die Open-Source-Community unzählige Themen und Plugins für zsh entwickelt. Ein Design ist eine vordefinierte Eingabeaufforderungskonfiguration, während ein Plug-in eine Reihe nützlicher Aliase und Funktionen ist, die die Verwendung eines bestimmten Befehls oder einer bestimmten Programmiersprache erleichtern.

Der schnellste Weg, um mit der Verwendung von Designs und Plugins zu beginnen, ist die Verwendung eines zsh-Konfigurationsframeworks. Es sind viele verfügbar, aber das beliebteste ist Oh My Zsh. Standardmäßig aktiviert es einige sinnvolle zsh-Konfigurationsoptionen und wird mit Hunderten von Designs und Plugins geladen.

Ein Design macht Sie produktiver, da es Ihrer Eingabeaufforderung nützliche Informationen hinzufügt, z. B. den Status Ihres Git-Repositorys oder der verwendeten Python-Virtualenv. Diese Informationen auf einen Blick zu haben, erspart Ihnen die Eingabe der entsprechenden Befehle, um sie zu erhalten, und es ist ein cooler Look. Hier ist ein Beispiel für Powerlevel9k, mein bevorzugtes Thema:

Zusätzlich zu den Themen bündelt Oh My Zsh unzählige nützliche Plugins für zsh. Wenn Sie beispielsweise das Git-Plug-in aktivieren, erhalten Sie Zugriff auf eine Reihe nützlicher Aliase, wie z. B.:

$alias | grep -i git | sortieren -R | head -10
g=git
ga='git add'
gapa='git add --patch'
gap='git apply'
gdt=' git diff-tree --no-commit-id --name-only -r'
gau='git add --update'
gstp='git stash pop'
gbda=' git branch --no-color --merged | Befehl grep -vE "^(\*|\s*(master|develop|dev)\s*$)" | Befehl xargs -n 1 git branch -d'
gcs='git commit -S'
glg='git log --stat'

Es sind Plugins für viele Programmiersprachen, Verpackungssysteme und andere Tools verfügbar, die Sie häufig auf der Befehlszeile verwenden. Hier ist eine Liste von Plugins, die ich in meiner Fedora-Workstation verwende:

git golang fedora docker oc sudo vi-mode virtualenvwrapper 

2. Clevere Aliase

Aliasse sind in zsh sehr nützlich. Das Definieren von Aliasen für Ihre am häufigsten verwendeten Befehle erspart Ihnen viel Tipparbeit. Oh My Zsh konfiguriert standardmäßig mehrere nützliche Aliase, darunter Aliase zum Navigieren in Verzeichnissen und Ersetzungen für allgemeine Befehle mit zusätzlichen Optionen wie:

ls='ls --color=tty'
grep='grep  --color=auto --exclude-dir={.bzr,CVS,.git,.hg,.svn}'

Zusätzlich zu Befehlsaliasen ermöglicht zsh zwei weitere nützliche Aliastypen:den Suffix-Alias und der globale Alias .

Ein Suffix-Alias ​​ermöglicht es Ihnen, die Datei, die Sie in die Befehlszeile eingeben, mit dem angegebenen Programm basierend auf der Dateierweiterung zu öffnen. Um beispielsweise YAML-Dateien mit vim zu öffnen, definieren Sie den folgenden Alias:

alias -s {yml,yaml}=vim 

Wenn Sie nun einen beliebigen Dateinamen eingeben, der mit yml endet oder yaml in der Befehlszeile öffnet zsh diese Datei mit vim:

$ playbook.yml
# Öffnet die Datei playbook.yml mit vim

Mit einem globalen Alias ​​können Sie einen Alias ​​erstellen, der überall in der Befehlszeile erweitert wird, nicht nur am Anfang. Dies ist sehr nützlich, um allgemeine Dateinamen oder über Pipe geleitete Befehle zu ersetzen. Zum Beispiel:

alias -g G='| grep -i' 

Um diesen Alias ​​zu verwenden, geben Sie G ein überall würden Sie den Pipe-Befehl eingeben:

$ ls -l G do
drwxr-xr-x. 5 rgerardi rgerardi 4096 Aug  7 14:08 Dokumente
drwxr-xr-x. 6 rgerardi rgerardi 4096 Aug 24 14:51 Downloads

Sehen wir uns als Nächstes an, wie zsh beim Navigieren im Dateisystem hilft.

3. Einfache Verzeichnisnavigation

Wenn Sie die Befehlszeile verwenden, ist das Navigieren zwischen verschiedenen Verzeichnissen eine der häufigsten Aufgaben. Zsh erleichtert dies, indem es einige nützliche Verzeichnisnavigationsfunktionen bereitstellt. Diese Funktionen werden mit Oh My Zsh aktiviert, aber Sie können sie mit diesem Befehl aktivieren:

setopt  autocd autopushd \ pushdignoredups 

Wenn diese Optionen eingestellt sind, brauchen Sie cd nicht einzugeben Verzeichnisse zu wechseln. Geben Sie einfach den Verzeichnisnamen ein und zsh wechselt dorthin:

$ pwd
/home/rgerardi
$ /tmp
$ pwd
/tmp

Um zurückzugehen, geben Sie - ein :

Zsh speichert den Verlauf der von Ihnen besuchten Verzeichnisse, sodass Sie schnell zu einem von ihnen wechseln können. Um die Liste anzuzeigen, geben Sie dirs -v ein :

$ dirs -v
0       ~
1       /var/log
2       /var/opt
3       /usr/bin
4       /usr/local
5       /usr/lib
6       /tmp
7       ~/Projects/Opensource.com/zsh-5tips
8       ~/Projects
9       ~/Projects/ansible
10      ~/Dokumente

Wechseln Sie zu einem beliebigen Verzeichnis in dieser Liste, indem Sie ~# eingeben wobei # die Nummer des Verzeichnisses in der Liste ist. Zum Beispiel:

$ pwd
/home/rgerardi
$ ~4
$ pwd
/usr/local

Kombinieren Sie diese mit Aliasen, um die Navigation noch einfacher zu machen:

d='dirs -v | Kopf -10'
1='cd -'
2='cd -2'
3='cd -3'
4='cd -4'
5='cd -5'
6='cd -6'
7='cd -7'
8='cd -8'
9='cd - 9'

Jetzt können Sie d eingeben um die ersten zehn Elemente in der Liste und die Nummer zum Wechseln zu sehen:

$ d
0       /usr/local
1       ~
2       /var/log
3       /var/opt
4       /usr/bin
5       /usr/lib
6       /tmp
7       ~/Projects/Opensource.com/zsh-5tips
8       ~/Projects
9       ~/Projects/ansible
$ pwd
/usr/local
$ 6
/tmp
$ pwd
/tmp

Schließlich erweitert zsh Verzeichnisnamen automatisch mit Tab-Vervollständigung. Geben Sie die ersten Buchstaben der Verzeichnisnamen und TAB ein um es zu benutzen:

$ pwd
/home/rgerardi
$ p/o/z (TAB)
$ Projects/Opensource.com/zsh-5tips/

Dies ist nur eine der Funktionen, die durch das leistungsstarke Tab-Vervollständigungssystem von zsh ermöglicht werden. Schauen wir uns noch ein paar mehr an.

4. Erweiterte Tab-Vervollständigung

Das leistungsstarke Vervollständigungssystem von Zsh ist eines seiner Markenzeichen. Zur Vereinfachung nenne ich es Tab-Vervollständigung, aber unter der Haube passiert mehr als eine Sache. Normalerweise gibt es eine Erweiterung und eine Befehlsvervollständigung. Ich werde sie hier gemeinsam besprechen. Einzelheiten finden Sie in diesem Benutzerhandbuch.

Die Befehlsvervollständigung ist standardmäßig mit Oh My Zsh aktiviert. Um es zu aktivieren, fügen Sie Ihrer .zshrc die folgenden Zeilen hinzu Datei:

autoload -U compinit
compinit

Das Vervollständigungssystem von Zsh ist intelligent. Es versucht, nur Elemente vorzuschlagen, die in bestimmten Kontexten verwendet werden können – zum Beispiel, wenn Sie cd eingeben und TAB , zsh schlägt nur Verzeichnisnamen vor, da es cd kennt funktioniert mit nichts anderem.

Umgekehrt schlägt es Benutzernamen vor, wenn benutzerbezogene Befehle ausgeführt werden, oder Hostnamen, wenn ssh verwendet wird oder ping , zum Beispiel.

Es verfügt über eine umfangreiche Vervollständigungsbibliothek und versteht viele verschiedene Befehle. Zum Beispiel, wenn Sie tar verwenden Befehl können Sie die Tabulatortaste drücken, um eine Liste der Dateien anzuzeigen, die im Paket als Kandidaten für die Extraktion verfügbar sind:

$ tar -xzvf test1.tar.gz test1/file1 (TAB)
file1 file2

Hier ist ein fortgeschritteneres Beispiel mit git . In diesem Beispiel bei der Eingabe von TAB , vervollständigt zsh automatisch den Namen der einzigen Datei im Repository, die bereitgestellt werden kann:

$ ls
original  plan.txt  zsh-5tips.md  zsh_theme_small.png
$ git status
On branch master
Dein Branch ist mit 'origin/master '.

Änderungen, die nicht zum Festschreiben bereitgestellt wurden:
  (verwenden Sie "git add ...", um zu aktualisieren, was festgeschrieben wird)
  (verwenden Sie "git checkout -- ...", um Änderungen im Arbeitsverzeichnis zu verwerfen)

        geändert:  zsh-5tips.md

keine Änderungen zum Commit hinzugefügt (verwenden Sie "git add" und/ oder "git commit -a")
$ git add (TAB)
$ git add zsh-5tips.md

Es versteht auch Befehlszeilenoptionen und schlägt nur diejenigen vor, die für den ausgewählten Unterbefehl relevant sind:

$ git commit - (TAB)
--all                  -a       -- stellt alle geänderten und gelöschten Pfade bereit
--allow-empty                   -- erlaubt die Aufzeichnung eines leeren Commits
--allow -empty-message           -- Aufnahme eines Commits mit einer leeren Nachricht zulassen
--amend                         -- Tipp des aktuellen Zweigs ändern
--author                        -- den im Commit verwendeten Autorennamen überschreiben
--branch                        -- branch-Informationen anzeigen
--cleanup                       -- angeben, wie die Commit-Nachricht bereinigt werden soll
--date                        -- das im Commit verwendete Autordatum überschreiben
-- dry-run                       -- zeigt nur die Liste der Pfade an, die festgeschrieben werden sollen oder nicht, und alle nicht verfolgten
--edit                 -e       -- bearbeitet die Festschreibungsnachricht vor dem Festschreiben
--Datei                 -F       -- Commit-Nachricht aus angegebener Datei lesen
--gpg-sign             -S       -- GPG-signiere den Commit--include              -i       -- aktualisiere die angegebenen Dateien und übertrage den gesamten Index
--interactive                   -- aktualisiere interaktiv Pfade in der Indexdatei
--message              -m       -- verwende die angegebene Nachricht als Commit-Nachricht
... TRUNCATED ...

Nach der Eingabe von TAB , können Sie mit den Pfeiltasten durch die Optionsliste navigieren und die gewünschte Option auswählen. Jetzt müssen Sie sich nicht mehr all diese Git-Optionen merken.

Es stehen viele Optionen zur Verfügung. Am besten finden Sie heraus, was für Sie am hilfreichsten ist, indem Sie es verwenden.

5. Befehlszeilenbearbeitung und Verlauf

Die Befehlszeilenbearbeitungsfunktionen von Zsh sind ebenfalls nützlich. Standardmäßig emuliert es Emacs. Wenn Sie wie ich vi/vim bevorzugen, aktivieren Sie vi-Bindungen mit dem folgenden Befehl:

$ bindkey -v 

Wenn Sie Oh My Zsh verwenden, wird der vi-mode Das Plugin aktiviert zusätzliche Bindungen und eine Modusanzeige an Ihrer Eingabeaufforderung – sehr nützlich.

Nachdem Sie vi-Bindungen aktiviert haben, können Sie die Befehlszeile mit vi-Befehlen bearbeiten. Drücken Sie zum Beispiel ESC+/ um den Befehlszeilenverlauf zu durchsuchen. Drücken Sie während der Suche n bringt die nächste übereinstimmende Zeile und N Der vorherige. Die meisten gängigen vi-Befehle funktionieren nach dem Drücken von ESC wie 0 um zum Anfang der Zeile zu springen, $ um zum Ende zu springen, i einfügen, a anhängen usw. Sogar Befehle, denen Bewegung folgt, funktionieren, wie cw um ein Wort zu ändern.

Zusätzlich zur Befehlszeilenbearbeitung bietet zsh mehrere nützliche Befehlszeilenverlaufsfunktionen, wenn Sie zuvor verwendete Befehle reparieren oder erneut ausführen möchten. Wenn Sie beispielsweise einen Fehler gemacht haben, geben Sie fc ein bringt den letzten Befehl in Ihren bevorzugten Editor, um es zu beheben. Es respektiert den $EDITOR Variable und verwendet standardmäßig vi.

Ein weiterer nützlicher Befehl ist r , das den letzten Befehl erneut ausführt; und r <WORD> , der den letzten Befehl ausführt, der die Zeichenfolge WORD enthält .

Geben Sie abschließend Double Bangs (!! ) bringt den letzten Befehl irgendwo in der Zeile zurück. Dies ist beispielsweise nützlich, wenn Sie vergessen haben, sudo einzugeben So führen Sie Befehle aus, die erhöhte Berechtigungen erfordern:

$ less /var/log/dnf.log
/var/log/dnf.log:Zugriff verweigert
$ sudo !!
$ sudo less /var/log/dnf.log

Diese Funktionen erleichtern das Auffinden und Wiederverwenden zuvor eingegebener Befehle.

Wohin soll es von hier aus gehen?

Dies sind nur einige der zsh-Funktionen, die Sie produktiver machen können; Es gibt viele mehr. Weitere Informationen finden Sie in den folgenden Ressourcen:

Eine Einführung in die Z-Shell

Ein Benutzerhandbuch für ZSH

Archlinux-Wiki

zsh-Liebhaber

Haben Sie zsh-Produktivitätstipps zu teilen? Ich würde gerne in den Kommentaren unten davon erfahren.


Linux
  1. Verbessern Sie Ihre Produktivität mit diesem leichten Linux-Desktop

  2. Erste Schritte mit Zsh

  3. Linux Tee-Befehl mit Beispielen

  4. Nohup-Befehl mit Beispielen

  5. Linux-Befehlszeilentipps zur Steigerung der Produktivität

AWK-Befehl in Linux mit Beispielen

Curl-Befehl in Linux mit Beispielen

Linux-IP-Befehl mit Beispielen

Netcat (nc) Befehl mit Beispielen

15 Linux-PS-Befehl mit Beispielen

Verlaufsbefehl mit Beispielen