Oh-My-Zsh! A Work of CLI Magic – Tutorial for Ubuntu

Michiel Mulders
Michiel Mulders

Follow

29. august, 2017 – 6 min read

Oh-My-Zsh Agnoster Theme

Jeg er en stor fan af kommandolinjeinterfacet… Jeg hader at bruge min computermus! Dette motiverede mig til at søge efter gode værktøjer til at forbedre min brugeroplevelse på CLI’en. Jeg stødte på Oh-My-Zsh under mit praktikophold. Nogle venner overbeviste mig om at bruge denne shell på grund af dens enkelhed og indstillingsmuligheder. Som en bonus kan CLI’en udvides med mange plugins.

Dette er en liste over dens muligheder:

  • Kommandovalidering
  • Hævekorrektion
  • Deling af kommandohistorik mellem alle kørende shells
  • Den kan prompter (Agnoster, RobbyRussell, …)
  • Kataloghistorik
  • Start/nedlukningsscripts via zshenv, zprofile, zshrc, zlogin og zlogout
  • Stærke autokompletteringsmuligheder. Du kan bruge TAB-tasten til at navigere gennem de forskellige muligheder og bruge enter til at vælge den rigtige mappe. Bash ville f.eks. udskrive alle mulighederne. Dette er ret spammy og forurener din scrollback.

  • Add plugins: f.eks. Git plugin med en enorm liste over nyttige Git aliaser.
    Dette plugin viser den aktive gren og giver visuel feedback om din Git-status:
    – Grøn: gren, hvis der ikke er sket nogen ændringer
    – Gul med et cirkelikon: ikke-sporede filer
    – Gul med et plusikon: filer klar til at blive committet

Jeg udfører denne installationsguide på min Ubuntu 16.04 Virtual Machine. For at vise dig den underliggende kraft i Oh-My-Zsh vil jeg installere Git-plugin (Git-core). Dette plugin giver visuel feedback om Git-statusen for et projekt.

  1. Installer forudsætningsmæssige pakker
    $ sudo apt install git-core zsh
  2. Installer Oh-My-Zsh fra Robby Russells repository
    $ sh -c “$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)”
  3. Installer skrifttypen Powerline for at pifte din CLI op med ikoner
    $ sudo apt install fonts-powerline
  4. Omskifter tema fra ‘robbyrussell’ til ‘agnoster’ for det legendariske Oh-My-Zsh-tema
    $ nano ~/.zshrc
  5. Find variablen ZSH_THEME og ændr den:ZSH_THEME="agnoster"
  6. Jeg bryder mig ikke om, at temaet viser mit brugernavn og vært. For at slippe af med dette ændrer vi mappen til
    $ cd ~/.oh-my-zsh/themes
  7. Næste gang åbner vi temafilen for ‘agnoster’ i editoren
    $ nano agnoster.zsh-theme
  8. Nu kan vi ændre ‘Main prompt’. Vi har ikke brug for at prompt_context i funktionen build_prompt(). Du skal bare kommentere denne linje ud eller fjerne den. Til sidst ændrer vi PROMPT-variablen til $(build_prompt).

Agnoster-temakonfiguration

For at se temaet skal du faktisk kildekode din .zshrc-fil på denne måde: source ~/.zshrc. Hvis alt har fungeret fint, bør du se noget, der ligner omslagsbilledet!

Ekstra: Indstil zsh som vores standard shell. Udfør dette i din standard shell, i de fleste tilfælde vil dette være bash. Hvis du udfører denne kommando i zsh, vil den ikke ændre noget:
$ chsh -s $(hvilken zsh)

Bemærk: Hvis du bruger sudo, vil den ændre shell for root, men ikke for din arbejdsbruger. Udover det skal du sørge for at logge ud og logge ind igen for at se ændringerne.

Installer plugins

Alle plugins, der er anført på plugins Github-siden, er præinstalleret med Oh-My-Zsh på ~/.oh-my-zsh/plugins. Brugerdefinerede plugins kan installeres på ~/.oh-my-zsh/custom/plugins. Hvis du vil bruge et plugin, kan du blot tilføje det til plugins-listen i din ~/.zshrc-fil. Tilføj med omtanke, da for mange plugins gør opstarten af skallen langsommere. Lad der være et tomrum mellem hvert plugin.

Coloured-man-pages

I dette eksempel har jeg installeret et nyttigt plugin til at give farvemarkering til din man pages . For at kunne bruge plugin’et skal du kildekode din .zshrcfil:
$ source ~/.zshrc

