75 Zsh-kommandoer, plugins, aliaser og værktøjer

maj 9, 2021
admin

Jeg bruger en stor del af min dag i terminalen, og min foretrukne shell er Zsh – en Unix-shell, der kan tilpasses i høj grad, og som indeholder nogle meget effektive funktioner. Da jeg er en doven udviklerTM, er jeg altid på udkig efter måder at skrive mindre og automatisere alle tingene på. Heldigvis er dette noget, som Zsh egner sig godt til.

I dette indlæg vil jeg dele 75 kommandoer, plugins, aliaser og værktøjer med dig, som forhåbentlig vil spare dig for nogle tastetryk og gøre dig mere produktiv i dit daglige arbejde.

Hvis du ikke har Zsh installeret på din maskine, så tjek dette indlæg, hvor jeg viser dig, hvordan du kommer i gang.

15 ting Zsh kan gøre out of the box

Zsh deler en masse praktiske funktioner med Bash. Ingen af de følgende er unikke for Zsh, men de er ikke desto mindre gode at kende. Jeg opfordrer dig til at begynde at bruge kommandolinjen til at udføre operationer som dem, der er anført nedenfor. Det kan i starten virke som mere arbejde end at bruge en GUI, men når du først får styr på tingene, vil du aldrig se dig tilbage.

  • Indtastning af cd fra et hvilket som helst sted i filsystemet bringer dig direkte tilbage til din hjemmemappe.
  • Indtastning af !! bringer dig frem til den sidste kommando. Dette er praktisk, hvis en kommando mislykkes, fordi den kræver administratorrettigheder. I dette tilfælde kan du skrive sudo !!.
  • Du kan bruge && til at kæde flere kommandoer. F.eks. mkdir project && cd project && npm init -y.
  • Den betingede udførelse er mulig ved hjælp af ||. F.eks. git commit -m "whatever..." || echo "Commit failed".
  • Hvis du bruger et -p-switch med kommandoen mkdir, kan du oprette overordnede mapper efter behov. Ved at bruge udvidelse af parenteser reduceres gentagelser. F.eks. mkdir -p articles/jim/sitepoint/article{1,2,3}.
  • Sæt miljøvariabler pr. kommando på følgende måde: NODE_DEBUG=myapp node index.js. Eller på et grundlag pr. session som f.eks: export NODE_DEBUG=myapp. Du kan kontrollere, at den blev indstillet ved at skrive echo $<variable-name>.
  • Pipe output fra en kommando ind i en anden kommando. For eksempel cat /var/log/kern.log | less for at gøre en lang log læsbar, eller history | grep ssh for at søge efter alle historikposter, der indeholder “ssh”.
  • Du kan åbne filer i din editor fra terminalen. F.eks. nano ~/.zshrc (nano), subl ~/.zshrc (Sublime Text), code ~/.zshrc (VS Code). Hvis filen ikke findes, vil den blive oprettet, når du trykker på Gem i editoren.
  • Navigation er en vigtig færdighed at mestre. Du skal ikke kun stole på dine piletaster. Ctrl + a fører dig f.eks. til begyndelsen af en linje.
  • Hvorimod Ctrl + e fører dig til slutningen.
  • Du kan bruge Ctrl + w til at slette et ord (baglæns).
  • Ctrl + u fjerner alt fra markøren til begyndelsen af linjen.
  • Ctrl + k rydder alt fra markøren til slutningen af linjen. Disse tre sidste kan fortrydes med Ctrl + y.
  • Du kan kopiere tekst med Ctrl + Shift + c. Det er meget mere elegant end at højreklikke og vælge Kopier.
  • Omvendt kan du indsætte kopieret tekst med Ctrl + shift + v.

Forsøg at lære disse tastekombinationer udenad. Du vil blive overrasket over, hvor ofte de er nyttige.

15 brugerdefinerede alias til at øge din produktivitet

Aliaser er terminalgenveje for almindelige kommandoer. Du kan tilføje dem til din ~/.zshrc-fil og derefter genindlæse din terminal (ved hjælp af source ~/.zshrc) for at få dem til at træde i kraft.

Syntaksen for at deklarere et (simpelt) alias er som følger:

