Jag är ett stort fan av kommandoradsgränssnittet… Jag hatar att använda min datormus! Detta motiverade mig att söka efter bra verktyg för att förbättra min användarupplevelse på CLI. Jag stötte på Oh-My-Zsh under min praktikperiod. Några vänner övertalade mig att använda detta skal på grund av dess enkelhet och justerbarhet. Som en bonus kan CLI utökas med många plugins.
Detta är en lista över dess möjligheter:
- Kommandovalidering
- Rättelse av stavning
- Delning av kommandohistorik mellan alla körda skal
- De tömbara prompts (Agnoster, RobbyRussell, …)
- Historik över kataloger
- Start/avstängningsskript via
zshenv
,zprofile
,zshrc
,zlogin
ochzlogout
- Starka funktioner för automatisk komplettering. Du kan använda TAB-tangenten för att navigera genom de olika alternativen och använda enter för att välja rätt mapp. Bash skulle till exempel skriva ut alla alternativ. Detta är ganska spammigt och förorenar din scrollback.
- Lägg till plugins: t.ex. Git-plugin med en enorm lista med användbara Git-allias.
Detta plugin visar den aktiva grenen och ger visuell feedback om din Git-status:
– Grön: gren om inga ändringar har skett
– Gul med en cirkelikon: ospårade filer
– Gul med en plusikon: filer redo att överföras
Jag utför denna installationsguide på min virtuella maskin Ubuntu 16.04. För att visa dig den underliggande kraften i Oh-My-Zsh kommer jag att installera Git-pluginet (Git-core). Detta plugin ger visuell feedback om Git-statusen för ett projekt.
- Installera nödvändiga paket
$ sudo apt install git-core zsh - Installera Oh-My-Zsh från Robby Russells arkiv
$ sh -c “$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)” - Installera typsnittet Powerline för att piffa upp ditt CLI med ikoner
$ sudo apt install fonts-powerline - Ändra tema från ‘robbyrussell’ till ‘agnoster’ för att få det legendariska Oh-My-Zsh-temat
$ nano ~/.zshrc - Leta upp variabeln
ZSH_THEME
och ändra den:ZSH_THEME="agnoster"
- Jag gillar inte att temat visar mitt användarnamn och min värd. För att bli av med detta ändrar vi katalogen till
$ cd ~/.oh-my-zsh/themes - Nästan öppnar vi temafilen för “agnoster” i editorn
$ nano agnoster.zsh-theme - Nu kan vi ändra “Main prompt”. Vi behöver inte prompt_context i funktionen
build_prompt()
. Det är bara att kommentera ut den här raden eller ta bort den. Till sist ändrar du variabelnPROMPT
till$(build_prompt)
.
För att verkligen se temat måste du källsortera din .zshrc
-fil så här: source ~/.zshrc
. Om allt fungerade bra bör du se något som liknar omslagsbilden!
Extra: Sätt zsh som vårt standardskal. Exekvera detta i ditt standardskal, i de flesta fall kommer detta att vara bash. Om du utför det här kommandot i zsh kommer det inte att ändra något:
$ chsh -s $(vilket zsh)
Notera: Om du använder sudo
kommer det att ändra skalet för root, men inte för din arbetsanvändare. Dessutom ska du se till att logga ut och logga in igen för att se ändringarna.
Installera plugins
Alla plugins som listas på plugins Github-sidan är förinstallerade med Oh-My-Zsh på ~/.oh-my-zsh/plugins
. Anpassade plugins kan installeras på ~/.oh-my-zsh/custom/plugins
. För att använda en insticksmodul kan du helt enkelt lägga till den i listan över insticksmoduler i din ~/.zshrc
-fil. Lägg till klokt, eftersom för många insticksprogram saktar ner skalstarten. Lämna ett tomrum mellan varje plugin.
Coloured-man-pages
I det här exemplet har jag installerat ett användbart plugin för att ge färgmarkering till din man pages
. För att kunna använda insticksprogrammet ska du källsortera din .zshrc
fil:
$ source ~/.zshrc
Zsh-syntax-highlighting
Ett annat bra insticksmodul är syntaxhänvisning för ditt skal. Förutom det har det här insticksprogrammet förmågan att verifiera att ditt kommando är korrekt.
Det här insticksprogrammet är inte installerat med Oh-My-Zsh. Navigera till ~/.oh-my-zsh/custom/plugins
och klona koden från Github till denna mapp:
$ git clone https://github.com/zsh-users/zsh-syntax-highlighting
Du kommer att se en mapp som heter zsh-syntax-highlighting
. Detta är det namn som måste läggas till i plugins-listan.
Zsh-autosuggestions
Du kan också använda zsh-autosuggestions
för kommandokomplettering. Den föreslår kommandon baserat på din kommandohistorik. Mycket användbart! För att välja det föreslagna kommandot trycker du på den högra piltangenten.
Installationen är densamma som med zsh-syntax-highlighting
:
$ git clone https://github.com/zsh-users/zsh-autosuggestions
Och lägg till zsh-autosuggestions
i listan med plugins.
Tar hand om Alias Enthusiast
Oh-My-Zsh kommer automatiskt ihåg de 20 senaste katalogerna du har besökt. Du kan lista historiken kronologiskt med dirs -v
eller bara d
.
Normalt kan du använda cd +1
för att gå till föregående katalog och så vidare. Oh-My-Zsh har gjort detta ännu enklare, nu kan du bara använda numret på den post i kataloghistoriken som du vill besöka… 1
.
Other Interesting Aliases
-
alias
: Lista alla alias. Du kan pipa utmatningen tillgrep
för att söka efter ett visst alias. -
/
:cd /
-
~
:cd ~
-
...
:cd ../..
-
....
:cd ../../..
-
.....
:cd ../../../..
Jag tror att du har förstått det, eller hur? -
take test_folder
: Skapar en mapp som hetertest_folder
och ändrar i den -
x
: Extraherar arkiv av typentar, bz2, rar, gz, tbz2, tgz, zip, Z, 7z
-
upgrade_oh_my_zsh
: Enkelt kommando för att uppgradera din installation
Välkända problem & Lösningar
Det kan hända att historikfilen blir skadad. Fråga mig inte om specifika detaljer. Varje gång du startar en ny terminal får du det här meddelandet:
zsh: corrupt history file /home/myusername/.zsh_history
Låt oss åtgärda det med följande kommandon. Se till att du befinner dig i roten av hemmappen. Kommandot fc listar, redigerar eller återexekverar kommandon som tidigare har angetts i ett skal. Med kommandot history kan du använda ord från tidigare kommandorader i den kommandorad du skriver.
mv .zsh_history .zsh_history_bad
strings .zsh_history_bad > .zsh_history
fc -R .zsh_history
Slutsats
Oh-My-Zsh är helt enkelt grymt!
Nyttiga länkar och källor
Den här artikeln är gjord med hjälp av TheLedger.
- Oh-My-Zsh: http://ohmyz.sh/
- Plugins: https://github.com/robbyrussell/oh-my-zsh/tree/master/plugins
- Teman: https://github.com/robbyrussell/oh-my-zsh/tree/master/themes/
- Git-plugin med alla alias: https://github.com/robbyrussell/oh-my-zsh/wiki/Plugin:git
- Anpassning av skalprompten: 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://github.com/zsh-users/zsh-syntax-highlighting
- Zsh autosuggestions plugin: https://github.com/zsh-users/zsh-autosuggestions
- RobbyRussell Wiki om anpassning av Zsh: https://github.com/robbyrussell/oh-my-zsh/wiki/Customization