Farvet Man Page of ls command

Zsh-syntax-highlighting

Et andet godt plugin er syntakshighlighting til din shell. Udover det har dette plugin mulighed for at verificere korrektheden af din kommando.

Dette plugin er ikke installeret med Oh-My-Zsh. Naviger til ~/.oh-my-zsh/custom/plugins og klon koden fra Github til denne mappe:
$ git clone https://github.com/zsh-users/zsh-syntax-highlighting

Du vil se en mappe ved navn zsh-syntax-highlighting. Dette er det navn, der skal tilføjes til listen over plugins.

Zsh-autosuggestions

Du kan også bruge zsh-autosuggestions til kommandofuldførelse. Den foreslår kommandoer baseret på din kommandohistorik. Meget nyttigt! For at vælge den foreslåede kommando skal du trykke på højre piletast.

Installationen er den samme som med zsh-syntax-highlighting :
$ git clone https://github.com/zsh-users/zsh-autosuggestions
Og tilføj zsh-autosuggestions til listen over plugins.

Tager sig af Alias Enthusiast

Oh-My-Zsh husker automatisk de 20 sidste mapper du har besøgt. Du kan liste historikken kronologisk med dirs -v eller bare d.

Normalt kan du bruge cd +1 til at gå til den forrige mappe og så videre. Oh-My-Zsh har gjort det endnu mere ligetil, nu kan du bare bruge nummeret på den post i mappehistorikken, du vil besøge … 1.

Other Interesting Aliases

  • alias : Liste over alle aliaser. Du kan pipe output til grep for at søge efter et bestemt alias.
  • / : cd /
  • ~ : cd ~
  • ... : cd ../..
  • .... : cd ../../..
  • ..... : cd ../../../.. Jeg tror, du har forstået det, ikke?
  • take test_folder : Opretter en mappe med navnet test_folder og ændrer til den
  • x : Udpak arkiv af typer tar, bz2, rar, gz, tbz2, tgz, zip, Z, 7z
  • upgrade_oh_my_zsh : Nem kommando til opgradering af din installation

Velkendte problemer & Løsninger

Det kan ske, at historikfilen bliver beskadiget. Du skal ikke spørge mig om de specifikke detaljer. Hver gang du starter en ny terminal, får du denne meddelelse:

zsh: corrupt history file /home/myusername/.zsh_history

Lad os rette det med følgende kommandoer. Sørg for, at du befinder dig i roden af hjemmemappen. Kommandoen fc oplister, redigerer eller genudfører kommandoer, der tidligere er indtastet i en shell. Med kommandoen history kan du bruge ord fra tidligere kommandolinjer i den kommandolinje, du skriver.

mv .zsh_history .zsh_history_bad
strings .zsh_history_bad > .zsh_history
fc -R .zsh_history

Konklusion

Oh-My-Zsh er bare fantastisk!

Nyttige links og kilder

Denne artikel er lavet med hjælp fra TheLedger.

  • Oh-My-Zsh: http://ohmyz.sh/
  • Plugins: http://ohmyz.sh/
  • Plugins: https://github.com/robbyrussell/oh-my-zsh/tree/master/plugins
  • Temaer: https://github.com/robbyrussell/oh-my-zsh/tree/master/plugins
  • Temaer: https://github.com/robbyrussell/oh-my-zsh/tree/master/themes/
  • Git-plugin med alle aliaser: https://github.com/robbyrussell/oh-my-zsh/tree/master/themes/
  • https://github.com/robbyrussell/oh-my-zsh/wiki/Plugin:git
  • Anpasning af din shell-prompt: https://github.com/robbyrussell/oh-my-zsh/wiki/Plugin:git
  • http://www.nparikh.org/unix/prompt.php#zsh
  • ArchWiki om Zsh: https://wiki.archlinux.org/index.php/zsh#Autostart_X_at_login
  • Zsh syntax highlighting plugin: https://wiki.archlinux.org/index.php/zsh#Autostart_X_at_login
  • Zsh syntax highlighting plugin: https://github.com/zsh-users/zsh-syntax-highlighting
  • Zsh autosuggestions plugin: https://github.com/zsh-users/zsh-syntax-highlighting
  • Zsh autosuggestions plugin: https://github.com/zsh-users/zsh-autosuggestions
  • RobbyRussell Wiki om tilpasning af Zsh: https://github.com/zsh-users/zsh-autosuggestions
  • RobbyRussell Wiki om tilpasning af Zsh: https://github.com/robbyrussell/oh-my-zsh/wiki/Customization

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.