75 Zsh-Befehle, Plugins, Aliase und Tools
Ich verbringe einen großen Teil meines Tages im Terminal, und meine bevorzugte Shell ist Zsh – eine hochgradig anpassbare Unix-Shell, die einige sehr mächtige Funktionen bietet. Da ich ein fauler EntwicklerTM bin, suche ich immer nach Möglichkeiten, weniger zu tippen und alle Dinge zu automatisieren. Glücklicherweise ist dies etwas, wofür sich Zsh gut eignet.
In diesem Beitrag werde ich 75 Befehle, Plugins, Aliase und Tools vorstellen, die Ihnen hoffentlich einige Tastenanschläge ersparen und Sie bei Ihrer täglichen Arbeit produktiver machen.
Wenn Sie Zsh noch nicht auf Ihrem Rechner installiert haben, dann schauen Sie sich diesen Beitrag an, in dem ich Ihnen zeige, wie Sie es zum Laufen bringen.
15 Dinge, die Zsh von Haus aus kann
Zsh hat viele praktische Funktionen mit der Bash gemeinsam. Keine der folgenden sind einzigartig für Zsh, aber sie sind trotzdem gut zu wissen. Ich möchte Sie dazu ermutigen, die Befehlszeile zu verwenden, um Operationen wie die unten aufgeführten durchzuführen. Es mag zunächst mehr Arbeit machen als die Verwendung einer grafischen Benutzeroberfläche, aber wenn Sie erst einmal den Dreh raus haben, werden Sie nie wieder zurückblicken.
- Die Eingabe von
cd
von einer beliebigen Stelle des Dateisystems aus bringt Sie direkt zu Ihrem Heimatverzeichnis zurück. - Die Eingabe von
!!
bringt den letzten Befehl. Dies ist praktisch, wenn ein Befehl fehlschlägt, weil er Administratorrechte benötigt. In diesem Fall können Siesudo !!
. - Sie können
&&
verwenden, um mehrere Befehle zu verketten. Zum Beispiel:mkdir project && cd project && npm init -y
. - Die bedingte Ausführung ist mit
||
möglich. Beispiel:git commit -m "whatever..." || echo "Commit failed"
. - Die Verwendung eines
-p
-Schalters mit dem Befehlmkdir
ermöglicht es Ihnen, übergeordnete Verzeichnisse nach Bedarf zu erstellen. Die Verwendung der Klammererweiterung reduziert Wiederholungen. Beispiel:mkdir -p articles/jim/sitepoint/article{1,2,3}
. - Setzen Sie Umgebungsvariablen für jeden Befehl wie folgt:
NODE_DEBUG=myapp node index.js
. Oder pro Sitzung wie folgt:export NODE_DEBUG=myapp
. Sie können überprüfen, ob sie gesetzt wurde, indem Sieecho $<variable-name>
eingeben. - Leiten Sie die Ausgabe eines Befehls in einen zweiten Befehl. Zum Beispiel
cat /var/log/kern.log | less
, um ein langes Protokoll lesbar zu machen, oderhistory | grep ssh
, um nach allen History-Einträgen zu suchen, die „ssh“ enthalten. - Sie können Dateien in Ihrem Editor vom Terminal aus öffnen. Zum Beispiel
nano ~/.zshrc
(nano),subl ~/.zshrc
(Sublime Text),code ~/.zshrc
(VS Code). Wenn die Datei nicht existiert, wird sie erstellt, wenn Sie im Editor auf Speichern drücken. - Navigation ist eine wichtige Fähigkeit, die man beherrschen muss. Verlassen Sie sich nicht nur auf Ihre Pfeiltasten. Mit der Tastenkombination Strg + a springen Sie zum Beispiel an den Anfang einer Zeile.
- Mit der Tastenkombination Strg + e springen Sie an das Ende.
- Mit der Tastenkombination Strg + w löschen Sie ein Wort (rückwärts).
- Mit der Tastenkombination Strg + u löschen Sie alles vom Cursor bis zum Anfang der Zeile.
- Mit der Tastenkombination Strg + k löschen Sie alles vom Cursor bis zum Ende der Zeile. Die letzten drei können mit Strg + y rückgängig gemacht werden.
- Sie können Text mit Strg + Umschalt + c kopieren. Das ist viel eleganter als mit der rechten Maustaste zu klicken und Kopieren auszuwählen.
- Umgekehrt können Sie kopierten Text mit Strg + Umschalt + v einfügen.
Versuchen Sie, sich diese Tastenkombinationen einzuprägen. Sie werden überrascht sein, wie oft sie sich als nützlich erweisen.
15 benutzerdefinierte Aliase zur Steigerung Ihrer Produktivität
Aliase sind Terminal-Kurzbefehle für reguläre Befehle. Sie können sie zu Ihrer ~/.zshrc
-Datei hinzufügen und dann Ihr Terminal neu laden (mit source ~/.zshrc
), damit sie wirksam werden.
Die Syntax für die Deklaration eines (einfachen) Alias lautet wie folgt:
alias =''
Aliase sind ideal für häufig verwendete Befehle, lange Befehle oder Befehle mit einer schwer zu merkenden Syntax. Hier sind einige der Befehle, die ich regelmäßig verwende:
- Ein
myip
-Alias, der Ihre aktuelle öffentliche IP-Adresse auf dem Terminal ausgibt:alias myip='curl http://ipecho.net/plain; echo'
. - A
distro
alias, um Informationen über Ihre Linux-Distribution auszugeben:alias distro='cat /etc/*-release'
. - A
reload
alias, da ich mich nie erinnern kann, wie ich mein Terminal neu laden kann:alias reload='source ~/.zshrc'
. - Ein
undo-git-reset
Alias:alias undo-git-reset-head="git reset 'HEAD@{1}'"
. Dies macht die Auswirkungen der Ausführung vongit reset HEAD~
. - Ein Alias zum Aktualisieren von Paketlisten rückgängig:
alias sapu='sudo apt-get update'
. - Ein Alias, um den vorherigen Befehl mit
sudo
erneut auszuführen:alias ffs='sudo !!'
. - Weil ich faul bin, habe ich
y
mit dem Befehlyarn
verknüpft:alias y='yarn'
. Das bedeutet, dass ich ein Repository klonen und dann einfach y eingeben kann, um alle Abhängigkeiten einzubinden. Das habe ich von Scott Tolinski auf Syntax gelernt. - Ich benutze diesen Alias nicht, aber er löscht den Ordner
node_modules
und entfernt die Dateipackage-lock.json
, bevor ich die Abhängigkeiten eines Projekts neu installiere:alias yolo='rm -rf node_modules/ && rm package-lock.json && yarn install'
. Wie du wahrscheinlich weißt, steht yolo für You Only Live Once. - Ein Alias, um meine
.zshrc
-Datei zum Bearbeiten zu öffnen:alias zshconfig='subl $HOME/.zshrc'
. - Ein Alias, um die Liste der Ruby-Versionen zu aktualisieren, die rbenv installieren kann:
alias update-available-rubies='cd ~/.rbenv/plugins/ruby-build && git pull'
- Ein Alias, um einen Server im aktuellen Verzeichnis zu starten (keine npm-Pakete erforderlich):
alias server='python -m SimpleHTTPServer 8000'
. - Sie können auch einen Alias erstellen, um die Dokumentation in Ihrem Browser zu öffnen:
alias npmhelp='firefox https://github.com/robbyrussell/oh-my-zsh/tree/master/plugins/npm'
. - Ein globaler Alias, um die Ausgabe eines Befehls nach
less
zu leiten:alias -g L='| less'
. Sie können ihn wie folgt verwenden:cat production.log L
. - Ein globaler Alias, um die Ausgabe eines Befehls nach
grep
zu leiten:alias -g G='| grep'
. Sie können ihn wie folgt verwenden:history G ssh
. - Sie können auch Funktionen zum Erstellen von Aliasen verwenden. Das Folgende (von hier) erstellt einen Alias, der Code zu GitHub hinzufügt, überträgt und pusht:
bash
function acp() {
git add .
git commit -m ""
git push
}
Es gibt viele Orte, an denen man weitere Ideen für Aliase online finden kann. Zum Beispiel diese Diskussion auf Hacker News oder dieser Beitrag über die Produktivität in der Kommandozeile mit Zsh.
15 coole Dinge, die man mit (Oh My) Zsh tun kann
Oh My Zsh ist ein von der Community betriebenes Framework zur Verwaltung der Zsh-Konfiguration und wird mit Tausenden von hilfreichen Funktionen, Helfern, Plugins und Themen geliefert. Wenn Sie die Z-Shell zu Ihrem täglichen Begleiter machen wollen, sollten Sie Oh My Zsh wirklich installieren.
Hier sind fünfzehn nützliche Dinge, die Oh My Zsh für Sie tun kann:
- Der
take
Befehl erstellt ein neues Verzeichnis und wechselt in dieses.take my-project
ersetztmkdir my-project && cd my-project
. -
zsh_stats
gibt dir eine Liste der 20 wichtigsten Befehle und wie oft sie ausgeführt wurden. - Oh My Zsh vereinfacht die Navigation in deinem Dateisystem. Zum Beispiel ist
..
ein Alias fürcd ..
. - Auf die gleiche Weise bringt Sie
...
zwei Verzeichnisse nach oben,....
drei und.....
vier. - Sie können das
cd
beim Navigieren weglassen. Wenn Sie zum Beispiel/
eingeben, gelangen Sie direkt zum Stammverzeichnis Ihres Dateisystems. - Teilweise Übereinstimmung wird ebenfalls unterstützt. Wenn ich zum Beispiel
/h/j/De
eingebe und TAB und dann Return drücke, komme ich zu/home/jim/Desktop/
. -
rd
ist ein Alias fürrmdir
undmd
ist ein Alias fürmkdir -p
. - Sie können
d
eingeben, um die zuletzt verwendeten Verzeichnisse einer Terminalsitzung aufzulisten. - Sie können dann zu jedem dieser Verzeichnisse navigieren, indem Sie
cd -n
eingeben, wobein
die Verzeichnisnummer ist. - Die Tabulatorvervollständigung ist eine weitere großartige Funktion. Wenn Sie z. B.
ls -
eingeben und die Tabulatortaste drücken, werden alle Optionen des Befehls aufgelistet, zusammen mit einer hilfreichen Beschreibung, was sie bewirken. Dies funktioniert auch fürcap
,rake
,ssh
undkill
. - Die Eingabe von
alias
listet alle Ihre aktuellen Aliase auf. - Mit globbing (eine Zsh-Funktion) können Sie Dateien mit einer bestimmten Erweiterung auflisten. Zum Beispiel listet
ls *.html
alle HTML-Dateien im aktuellen Verzeichnis auf. Um Unterverzeichnisse einzuschließen, ändern Sie in:ls **/*.html
. - Mit Glob-Qualifiern können Sie Dateitypen mit Hilfe von Flags auswählen. Zum Beispiel findet
ls -l **/*(.x)
alle ausführbaren Dateien im aktuellen Verzeichnis und in allen Unterverzeichnissen. - Sie können Dateien nach Änderungsdatum suchen. Beispiel:
ls *(m-7)
listet alle Dateien auf, die in der letzten Woche geändert wurden. - Sie können nach Dateien anhand ihrer Größe suchen. Zum Beispiel findet
ls *(Lm+1)
alle Dateien mit einer Größe von mehr als 1MB.
Using Plugins for Fun and Profit
Oh My Zsh wird mit einer Vielzahl von Plugins ausgeliefert. Sie sollten diese durchsehen und etwas Zeit investieren, um die zu lernen, die Ihren Arbeitsablauf unterstützen.
Hier sind drei Plugins, die ich regelmäßig benutze und die eine Menge praktischer Abkürzungen und Aliase bieten.
10 Nifty Git Aliases
Das Git-Plugin bietet viele Aliase und einige nützliche Funktionen. Warum gehen Sie diese nicht durch und versuchen Sie, sich Ihre Top Ten zu merken? Hier sind die, die ich am häufigsten verwende.
-
g
ist ein praktischer Alias fürgit
. Das bedeutet, dass Sie Dinge wieg clone <whatever>
anstelle vongit clone <whatever>
eingeben können. Das sind zwar nur zwei Tastenanschläge, aber sie summieren sich schnell. -
gaa
ist ein Alias fürgit add all
. Ich benutze ihn ständig. -
gb
ist ein Alias fürgit branch
, der alle Zweige im aktuellen Repo auflistet und anzeigt, in welchem man sich befindet. -
gcb
ist ein Alias fürgit checkout -b
, den Befehl, mit dem man einen neuen Zweig erstellen kann. -
gcm
ist ein Alias fürgit checkout master
. Damit kehren Sie zum Master-Zweig zurück. -
gdca
ist ein Alias fürgit diff --cached
. Damit können Sie alle Dateien vergleichen, die Sie für die Übergabe bereitgestellt haben. -
gf
ist ein Alias fürgit fetch
. -
gm
ist ein Alias fürgit merge
. -
gp
ist ein Alias fürgit push
. Um einen Fork eines Repos zu synchronisieren, könnte man Folgendes tun:gf upstream
,gm upstream/master
, gefolgt vongp
. -
glog
ist ein Alias fürgit log --oneline --decorate --graph
, wodurch man einen hübschen Git-Branch-Graph erhält.
10 Praktische npm-Aliase
Das npm-Plugin bietet auch eine Reihe nützlicher Aliase.
-
npmg
ist ein Alias fürnpm install --global
, mit dem Sie Abhängigkeiten global auf Ihrem System installieren können. Zum Beispiel istnpmg nodemon
. -
npmS
ein Alias fürnpm install --save
, den Sie verwenden, um Abhängigkeiten zu installieren und sie zumdependencies
Abschnitt Ihrespackage.json
hinzuzufügen. Beachten Sie, dass dies seit npm 5.0.0 der Standard ist, wenn Sienpm i <package>
ausführen. -
npmD
ist ein Alias fürnpm install --save-dev
, den Sie verwenden, um Abhängigkeiten zu installieren und sie zumdevDependencies
Abschnitt Ihrespackage.json
hinzuzufügen. -
npmO
ist ein Alias fürnpm outdated
, der die Registry überprüft, um zu sehen, ob irgendwelche (oder bestimmte) installierte Pakete derzeit veraltet sind. -
npmL
ist ein Alias fürnpm list
, der installierte Pakete auflistet. -
npmL0
ist ein Alias fürnpm list --depth=0
, der Top-Level-Pakete auflistet. Dies ist besonders nützlich, um zu sehen, welche Module global installiert sind, ohne das Terminal mit einem riesigen Abhängigkeitsbaum zu überfluten:npmL0 -g
. -
npmst
ist ein Alias fürnpm run start
, ein npm-Skript, das oft zum Starten einer Anwendung verwendet wird. -
npmt
ist ein Alias fürnpm run test
, das, wie Sie vielleicht erraten, zum Ausführen Ihrer Tests verwendet wird. -
npmR
ist ein Alias fürnpm run
. Alleine listet dieser Befehl alle verfügbaren npm-Skripte eines Projekts auf, zusammen mit einer Beschreibung ihrer Funktion. In Verbindung mit einem Skriptnamen wird dieses Skript ausgeführt. Zum Beispiel istnpmR build
. -
npmI
ein Alias fürnpm init
. Es stellt Ihnen eine Reihe von Fragen und erstellt dann auf der Grundlage Ihrer Antworten einpackage.json
. Verwenden Sie das Kennzeichen-y
, um den Prozess zu automatisieren. Zum BeispielnpmI -y
.
10 Zeitsparende Rails/Rake-Aliase
Dieses Plugin fügt Vervollständigungen für das Ruby on Rails-Framework und das Rake-Programm sowie einige Aliase für Protokolle und Umgebungsvariablen hinzu.
-
rc
ist ein Alias fürrails console
, der es Ihnen ermöglicht, mit Ihrer Rails-Anwendung über die CLI zu interagieren. -
rdc
ist ein Alias fürrake db:create
, der (sofernRAILS_ENV
nicht gesetzt ist) die Entwicklungs- und Testdatenbank für Ihre Anwendung erstellt. -
rdd
ist ein Alias fürrake db:drop
, der die Entwicklungs- und Testdatenbanken Ihrer Anwendung löscht. -
rdm
ist ein Alias fürrake db:migrate
, der alle anstehenden Datenbankmigrationen ausführt. -
rds
ist ein Alias fürrake db:seed
, der die Dateidb/seeds.rb
ausführt, um Ihre Entwicklungsdatenbank mit Daten zu füllen. -
rgen
ist ein Alias fürrails generate
, der Boilerplate-Code erzeugt. Zum Beispiel:rgen scaffold item name:string description:text
. -
rgm
ist ein Alias fürrails generate migration
, der eine Datenbankmigration erzeugt. Zum Beispiel:rgm add_description_to_products description:string
. -
rr
ist ein Alias fürrake routes
, der alle definierten Routen einer App auflistet. -
rrg
ist ein Alias fürrake routes | grep
, mit dem Sie die definierten Routen auflisten und filtern können. Zum Beispiel istrrg user
. -
rs
ein Alias fürrails server
, der den Rails-Standard-Webserver startet.
Zusätzliche Ressourcen
Die Hauptaufgabe der oben aufgeführten Plugins ist es, Aliase für häufig verwendete Befehle bereitzustellen. Bitte beachten Sie, dass es noch viele weitere Plugins gibt, die Ihre Shell um zusätzliche Funktionen erweitern.
Hier sind vier meiner Favoriten:
- sudo ermöglicht es Ihnen, Ihren aktuellen oder vorherigen Befehlen einfach ein
sudo
voranzustellen, indem Sie zweimal ESC drücken. - autosuggestions schlägt Ihnen während der Eingabe Befehle vor, die auf dem Verlauf und den Vervollständigungen basieren. Wenn der Vorschlag der Richtige ist, drücken Sie die → Taste, um ihn zu akzeptieren. Eine echte Zeitersparnis!
- command-not-found: Wenn ein Befehl nicht im
$PATH
erkannt wird, wird das Ubuntu-Paket command-not-found verwendet, um ihn zu finden oder Schreibfehler vorzuschlagen. - z ist ein praktisches Plugin, das eine Liste Ihrer häufigsten und neuesten Ordner erstellt (es nennt diese „frecent“) und es Ihnen ermöglicht, mit einem einzigen Befehl zu ihnen zu springen.
Und vergessen Sie nicht, wenn Sie viel Zeit im Terminal verbringen, lohnt es sich, etwas Mühe zu investieren, um es visuell ansprechend zu gestalten. Glücklicherweise wird Oh My Zsh mit einer ganzen Reihe von Themes ausgeliefert, aus denen Sie wählen können. Mein Favorit ist Agnoster.
Mehr über Themes erfahren Sie in meinem Artikel 10 Zsh Tipps & Tricks: Konfiguration, Anpassung & Verwendung.
Fazit
So, da haben wir es: 75 Zsh-Befehle, Plugins, Aliase und Tools. Ich hoffe, Sie haben den einen oder anderen Trick gelernt, und ich möchte Sie ermutigen, aus Ihren GUIs herauszukommen und ins Terminal zu gehen. Es ist einfacher, als es aussieht, und eine großartige Möglichkeit, Ihre Produktivität zu steigern.
Wenn ich Ihr Lieblings-Plugin oder Ihren zeitsparenden Alias/Befehl verpasst habe, lassen Sie es mich auf Twitter wissen.
Wollen Sie noch mehr aus Ihrem Toolkit herausholen? Sehen Sie sich Visual Studio Code an: End-to-End Editing and Debugging Tools for Web Developers von Wiley.