alias =''

Aliaser er gode til ofte brugte kommandoer, lange kommandoer eller kommandoer med en syntaks, der er svær at huske. Her er nogle af dem, jeg bruger jævnligt:

  • Et myip alias, som udskriver din aktuelle offentlige IP-adresse til terminalen: alias myip='curl http://ipecho.net/plain; echo'.
  • A distro alias, der udsender oplysninger om din Linux-distribution: alias distro='cat /etc/*-release'.
  • A reload alias, da jeg aldrig kan huske, hvordan jeg skal genindlæse min terminal: alias reload='source ~/.zshrc'.
  • Et undo-git-reset alias: alias undo-git-reset-head="git reset 'HEAD@{1}'". Dette ophæver virkningerne af at køre git reset HEAD~.
  • An alias for at opdatere pakkelister: alias sapu='sudo apt-get update'.
  • Et alias til at genudføre den foregående kommando med sudo: alias ffs='sudo !!'.
  • Da jeg er doven, har jeg givet y et alias til yarn-kommandoen: alias y='yarn'. Det betyder, at jeg kan klone et repo, og derefter bare skrive y for at trække alle afhængigheder ind. Jeg lærte denne fra Scott Tolinski på Syntax.
  • Det er ikke en af dem, jeg bruger, men dette alias blæser mappen node_modules væk og fjerner filen package-lock.json, før jeg geninstallerer et projekts afhængigheder: alias yolo='rm -rf node_modules/ && rm package-lock.json && yarn install'. Som du sikkert ved, står yolo for You Only Live Once.
  • Et alias til at åbne min .zshrc-fil til redigering: alias zshconfig='subl $HOME/.zshrc'.
  • Et alias til at opdatere listen over Ruby-versioner, som rbenv kan installere: alias update-available-rubies='cd ~/.rbenv/plugins/ruby-build && git pull'
  • Et alias til at starte en server i din aktuelle mappe (ingen npm-pakker påkrævet): alias server='python -m SimpleHTTPServer 8000'.
  • Du kan også oprette et alias til at åbne dokumentation i din browser: alias npmhelp='firefox https://github.com/robbyrussell/oh-my-zsh/tree/master/plugins/npm'.
  • Et globalt alias til at lede en kommandos output til less: alias -g L='| less'. Du kan bruge det på følgende måde: cat production.log L.
  • Et globalt alias til at lede en kommandos output til grep: grep: alias -g G='| grep'. Du kan bruge det på følgende måde: history G ssh.
  • Du kan også bruge funktioner til at oprette aliaser. Følgende (taget herfra) opretter et alias, der tilføjer, committerer og skubber kode til GitHub:
    bash
    function acp() {
    git add .
    git commit -m ""
    git push
    }

Der er masser af steder, hvor du kan finde flere idéer til aliasser online. For eksempel denne diskussion i Hacker News eller dette indlæg om produktivitet på kommandolinjen med Zsh.

15 fede ting, du kan gøre med (Oh My) Zsh

Oh My Zsh er en fællesskabsdrevet ramme til administration af din Zsh-konfiguration og leveres med tusindvis af nyttige funktioner, hjælpere, plugins og temaer. Hvis du vil gøre Z-shellen til din daglige driver, bør du virkelig installere Oh My Zsh.

