75 Zsh-kommandon, plugins, alias och verktyg
Jag tillbringar en stor del av dagen i terminalen, och mitt skal är Zsh – ett mycket anpassningsbart Unix-skal som innehåller några mycket kraftfulla funktioner. Eftersom jag är en lat utvecklareTM letar jag alltid efter sätt att skriva mindre och automatisera alla saker. Lyckligtvis är detta något som Zsh lämpar sig väl för.
I det här inlägget kommer jag att dela med mig av 75 kommandon, plugins, alias och verktyg som förhoppningsvis kommer att spara dig några tangenttryckningar och göra dig mer produktiv i ditt dagliga arbete.
Om du inte har Zsh installerat på din maskin kan du kolla in det här inlägget, där jag visar hur du kommer igång.
15 saker som Zsh kan göra out of the box
Zsh delar många praktiska funktioner med Bash. Ingen av följande är unik för Zsh, men de är ändå bra att känna till. Jag uppmuntrar dig att börja använda kommandoraden för att utföra operationer som de som anges nedan. Det kan verka som mer arbete än att använda ett grafiskt gränssnitt till en början, men när du väl har fått grepp om det kommer du aldrig att se tillbaka.
- Tangera
cd
från vilken plats som helst i filsystemet så kommer du direkt tillbaka till din hemkatalog. - Tangera
!!
så kommer du att få upp det sista kommandot. Detta är praktiskt om ett kommando misslyckas på grund av att det kräver administratörsrättigheter. I detta fall kan du skrivasudo !!
. - Du kan använda
&&
för att kedja flera kommandon. Till exempelmkdir project && cd project && npm init -y
. - Den villkorliga exekveringen är möjlig med hjälp av
||
. Till exempelgit commit -m "whatever..." || echo "Commit failed"
. - Om du använder en
-p
-switch med kommandotmkdir
kan du skapa överordnade kataloger vid behov. Genom att använda expansion av parenteser minskas upprepningar. Till exempelmkdir -p articles/jim/sitepoint/article{1,2,3}
. - Sätt miljövariabler per kommando på följande sätt:
NODE_DEBUG=myapp node index.js
. Eller per session på följande sätt:export NODE_DEBUG=myapp
. Du kan kontrollera att den är inställd genom att skrivaecho $<variable-name>
. - Pipa in utdata från ett kommando i ett annat kommando. Till exempel
cat /var/log/kern.log | less
för att göra en lång logg läsbar, ellerhistory | grep ssh
för att söka efter alla historikposter som innehåller ”ssh”. - Du kan öppna filer i din editor från terminalen. Till exempel
nano ~/.zshrc
(nano),subl ~/.zshrc
(Sublime Text),code ~/.zshrc
(VS Code). Om filen inte finns kommer den att skapas när du trycker på Spara i editorn. - Navigation är en viktig färdighet att behärska. Lita inte bara på dina piltangenter. Ctrl + a tar dig till exempel till början av en rad.
- Varemot Ctrl + e tar dig till slutet.
- Du kan använda Ctrl + w för att radera ett ord (baklänges).
- Ctrl + u tar bort allt från markören till radens början.
- Ctrl + k tar bort allt från markören till radens slut. Dessa tre sista kan ångras med Ctrl + y.
- Du kan kopiera text med Ctrl + Shift + c. Detta är mycket elegantare än att högerklicka och välja Kopiera.
- Omvänt kan du klistra in kopierad text med Ctrl + shift + v.
Försök att lära dig dessa tangentkombinationer utantill. Du kommer att bli förvånad över hur ofta de kommer till nytta.
15 anpassade alias för att öka din produktivitet
Alias är terminalgenvägar för vanliga kommandon. Du kan lägga till dem i din ~/.zshrc
-fil och sedan ladda om terminalen (med source ~/.zshrc
) för att de ska träda i kraft.
Syntaxen för att deklarera ett (enkelt) alias är följande:
alias =''
Aliaser är bra för ofta använda kommandon, långa kommandon eller kommandon med en syntax som är svår att komma ihåg. Här är några av dem jag använder regelbundet:
- A
myip
alias, som skriver ut din nuvarande offentliga IP-adress till terminalen:alias myip='curl http://ipecho.net/plain; echo'
. - A
distro
alias för att skriva ut information om din Linuxdistribution:alias distro='cat /etc/*-release'
. - A
reload
alias, eftersom jag aldrig kommer ihåg hur jag ska ladda om min terminal:alias reload='source ~/.zshrc'
. - En
undo-git-reset
alias:alias undo-git-reset-head="git reset 'HEAD@{1}'"
. Detta upphäver effekterna av att köragit reset HEAD~
. - An alias för att uppdatera paketlistor:
alias sapu='sudo apt-get update'
. - Ett alias för att köra det föregående kommandot på nytt med
sudo
:alias ffs='sudo !!'
. - För att jag är lat har jag skapat ett alias för
y
till kommandotyarn
:alias y='yarn'
. Detta innebär att jag kan klona en repo och sedan bara skriva y för att dra in alla beroenden. Jag lärde mig detta från Scott Tolinski på Syntax. - Inte en av de som jag använder, men detta alias blåser bort mappen
node_modules
och tar bort filenpackage-lock.json
, innan man återinstallerar ett projekts beroenden:alias yolo='rm -rf node_modules/ && rm package-lock.json && yarn install'
. Som ni säkert vet står yolo för You Only Live Once. - Ett alias för att öppna min
.zshrc
-fil för redigering:alias zshconfig='subl $HOME/.zshrc'
. - Ett alias för att uppdatera listan över Ruby-versioner som rbenv kan installera:
alias update-available-rubies='cd ~/.rbenv/plugins/ruby-build && git pull'
- Ett alias för att starta en server i din nuvarande katalog (inga npm-paket krävs):
alias server='python -m SimpleHTTPServer 8000'
. - Du kan också skapa ett alias för att öppna dokumentation i din webbläsare:
alias npmhelp='firefox https://github.com/robbyrussell/oh-my-zsh/tree/master/plugins/npm'
. - Ett globalt alias för att leda ett kommando till
less
:alias -g L='| less'
. Du kan använda det på följande sätt:cat production.log L
. - Ett globalt alias för att överföra ett kommando till
grep
:alias -g G='| grep'
. Du kan använda det på följande sätt:history G ssh
. - Du kan också använda funktioner för att skapa alias. Följande (hämtat härifrån) skapar ett alias som lägger till, lägger in och pushar kod till GitHub:
bash
function acp() {
git add .
git commit -m ""
git push
}
Det finns många ställen där du kan hitta fler idéer för alias på nätet. Till exempel den här diskussionen i Hacker News eller det här inlägget om produktivitet på kommandoraden med Zsh.
15 coola saker du kan göra med (Oh My) Zsh
Oh My Zsh är ett gemenskapsdrivet ramverk för att hantera din Zsh-konfiguration och levereras tillsammans med tusentals hjälpsamma funktioner, hjälpmedel, plugins och teman. Om du ska göra Z-skalet till din dagliga drivrutin bör du verkligen installera Oh My Zsh.
Här är femton användbara saker som Oh My Zsh kan göra åt dig:
- Kommandot
take
skapar en ny katalog och ändrar till den.take my-project
ersättermkdir my-project && cd my-project
. -
zsh_stats
ger dig en lista över de 20 största kommandona och hur många gånger de har körts. - Oh My Zsh förenklar navigeringen i ditt filsystem. Till exempel är
..
ett alias förcd ..
. - På samma sätt flyttar
...
upp dig två kataloger,....
flyttar upp dig tre och.....
flyttar upp dig fyra. - Du kan utelämna
cd
när du navigerar. Om du t.ex. skriver/
kommer du direkt till filsystemets rot. - Partiell matchning stöds också. Om jag till exempel skriver
/h/j/De
och trycker på TAB och sedan på Retur kommer jag till/home/jim/Desktop/
. -
rd
är ett alias förrmdir
ochmd
är ett alias förmkdir -p
. - Du kan skriva
d
för att lista de senast använda katalogerna från en terminalsession. - Du kan sedan navigera till någon av dessa med hjälp av
cd -n
, därn
är katalognumret. - Tabkomplettering är en annan bra funktion. Om du till exempel skriver
ls -
och trycker på TAB visas alla kommandots alternativ tillsammans med en hjälpsam beskrivning av vad de gör. Detta fungerar även förcap
,rake
,ssh
ochkill
. - Typning av
alias
listar alla dina aktuella alias. - Med globbing (en Zsh-funktion) kan du lista filer med ett visst tillägg. Till exempel,
ls *.html
listar alla HTML-filer i den aktuella katalogen. Om du vill inkludera underkataloger ändrar du till:ls **/*.html
. - Med hjälp av globkvalificatorer kan du välja filtyper med hjälp av flaggor. Till exempel:
ls -l **/*(.x)
hittar alla körbara filer i den aktuella katalogen och alla underkataloger. - Du kan söka efter filer efter ändringsdatum. Till exempel,
ls *(m-7)
listar alla filer som ändrats under den senaste veckan. - Du kan söka efter filer efter storlek. Till exempel,
ls *(Lm+1)
kommer att hitta alla filer med en storlek som är större än 1 MB.
Användning av plugins för nöje och vinst
Oh My Zsh levereras med en massa plugins. Du bör titta igenom dessa och investera lite tid i att lära dig de som kommer att hjälpa ditt arbetsflöde.
Här är tre plugins som jag regelbundet använder och som ger en massa praktiska genvägar och alias.
10 Nifty Git Aliases
Git plugin ger många alias och flera användbara funktioner. Varför inte gå igenom dessa och försöka memorera dina tio bästa? Här är de som jag använder oftast.
g
är ett praktiskt alias för git
. Det innebär att du kan skriva saker som g clone <whatever>
i stället för git clone <whatever>
. Det kanske bara rör sig om två tangenttryckningar, men de räknas snart ihop.gaa
är ett alias för git add all
. Jag använder den här hela tiden. gb
är ett alias för git branch
, som listar alla grenar i den aktuella repo:n och visar vilken gren du befinner dig på. gcb
är ett alias för git checkout -b
, kommandot som gör det möjligt att skapa en ny gren. gcm
är ett alias för git checkout master
. Detta returnerar dig till mastergrenen.gdca
är ett alias för git diff --cached
. Detta gör att du kan diff-filer som du har lagt fram för överlämning.gf
är ett alias för git fetch
.gm
är ett alias för git merge
.gp
är ett alias för git push
. För att synkronisera en gaffel av en repo kan du göra följande: gf upstream
, gm upstream/master
, följt av gp
.glog
är ett alias för git log --oneline --decorate --graph
, vilket kommer att ge dig en fin git-grengraf.10 Praktiska npm-alias
Npm-plugin ger komplettering samt ett gäng användbara alias.
-
npmg
är ett alias förnpm install --global
, som du kan använda för att installera beroenden globalt på ditt system. Till exempelnpmg nodemon
. -
npmS
är ett alias förnpm install --save
, som du använder för att installera beroenden och lägga till dem i avsnittetdependencies
i dinpackage.json
. Observera att från och med npm 5.0.0 är detta standard när du körnpm i <package>
. -
npmD
är ett alias förnpm install --save-dev
, som du använder för att installera beroenden och lägga till dem i avsnittetdevDependencies
i dinpackage.json
. -
npmO
är ett alias förnpm outdated
, som kontrollerar registret för att se om några (eller, specifika) installerade paket för närvarande är föråldrade. -
npmL
är ett alias förnpm list
, som listar installerade paket. -
npmL0
är ett alias förnpm list --depth=0
, som listar paket på högsta nivå. Detta är särskilt användbart för att se vilka moduler som är globalt installerade utan att översvämma terminalen med ett enormt beroendeträd:npmL0 -g
. -
npmst
är ett alias förnpm run start
, ett npm-skript som ofta används för att starta ett program. -
npmt
är ett alias förnpm run test
, som, som du kanske kan gissa, används för att köra dina tester. -
npmR
är ett alias förnpm run
. Det här kommandot listar i sig självt alla tillgängliga npm-skript för ett projekt, tillsammans med en beskrivning av vad de gör. Om det används tillsammans med ett skriptnamn kommer det att köra det skriptet, till exempelnpmR build
. -
npmI
är ett alias förnpm init
. Detta kommer att ställa dig en massa frågor och sedan skapa enpackage.json
baserat på dina svar. Använd flaggan-y
för att automatisera processen. Till exempelnpmI -y
.
10 tidsbesparande Rails/Rake Alias
Detta insticksprogram lägger till komplettering för ramverket Ruby on Rails och programmet Rake, samt några alias för loggar och miljövariabler.
-
rc
är ett alias förrails console
, som gör att du kan interagera med din Rails-app från CLI. -
rdc
är ett alias förrake db:create
, som (om inteRAILS_ENV
är inställt) skapar utvecklings- och testdatabaser för din app. -
rdd
är ett alias förrake db:drop
, som släpper appens utvecklings- och testdatabaser. -
rdm
är ett alias förrake db:migrate
, som kör alla pågående databasmigreringar. -
rds
är ett alias förrake db:seed
, som kördb/seeds.rb
-filen för att fylla din utvecklingsdatabas med data. -
rgen
är ett alias förrails generate
, som genererar boilerplate-kod. Till exempel:rgen scaffold item name:string description:text
. -
rgm
är ett alias förrails generate migration
, som genererar en databasmigrering. Till exempel:rgm add_description_to_products description:string
. -
rr
är ett alias förrake routes
, som listar alla definierade rutter i en app. -
rrg
är ett alias förrake routes | grep
, som gör det möjligt att lista och filtrera de definierade rutterna. Till exempel ärrrg user
. -
rs
ett alias förrails server
, som startar Rails standardwebbserver.
Allmänna resurser
Den huvudsakliga uppgiften för de plugins som listas ovan är att tillhandahålla alias för ofta använda kommandon. Var medveten om att det finns många fler plugins som utökar ditt skal med ytterligare funktioner.
Här är fyra av mina favoriter:
- sudo låter dig enkelt prefixera dina nuvarande eller tidigare kommandon med
sudo
genom att trycka på ESC två gånger. - autosuggestions föreslår kommandon medan du skriver baserat på historik och kompletteringar. Om förslaget är det du letar efter trycker du på →-tangenten för att acceptera det. En riktig tidsbesparare!
- command-not-found: Om ett kommando inte känns igen i
$PATH
kommer detta att använda Ubuntus command-not-found-paket för att hitta det eller föreslå stavfel. - z är ett praktiskt insticksprogram som bygger upp en lista över dina mest frekventa och senaste mappar (det kallar dessa ”frecent”) och låter dig hoppa till dem med ett enda kommando.
Och glöm inte, om du spenderar mycket tid i terminalen är det värt att investera lite kraft i att göra den visuellt tilltalande. Lyckligtvis levereras Oh My Zsh med ett helt gäng teman som du kan välja mellan. Mitt val av dem är Agnoster.
Du kan läsa mer om teman i min artikel 10 Zsh Tips & Tricks: Konfiguration, anpassning & Användning.
Slutsats
Så där har vi det: 75 Zsh-kommandon, plugins, alias och verktyg. Jag hoppas att du har lärt dig ett och annat knep på vägen, och jag uppmuntrar dig att ta dig ut ur dina grafiska gränssnitt och in i terminalen. Det är lättare än det ser ut och ett bra sätt att öka din produktivitet.
Om jag har missat ditt favoritplugin eller tidsbesparande alias/kommando, låt mig veta på Twitter.
Vill du få ut ännu mer av din verktygslåda? Kolla in Visual Studio Code: End-to-End Editing and Debugging Tools for Web Developers från Wiley.