75 Zsh-kommandon, plugins, alias och verktyg

maj 9, 2021
admin

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 skriva sudo !!.
  • Du kan använda && för att kedja flera kommandon. Till exempel mkdir project && cd project && npm init -y.
  • Den villkorliga exekveringen är möjlig med hjälp av ||. Till exempel git commit -m "whatever..." || echo "Commit failed".
  • Om du använder en -p-switch med kommandot mkdir kan du skapa överordnade kataloger vid behov. Genom att använda expansion av parenteser minskas upprepningar. Till exempel mkdir -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 skriva echo $<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, eller history | 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öra git 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 kommandot yarn: 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 filen package-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ätter mkdir 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ör cd ...
  • 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ör rmdir och md är ett alias för mkdir -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är n ä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ör cap, rake, ssh och kill.
  • 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ör npm install --global, som du kan använda för att installera beroenden globalt på ditt system. Till exempel npmg nodemon.
    • npmS är ett alias för npm install --save, som du använder för att installera beroenden och lägga till dem i avsnittet dependencies i din package.json. Observera att från och med npm 5.0.0 är detta standard när du kör npm i <package>.
    • npmD är ett alias för npm install --save-dev, som du använder för att installera beroenden och lägga till dem i avsnittet devDependencies i din package.json.
    • npmO är ett alias för npm 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ör npm list, som listar installerade paket.
    • npmL0 är ett alias för npm 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ör npm run start, ett npm-skript som ofta används för att starta ett program.
    • npmt är ett alias för npm run test, som, som du kanske kan gissa, används för att köra dina tester.
    • npmR är ett alias för npm 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 exempel npmR build.
    • npmI är ett alias för npm init. Detta kommer att ställa dig en massa frågor och sedan skapa en package.json baserat på dina svar. Använd flaggan -y för att automatisera processen. Till exempel npmI -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ör rails console, som gör att du kan interagera med din Rails-app från CLI.
    • rdc är ett alias för rake db:create, som (om inte RAILS_ENV är inställt) skapar utvecklings- och testdatabaser för din app.
    • rdd är ett alias för rake db:drop, som släpper appens utvecklings- och testdatabaser.
    • rdm är ett alias för rake db:migrate, som kör alla pågående databasmigreringar.
    • rds är ett alias för rake db:seed, som kör db/seeds.rb-filen för att fylla din utvecklingsdatabas med data.
    • rgen är ett alias för rails generate, som genererar boilerplate-kod. Till exempel: rgen scaffold item name:string description:text.
    • rgm är ett alias för rails generate migration, som genererar en databasmigrering. Till exempel: rgm add_description_to_products description:string.
    • rr är ett alias för rake routes, som listar alla definierade rutter i en app.
    • rrg är ett alias för rake routes | grep, som gör det möjligt att lista och filtrera de definierade rutterna. Till exempel är rrg user.
    • rs ett alias för rails 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.

    Lämna ett svar

    Din e-postadress kommer inte publiceras.