Her er femten nyttige ting, som Oh My Zsh kan gøre for dig:

  • Kommandoen take opretter en ny mappe og skifter ind i den. take my-project erstatter mkdir my-project && cd my-project.
  • zsh_stats giver dig en liste over de 20 største kommandoer og hvor mange gange de er blevet kørt.
  • Oh My Zsh forenkler navigationen i dit filsystem. F.eks. er .. et alias for cd ...
  • På samme måde flytter ... dig to mapper op, .... flytter dig tre mapper op, og ..... flytter dig fire mapper op.
  • Du kan udelade cd, når du navigerer. Hvis du f.eks. skriver /, kommer du direkte til din filsystemrod.
  • Partiel matching er også understøttet. Hvis jeg f.eks. skriver /h/j/De og trykker på TAB og derefter på Return, kommer jeg til /home/jim/Desktop/.
  • rd er et alias for rmdir, og md er et alias for mkdir -p.
  • Du kan skrive d for at få en liste over de senest anvendte mapper fra en terminalsession.
  • Du kan derefter navigere til en hvilken som helst af disse mapper ved hjælp af cd -n, hvor n er mappenummeret.
  • Tab completion er en anden god funktion. Hvis du f.eks. skriver ls - og trykker på TAB, får du en liste over alle kommandoens muligheder sammen med en nyttig beskrivelse af, hvad de gør. Dette virker også for cap, rake, ssh og kill.
  • Typning af alias viser alle dine aktuelle aliasser.
  • Med globbing (en Zsh-funktion) kan du liste filer med en bestemt udvidelse. F.eks. vil ls *.html liste alle HTML-filer i den aktuelle mappe. Hvis du vil inkludere undermapper, skal du ændre til: ls **/*.html.
  • Glob-kvalifikatorer giver dig mulighed for at vælge filtyper ved hjælp af flag. F.eks. vil ls -l **/*(.x) finde alle eksekverbare filer i den aktuelle mappe og alle undermapper.
  • Du kan søge efter filer efter dato for ændring. F.eks. vil ls *(m-7) vise alle filer, der er ændret inden for den sidste uge.
  • Du kan søge efter filer efter størrelse. For eksempel, ls *(Lm+1) vil finde alle filer med en størrelse større end 1 MB.

Brug af plugins for sjov og profit

Oh My Zsh leveres med en masse plugins. Du bør kigge dem igennem og investere noget tid i at lære dem, der vil hjælpe din arbejdsgang.

Her er tre plugins, som jeg bruger regelmæssigt, og som giver et væld af praktiske genveje og aliaser.

10 Nifty Git Aliases

