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

Michiel Mulders
Michiel Mulders

Follow

Aug 29, 2017 – 6 min read

Oh-My-Zsh Agnoster Theme

Jestem wielkim fanem interfejsu wiersza poleceń…. Nienawidzę używać mojej myszki komputerowej! To zmotywowało mnie do szukania świetnych narzędzi, które poprawią moje doświadczenie użytkownika w CLI. Natknąłem się na Oh-My-Zsh podczas mojego stażu. Kilku przyjaciół przekonało mnie do używania tej powłoki z powodu jej prostoty i możliwości dostosowania. Jako bonus, CLI jest rozszerzalny o wiele wtyczek.

To jest lista jej możliwości:

  • Weryfikacja poprawności poleceń
  • Korekta pisowni
  • Współdzielenie historii poleceń pomiędzy wszystkie uruchomione powłoki
  • Możliwe podpowiedzi (Agnoster, RobbyRussell, ….)
  • Historia katalogów
  • Skrypty uruchamiania/zamykania przez zshenv, zprofile, zshrc, zlogin, i zlogout
  • Silne możliwości autouzupełniania. Możesz użyć klawisza TAB, aby poruszać się po różnych opcjach i użyć Enter, aby wybrać właściwy folder. Bash na przykład wydrukowałby wszystkie opcje. To jest dość spamerskie i zanieczyszcza twój scrollback.

  • Dodaj wtyczki: np. wtyczka Git z ogromną listą przydatnych aliasów Git.
    Ta wtyczka pokazuje aktywną gałąź i daje wizualną informację zwrotną o twoim statusie Git:
    – Zielony: gałąź, jeśli nie wystąpiły żadne zmiany
    – Żółty z ikoną koła: pliki nieśledzone
    – Żółty z ikoną plusa: pliki gotowe do popełnienia

Wykonuję ten przewodnik instalacji na mojej maszynie wirtualnej Ubuntu 16.04. Aby pokazać Ci podstawową moc Oh-My-Zsh, zainstaluję wtyczkę Git (Git-core). Wtyczka ta daje wizualną informację zwrotną o statusie Git projektu.

  1. Instalacja pakietów wstępnych
    $ sudo apt install git-core zsh
  2. Instalacja Oh-My-Zsh z repozytorium Robby’ego Russella
    $ sh -c “$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)”
  3. Zainstaluj czcionkę Powerline, aby urozmaicić CLI ikonami
    $ sudo apt install fonts-powerline
  4. Zmień motyw z ‘robbyrussell’ na ‘agnoster’ dla legendarnego motywu Oh-My-Zsh
    $ nano ~/.zshrc
  5. Znajdź zmienną ZSH_THEME i zmień ją:ZSH_THEME="agnoster"
  6. Nie podoba mi się to, że motyw pokazuje moją nazwę użytkownika i hosta. Aby się tego pozbyć, zmieniamy katalog na
    $ cd ~/.oh-my-zsh/themes
  7. Następnie otwieramy plik motywu dla ‘agnoster’ w edytorze
    $ nano agnoster.zsh-theme
  8. Teraz możemy zmienić ‘Main prompt’. Nie potrzebujemy prompt_context w funkcji build_prompt(). Po prostu wykomentuj tę linię lub usuń ją. Na koniec zmień zmienną PROMPT na $(build_prompt).

Konfiguracja motywu Agoster

Aby faktycznie zobaczyć motyw, musisz zmienić źródło swojego pliku .zshrc w ten sposób: source ~/.zshrc. Jeśli wszystko poszło dobrze, powinieneś zobaczyć coś takiego jak obrazek na okładce!

Extra: Ustaw zsh jako naszą domyślną powłokę. Wykonaj to w swojej domyślnej powłoce, w większości przypadków będzie to bash. Jeśli wykonasz to polecenie w zsh, nie zmieni ono niczego:
$ chsh -s $(which zsh)

Uwaga: Jeśli użyjesz sudo, zmieni to powłokę dla roota, ale nie dla użytkownika roboczego. Poza tym, upewnij się, że wylogujesz się i zalogujesz ponownie, aby zobaczyć zmiany.

Instalacja wtyczek

Wszystkie wtyczki wymienione na stronie Github z wtyczkami są preinstalowane z Oh-My-Zsh na ~/.oh-my-zsh/plugins. Niestandardowe wtyczki mogą być zainstalowane pod adresem ~/.oh-my-zsh/custom/plugins. Aby użyć wtyczki, możesz po prostu dodać ją do listy wtyczek w swoim pliku ~/.zshrc. Dodawaj je rozsądnie, ponieważ zbyt wiele wtyczek spowalnia uruchamianie powłoki. Pozostaw puste miejsce między każdą wtyczką.

