75 Zsh commando’s, plugins, aliassen en gereedschappen
Ik breng een groot deel van mijn dag door in de terminal, en de shell van mijn keuze is Zsh – een zeer aanpasbare Unix shell met een aantal zeer krachtige mogelijkheden. Omdat ik een luie ontwikkelaarTM ben, ben ik altijd op zoek naar manieren om minder te typen en om alles te automatiseren. Gelukkig is dit iets waar Zsh zich goed voor leent.
In dit bericht ga ik 75 commando’s, plugins, aliassen en tools met je delen die je hopelijk wat toetsaanslagen besparen en je productiever maken in je dagelijkse werk.
Als je Zsh nog niet op je machine geïnstalleerd hebt, bekijk dan deze post, waar ik je laat zien hoe je aan de slag kunt.
15 Dingen die Zsh out of the box kan doen
Zsh deelt een hoop handige functies met Bash. Geen van de volgende zijn uniek voor Zsh, maar ze zijn toch goed om te weten. Ik moedig je aan om de commandoregel te gaan gebruiken om bewerkingen uit te voeren, zoals die hieronder staan. In het begin lijkt het misschien meer werk dan het gebruik van een GUI, maar als je het eenmaal onder de knie hebt, kijk je nooit meer om.
-
cd
invoeren van waar dan ook op het bestandssysteem brengt je direct terug naar je home directory. -
!!
invoeren brengt het laatste commando naar boven. Dit is handig als een commando mislukt omdat het admin-rechten nodig heeft. In dit geval kunt usudo !!
. - U kunt
&&
gebruiken om meerdere commando’s aan elkaar te rijgen. Bijvoorbeeld,mkdir project && cd project && npm init -y
. - Conditional execution is mogelijk met
||
. Bijvoorbeeld,git commit -m "whatever..." || echo "Commit failed"
. - Door een
-p
switch te gebruiken met hetmkdir
commando, kunt u bovenliggende directories maken als dat nodig is. Het gebruik van accolade-uitbreiding vermindert herhalingen. Bijvoorbeeld,mkdir -p articles/jim/sitepoint/article{1,2,3}
. - Stel omgevingsvariabelen in op een per-commando basis zoals dit:
NODE_DEBUG=myapp node index.js
. Of, op een per-sessie basis zoals dit:export NODE_DEBUG=myapp
. U kunt controleren of het is ingesteld doorecho $<variable-name>
. - Pipe de uitvoer van een commando naar een tweede commando. Bijvoorbeeld
cat /var/log/kern.log | less
om een lang logboek leesbaar te maken, ofhistory | grep ssh
om te zoeken naar historie-items die “ssh” bevatten. - U kunt bestanden in uw editor openen vanaf de terminal. Bijvoorbeeld,
nano ~/.zshrc
(nano),subl ~/.zshrc
(Sublime Text),code ~/.zshrc
(VS Code). Als het bestand niet bestaat, zal het worden gemaakt wanneer u op Save drukt in de editor. - Navigatie is een belangrijke vaardigheid om te beheersen. Vertrouw niet alleen op je pijltjestoetsen. Bijvoorbeeld, Ctrl + a brengt u naar het begin van een regel.
- Waar Ctrl + e brengt u naar het einde.
- U kunt Ctrl + w gebruiken om één woord te verwijderen (achteruit).
- Ctrl + u verwijdert alles vanaf de cursor tot het begin van de regel.
- Ctrl + k verwijdert alles vanaf de cursor tot het einde van de regel. Deze laatste drie kunnen ongedaan worden gemaakt met Ctrl + y.
- U kunt tekst kopiëren met Ctrl + Shift + c. Dit is veel eleganter dan rechts klikken en Kopiëren selecteren.
- Omgekeerd kunt u gekopieerde tekst plakken met Ctrl + shift + v.
Probeer deze toetsencombinaties in het geheugen te prenten. U zult verbaasd zijn hoe vaak ze van pas komen.
15 Aangepaste Aliassen om uw productiviteit te verhogen
Aliassen zijn terminal-snelkoppelingen voor gewone opdrachten. U kunt ze toevoegen aan uw ~/.zshrc
bestand, en dan uw terminal opnieuw laden (met source ~/.zshrc
) om ze effect te laten sorteren.
De syntax voor het declareren van een (eenvoudige) alias is als volgt:
alias =''
Aliassen zijn geweldig voor vaak gebruikte commando’s, lange commando’s, of commando’s met een moeilijk te onthouden syntaxis. Hier zijn er enkele die ik regelmatig gebruik:
- Een
myip
alias, die uw huidige publieke IP adres op de terminal afdrukt:alias myip='curl http://ipecho.net/plain; echo'
. - A
distro
alias om informatie over uw Linux distributie te geven:alias distro='cat /etc/*-release'
. - A
reload
alias, omdat ik nooit kan onthouden hoe ik mijn terminal moet herladen:alias reload='source ~/.zshrc'
. - Een
undo-git-reset
alias:alias undo-git-reset-head="git reset 'HEAD@{1}'"
. Dit herstelt de effecten van het draaien vangit reset HEAD~
. - Een alias om pakketlijsten bij te werken:
alias sapu='sudo apt-get update'
. - Een alias om het vorige commando opnieuw uit te voeren met
sudo
:alias ffs='sudo !!'
. - Omdat ik lui ben, heb ik
y
gealiased naar hetyarn
commando:alias y='yarn'
. Dit betekent dat ik een repo kan clonen, en dan gewoon y kan typen om alle dependencies binnen te halen. Ik heb deze geleerd van Scott Tolinski op Syntax. - Niet een van de die ik gebruik, maar deze alias blaast de
node_modules
map weg en verwijdert hetpackage-lock.json
bestand, voordat hij de afhankelijkheden van een project opnieuw installeert:alias yolo='rm -rf node_modules/ && rm package-lock.json && yarn install'
. Zoals u waarschijnlijk weet, staat yolo voor You Only Live Once. - Een alias om mijn
.zshrc
bestand te openen voor bewerking:alias zshconfig='subl $HOME/.zshrc'
. - Een alias om de lijst van Ruby versies bij te werken die rbenv kan installeren:
alias update-available-rubies='cd ~/.rbenv/plugins/ruby-build && git pull'
- Een alias om een server te starten in uw huidige directory (geen npm pakketten nodig):
alias server='python -m SimpleHTTPServer 8000'
. - U kunt ook een alias maken om documentatie in uw browser te openen:
alias npmhelp='firefox https://github.com/robbyrussell/oh-my-zsh/tree/master/plugins/npm'
. - Een globale alias om de uitvoer van een commando te pijpen naar
less
:alias -g L='| less'
. U kunt het als volgt gebruiken:cat production.log L
. - Een globaal alias om de uitvoer van een commando te pijpen naar
grep
:alias -g G='| grep'
. U kunt het als volgt gebruiken:history G ssh
. - U kunt ook functies gebruiken om aliassen te maken. Het volgende (van hier) creëert een alias die code toevoegt, committeert, en pusht naar GitHub:
bash
function acp() {
git add .
git commit -m ""
git push
}
Er zijn veel plaatsen om meer ideeën voor aliassen online te vinden. Bijvoorbeeld deze discussie op Hacker News, of dit bericht over opdrachtregelproductiviteit met Zsh.
15 coole dingen die je kunt doen met (Oh My) Zsh
Oh My Zsh is een community-gedreven raamwerk voor het beheren van je Zsh-configuratie en wordt geleverd met duizenden handige functies, helpers, plugins en thema’s. Als je van de Z shell je dagelijkse driver gaat maken, zou je echt Oh My Zsh moeten installeren.
Hier zijn vijftien handige dingen die Oh My Zsh voor je kan doen:
- Het
take
commando maakt een nieuwe directory aan en verandert daar in.take my-project
vervangtmkdir my-project && cd my-project
. -
zsh_stats
geeft u een lijst van de top 20 commando’s en hoe vaak ze zijn uitgevoerd. - Oh My Zsh vereenvoudigt het navigeren door uw bestandssysteem.
..
is bijvoorbeeld een alias voorcd ..
. - Op dezelfde manier verplaatst
...
u twee mappen omhoog,....
verplaatst u drie mappen omhoog en.....
verplaatst u vier mappen omhoog. - U kunt de
cd
weglaten bij het navigeren. Als u bijvoorbeeld/
typt, gaat u rechtstreeks naar de root van uw bestandssysteem. - Partial matching wordt ook ondersteund. Bijvoorbeeld, het typen van
/h/j/De
en op TAB drukken, dan Return, brengt me naar/home/jim/Desktop/
. -
rd
is een alias voorrmdir
enmd
is een alias voormkdir -p
. - U kunt
d
typen om de laatst gebruikte directories van een terminal sessie op te sommen. - U kunt dan naar een van deze directories navigeren met
cd -n
, waarbijn
het directory nummer is. - Tab completion is een andere geweldige functie. Als u bijvoorbeeld
ls -
intypt en op TAB drukt, worden alle opties van het commando opgesomd, samen met een nuttige beschrijving van wat ze doen. Dit werkt ook voorcap
,rake
,ssh
, enkill
. - Typ
alias
geeft een lijst van al uw huidige aliassen. - Met globbing (een Zsh mogelijkheid), kunt u een lijst maken van bestanden met een bepaalde extensie. Bijvoorbeeld,
ls *.html
geeft een lijst van alle HTML bestanden in de huidige directory. Om subdirectories op te nemen, verandert u in:ls **/*.html
. - Met Glob qualifiers kunt u bestandstypen selecteren met behulp van vlaggen. Bijvoorbeeld,
ls -l **/*(.x)
vindt alle uitvoerbare bestanden in de huidige directory en alle sub-directories. - U kunt naar bestanden zoeken op datum gewijzigd. Bijvoorbeeld,
ls *(m-7)
zal een lijst van alle bestanden gewijzigd in de afgelopen week. - U kunt zoeken naar bestanden op grootte. Bijvoorbeeld,
ls *(Lm+1)
zal alle bestanden vinden met een grootte groter dan 1MB.
Het gebruik van plugins voor plezier en winst
Oh My Zsh wordt geleverd met een heleboel plugins. Je zou deze eens moeten bekijken en wat tijd investeren om die plugins te leren die je workflow zullen helpen.
Hier zijn drie plugins die ik regelmatig gebruik, die een hoop handige snelkoppelingen en aliassen bieden.
10 handige Git aliassen
De git plugin biedt veel aliassen en een aantal handige functies. Waarom zou je deze niet eens doornemen en proberen je top tien te onthouden? Hier zijn degene die ik het vaakst gebruik.
-
g
is een handige alias voorgit
. Dit betekent dat u dingen kunt typen alsg clone <whatever>
in plaats vangit clone <whatever>
. Het zijn misschien maar twee toetsaanslagen, maar ze tellen al snel op. -
gaa
is een alias voorgit add all
. Ik gebruik deze altijd. -
gb
is een alias voorgit branch
, die een lijst maakt van alle branches in de huidige repo en je laat zien op welke je zit. -
gcb
is een alias voorgit checkout -b
, het commando waarmee je een nieuwe branch kunt maken. -
gcm
is een alias voorgit checkout master
. Hiermee keert u terug naar de master branch. -
gdca
is een alias voorgit diff --cached
. Hiermee kunt u bestanden diff’en die u heeft ge-staged voor commit. -
gf
is een alias voorgit fetch
. -
gm
is een alias voorgit merge
. -
gp
is een alias voorgit push
. Om een vork van een repo te synchroniseren, zou je kunnen doen:gf upstream
,gm upstream/master
, gevolgd doorgp
. -
glog
is een alias voorgit log --oneline --decorate --graph
, wat je een mooie git branch grafiek zal geven.
10 Handige npm Aliassen
De npm plugin biedt ook een aantal handige aliassen.
-
npmg
is een alias voornpm install --global
, die u kunt gebruiken om afhankelijkheden globaal op uw systeem te installeren. Bijvoorbeeld,npmg nodemon
. -
npmS
is een alias voornpm install --save
, die u gebruikt om afhankelijkheden te installeren en ze toe te voegen aan dedependencies
sectie van uwpackage.json
. Merk op dat, vanaf npm 5.0.0, dit de standaard is wanneernpm i <package>
wordt uitgevoerd. -
npmD
is een alias voornpm install --save-dev
, die u gebruikt om afhankelijkheden te installeren en ze toe te voegen aan dedevDependencies
sectie van uwpackage.json
. -
npmO
is een alias voornpm outdated
, die het register controleert om te zien of geïnstalleerde pakketten verouderd zijn. -
npmL
is een alias voornpm list
, die een lijst van geïnstalleerde pakketten geeft. -
npmL0
is een alias voornpm list --depth=0
, die top-level pakketten geeft. Dit is vooral nuttig om te zien welke modules globaal geïnstalleerd zijn zonder uw terminal te overspoelen met een enorme afhankelijkhedenboom:npmL0 -g
. -
npmst
is een alias voornpm run start
, een npm-script dat vaak wordt gebruikt om een toepassing te starten. -
npmt
is een alias voornpm run test
, die, zoals u misschien al raadt, wordt gebruikt om uw tests uit te voeren. -
npmR
is een alias voornpm run
. Op zichzelf geeft dit commando een lijst van alle beschikbare npm scripts van een project, samen met een beschrijving van wat ze doen. Gebruikt in combinatie met een scriptnaam, zal het dat script uitvoeren, Bijvoorbeeld,npmR build
. -
npmI
is een alias voornpm init
. Dit zal u een hoop vragen stellen, en dan eenpackage.json
maken op basis van uw antwoorden. Gebruik de-y
vlag om het proces te automatiseren. Bijvoorbeeld,npmI -y
.
10 Tijdbesparende Rails/Rake Aliassen
Deze plugin voegt aanvullingen toe voor het Ruby on Rails framework en het Rake programma, en ook enkele aliassen voor logs en omgevingsvariabelen.
-
rc
is een alias voorrails console
, die u toestaat om te interageren met uw Rails app vanuit de CLI. -
rdc
is een alias voorrake db:create
, die (tenzijRAILS_ENV
is ingesteld) de ontwikkeling en test databases voor uw app maakt. -
rdd
is een alias voorrake db:drop
, die de ontwikkelings- en testdatabases van uw app laat vallen. -
rdm
is een alias voorrake db:migrate
, die alle hangende databasemigraties zal uitvoeren. -
rds
is een alias voorrake db:seed
, die hetdb/seeds.rb
bestand uitvoert om uw ontwikkelingsdatabase met data te vullen. -
rgen
is een alias voorrails generate
, die boilerplate code zal genereren. Bijvoorbeeld:rgen scaffold item name:string description:text
. -
rgm
is een alias voorrails generate migration
, die een databasemigratie zal genereren. Bijvoorbeeld:rgm add_description_to_products description:string
. -
rr
is een alias voorrake routes
, die een lijst geeft van alle gedefinieerde routes van een app. -
rrg
is een alias voorrake routes | grep
, waarmee u een lijst kunt maken en de gedefinieerde routes kunt filteren. Bijvoorbeeld,rrg user
. -
rs
is een alias voorrails server
, die de Rails standaard web server start.
Aanvullende Hulpmiddelen
De belangrijkste taak van de hierboven genoemde plugins is om aliassen te geven voor vaak gebruikte commando’s. Weet dat er nog veel meer plugins zijn die uw shell uitbreiden met extra functionaliteit.
Hier zijn vier van mijn favorieten:
- sudo stelt u in staat om gemakkelijk uw huidige of vorige commando’s te laten voorafgaan door
sudo
door twee keer op ESC te drukken. - autosuggestions suggereert commando’s terwijl u typt, gebaseerd op geschiedenis en voltooiing. Als de suggestie die is waarnaar u op zoek bent, drukt u op de → toets om deze te accepteren. Een echte tijdsbesparing!
- command-not-found: als een commando niet wordt herkend in de
$PATH
, zal dit Ubuntu’s command-not-found pakket gebruiken om het te vinden of spelfouten suggereren. - z is een handige plugin die een lijst samenstelt van je meest gebruikte en recente mappen (het noemt deze “frecent”) en je in staat stelt om er met één commando naar toe te springen.
En vergeet niet, als je veel tijd in de terminal doorbrengt, is het de moeite waard om wat moeite te investeren om het visueel aantrekkelijk te maken. Gelukkig heeft Oh My Zsh een heleboel thema’s waar je uit kunt kiezen. Mijn keuze is Agnoster.
Je kunt meer over thema’s vinden in mijn artikel 10 Zsh Tips & Tricks: Configuratie, Aanpassing & Gebruik.
Conclusie
Daar hebben we het dan: 75 Zsh commando’s, plugins, aliassen en tools. Ik hoop dat je onderweg een paar trucjes geleerd hebt, en ik moedig je aan om uit je GUIs en in de terminal te stappen. Het is makkelijker dan het lijkt en een geweldige manier om je productiviteit te verhogen.
Als ik je favoriete plugin of tijdbesparende alias/commando heb gemist, laat het me weten op Twitter.
Wil je nog meer uit je toolkit halen? Kijk dan eens naar Visual Studio Code: End-to-End Editing and Debugging Tools for Web Developers van Wiley.