Git-plugin’et giver mange aliaser og flere nyttige funktioner. Hvorfor ikke gennemgå disse og forsøge at lære dine ti bedste udenad? Her er dem, jeg bruger oftest.

  • g er et praktisk alias for git. Det betyder, at du kan skrive ting som g clone <whatever> i stedet for git clone <whatever>. Det er måske kun to tastetryk, men de løber hurtigt op.
  • gaa er et alias for git add all. Jeg bruger den hele tiden.
  • gb er et alias for git branch, som oplister alle grene i det aktuelle repo og viser dig, hvilken gren du befinder dig på.
  • gcb er et alias for git checkout -b, kommandoen, der giver dig mulighed for at oprette en ny gren.
  • gcm er et alias for git checkout master. Dette returnerer dig til mastergrenen.
  • gdca er et alias for git diff --cached. Dette giver dig mulighed for at diff’e alle filer, som du har lagt op til commit.
  • gf er et alias for git fetch.
  • gm er et alias for git merge.
  • gp er et alias for git push. For at synkronisere en fork af et repo kan du gøre følgende: gf upstream, gm upstream/master, efterfulgt af gp.
  • glog er et alias for git log --oneline --decorate --graph, hvilket vil give dig en smuk git branch-graf.
  • 10 Praktiske npm-aliaser

    Npm-plugin’et giver også færdiggørelse samt en masse nyttige aliaser.

    • npmg er et alias for npm install --global, som du kan bruge til at installere afhængigheder globalt på dit system. F.eks. er npmg nodemon.
    • npmS et alias for npm install --save, som du bruger til at installere afhængigheder og tilføje dem til dependencies-afsnittet i din package.json. Bemærk, at fra npm 5.0.0.0 er dette standard, når du kører npm i <package>.
    • npmD er et alias for npm install --save-dev, som du bruger til at installere afhængigheder og tilføje dem til afsnittet devDependencies i din package.json.
    • npmO er et alias for npm outdated, som kontrollerer registret for at se, om nogen (eller, specifikke) installerede pakker i øjeblikket er forældede.
    • npmL er et alias for npm list, som opregner installerede pakker.
    • npmL0 er et alias for npm list --depth=0, som opregner pakker på øverste niveau. Dette er især nyttigt for at se, hvilke moduler der er installeret globalt uden at oversvømme din terminal med et stort afhængighedstræ: npmL0 -g.
    • npmst er et alias for npm run start, et npm-script, der ofte bruges til at starte et program.
    • npmt er et alias for npm run test, der, som du nok kan gætte, bruges til at køre dine tests.
    • npmR er et alias for npm run. Denne kommando vil i sig selv liste alle et projekts tilgængelige npm-scripts op sammen med en beskrivelse af, hvad de gør. Hvis den bruges sammen med et scriptnavn, vil den køre det pågældende script, F.eks. er npmR build.
    • npmI et alias for npm init. Dette vil stille dig en masse spørgsmål og derefter oprette en package.json baseret på dine svar. Brug -y-flaget for at automatisere processen. For eksempel npmI -y.

    10 Tidsbesparende Rails/Rake-aliaser

    Dette plugin tilføjer færdiggørelse for Ruby on Rails-rammen og Rake-programmet samt nogle aliaser for logfiler og miljøvariabler.

    • rc er et alias for rails console, som giver dig mulighed for at interagere med din Rails-app fra CLI’en.
    • rdc er et alias for rake db:create, som (medmindre RAILS_ENV er indstillet) opretter udviklings- og testdatabaserne for din app.
    • rdd er et alias for rake db:drop, som dropper udviklings- og testdatabaserne for din app.
    • rdm er et alias for rake db:migrate, som vil køre alle verserende databasemigrationer.
    • rds er et alias for rake db:seed, som kører filen db/seeds.rb for at fylde din udviklingsdatabase med data.
    • rgen er et alias for rails generate, som genererer boilerplate-kode. F.eks: rgen scaffold item name:string description:text.
    • rgm er et alias for rails generate migration, som vil generere en databasemigrering. F.eks: rgm add_description_to_products description:string.
    • .

    • rr er et alias for rake routes, som viser en liste over alle en apps definerede ruter.
    • rrg er et alias for rake routes | grep, som giver dig mulighed for at liste og filtrere de definerede ruter. For eksempel er rrg user.
    • rs et alias for rails server, som starter Rails’ standardwebserver.

    Udviduelle ressourcer

    Den vigtigste opgave for de ovenfor anførte plugins er at levere aliaser til ofte anvendte kommandoer. Vær opmærksom på, at der findes mange flere plugins, der udvider din shell med yderligere funktioner.

    Her er fire af mine favoritter:

    • sudo giver dig mulighed for nemt at give dine nuværende eller tidligere kommandoer et præfiks med sudo ved at trykke to gange på ESC.
    • autosuggestions foreslår kommandoer, mens du skriver, baseret på historik og afslutninger. Hvis forslaget er det, du leder efter, skal du trykke på →-tasten for at acceptere det. En rigtig tidsbesparelse!
    • command-not-found: Hvis en kommando ikke genkendes i $PATH, vil dette bruge Ubuntus command-not-found-pakke til at finde den eller foreslå stavefejl.
    • z er et praktisk plugin, der opbygger en liste over dine mest hyppige og seneste mapper (den kalder dem “frecent”) og giver dig mulighed for at springe til dem med én kommando.

    Og glem ikke, hvis du bruger meget tid i terminalen, er det værd at investere en indsats i at gøre den visuelt tiltalende. Heldigvis leveres Oh My Zsh med en hel masse temaer, som du kan vælge imellem. Mit valg af dem er Agnoster.

    Du kan få mere at vide om temaer i min artikel 10 Zsh Tips & Tricks: Konfiguration, tilpasning & Brug.

    Konklusion

    Så der har vi det: 75 Zsh-kommandoer, plugins, aliaser og værktøjer. Jeg håber, at du har lært et trick eller to undervejs, og jeg opfordrer dig til at komme ud af dine GUI’er og ind i terminalen. Det er nemmere end det ser ud og en god måde at øge din produktivitet på.

    Hvis jeg har overset dit yndlings-plugin eller dit tidsbesparende alias/kommando, så lad mig vide det på Twitter.

    Vil du få endnu mere ud af din værktøjskasse? Tjek Visual Studio Code ud: End-to-End Editing and Debugging Tools for Web Developers fra Wiley.

    Skriv et svar

    Din e-mailadresse vil ikke blive publiceret.