Colored-man-pages

W tym przykładzie zainstalowałem użyteczną wtyczkę do kolorowego podświetlania twoich man pages . Aby móc użyć wtyczki, podaj źródło swojego .zshrcpliku:
$ source ~/.zshrc

Colored Man Page of ls command

Zsh-syntax-highlighting

Innym świetnym pluginem jest kolorowanie składni dla twojej powłoki. Poza tym, wtyczka ta ma możliwość sprawdzania poprawności komend.

Wtyczka ta nie jest zainstalowana z Oh-My-Zsh. Przejdź do ~/.oh-my-zsh/custom/plugins i sklonuj kod z Githuba do tego folderu:
$ git clone https://github.com/zsh-users/zsh-syntax-highlighting

Zobaczysz folder o nazwie zsh-syntax-highlighting. Jest to nazwa, która musi zostać dodana do listy wtyczek.

Zsh-autosuggestions

Możesz również użyć zsh-autosuggestions do uzupełniania poleceń. Sugeruje on polecenia na podstawie historii poleceń. Bardzo przydatne! Aby wybrać proponowane polecenie, naciśnij klawisz strzałki w prawo.

Instalacja jest taka sama jak w przypadku zsh-syntax-highlighting :
$ git clone https://github.com/zsh-users/zsh-autosuggestions
I dodaj zsh-autosuggestions do listy wtyczek.

Takes Care of Alias Enthusiast

Oh-My-Zsh automatycznie zapamiętuje 20 ostatnich odwiedzonych katalogów. Możesz wyświetlić historię chronologicznie za pomocą dirs -v lub po prostu d.

Normalnie, możesz użyć cd +1, aby przejść do poprzedniego katalogu i tak dalej. Oh-My-Zsh uczynił to jeszcze prostszym, teraz możesz użyć tylko numeru wpisu w historii katalogu, który chcesz odwiedzić… 1.

Inne ciekawe aliasy

  • alias : Lista wszystkich aliasów. Możesz przekierować wyjście do grep, aby wyszukać konkretny alias.
  • / : cd /
  • ~ : cd ~
  • ... : cd ../..
  • .... : cd ../../..
  • ..... : cd ../../../.. Myślę, że to rozumiesz, prawda?
  • take test_folder : Tworzy folder o nazwie test_folder i wprowadza w nim zmiany
  • x : Wyodrębnia archiwum typów tar, bz2, rar, gz, tbz2, tgz, zip, Z, 7z
  • upgrade_oh_my_zsh : Łatwe polecenie aktualizacji instalacji

Znane problemy & Rozwiązania

Może się zdarzyć, że plik historii zostanie uszkodzony. Nie pytaj mnie o szczegóły. Za każdym razem, gdy uruchamiasz nowy terminal, dostajesz tę wiadomość:

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

Naprawmy to za pomocą następujących poleceń. Upewnij się, że jesteś w katalogu głównym homefolder. Polecenie fc listuje, edytuje lub ponownie wykonuje polecenia wcześniej wprowadzone do powłoki. Polecenie history pozwala na użycie słów z poprzednich wierszy poleceń w wpisywanym wierszu poleceń.

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

Zakończenie

Oh-My-Zsh jest po prostu niesamowity!

Użyteczne linki i źródła

Ten artykuł powstał z pomocą TheLedger.

  • Oh-My-Zsh: http://ohmyz.sh/
  • Wtyczki: https://github.com/robbyrussell/oh-my-zsh/tree/master/plugins
  • Themes: https://github.com/robbyrussell/oh-my-zsh/tree/master/themes/
  • Git plugin with all aliases: https://github.com/robbyrussell/oh-my-zsh/wiki/Plugin:git
  • Customizing your shell prompt: http://www.nparikh.org/unix/prompt.php#zsh
  • ArchWiki o Zsh: https://wiki.archlinux.org/index.php/zsh#Autostart_X_at_login
  • Wtyczka do kolorowania składni Zsh: https://github.com/zsh-users/zsh-syntax-highlighting
  • Wtyczka autosugestii Zsh: https://github.com/zsh-users/zsh-autosuggestions
  • RobbyRussell Wiki o dostosowywaniu Zsh do własnych potrzeb: https://github.com/robbyrussell/oh-my-zsh/wiki/Customization

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.