jestem jedną z tych osób, które natychmiast otwierają okno terminala po uruchomieniu komputera . To nie jest z konieczności w tym momencie, ale nawyk jest tam. Spędziłem większość mojej kariery ucząc się jego magicznych zaklęć, a nawigacja po moich codziennych zadaniach na terminalu sprawia, że dzień w pracy jest przyjemniejszy. To wszystko powiedział, To miło spróbować czegoś nowego raz na jakiś czas.
ostatnio puściłem domyślny interpreter wiersza poleceń, Bash, na rzecz fish, który dumnie sprzedaje się jako „powłoka wiersza poleceń na lata 90.” oto dlaczego zmieniłem.
znalazłem .bashrc to za mało
nieco ponad rok temu postanowiłem przestać abstrahować moje systemy operacyjne i zacząć uczyć się go od podstaw. Niedawno przesiadłem się z Maca na Linuksa, co dało mi powód, aby przyjrzeć się portowaniu moich plików dotfiles do nowego środowiska. To było orzeźwiające; Znalazłem mnóstwo mylących skrótów i duplikacji i sparowałem je do czegoś, co dobrze portuje między systemami operacyjnymi. Oto kilka ulubionych:
## Nicer shell experience
export GREP_OPTIONS="--color=auto"; # make grep colorful
export LSCOLORS=gxfxbEaEBxxEhEhBaDaCaD; # make ls more colorful as well
export HISTSIZE=32768; # Larger bash history (allow 32³ entries; default is 500)
export HISTFILESIZE=$HISTSIZE;
export HISTCONTROL=ignoredups; # Remove duplicates from history. I use `git status` a lot.
export HISTIGNORE="ls:cd:cd -:pwd:exit:date:* --help"; # Make some commands not show up in history
export LANG="en_US.UTF-8"; # Language formatting is still important
export LC_ALL="en_US.UTF-8"; # byte-wise sorting and force language for those pesky apps
export MANPAGER="less -X"; # Less is more
export GPG_TTY=$(tty); # for gpg key management
byłem w podróży, aby odkryć magię mojego środowiska i zaczyna to mieć więcej sensu.
Personalizacja łamie moje .bashrc
to w tym momencie jasności znowu utknąłem. Chcę mieć w swoim terminalu kilka nowoczesnych konwencji, w szczególności automatyczne sugestie, podświetlanie składni i kolorowanie wyjść poleceń bez zbyt wielu zależności, i chciałbym, aby ta konfiguracja była niezależna od jakiegokolwiek używanego interpretera wiersza poleceń. (iTerm2 jest świetny na Macu, ale nie chcę śledzić jego tajemniczego pliku konfiguracyjnego w moich plikach dotfiles. Co mam zrobić?
gdy pierwszy raz szukałem odpowiedzi, rozwiązywałem ją krok po kroku:
- najpierw dostosowałem moje~/.plik inputrc, aby umożliwić wyszukiwanie do przodu i do tyłu.
- potem zamieniłem cat na ładną wersję ccat i aliasowałem cat na ccat w moim .bashrc. To później ostatecznie przerwało pisanie na stdout w niektórych przypadkach, więc przestałem go używać.
- ostatecznie użyłem Bash-it, który jest potężnym systemem wtyczek do dostosowywania Basha.
Po odrywaniu części jeden po drugim poczułem, że rozumiem nieco więcej o tym, jak działa mój system. Obręcze, przez które musiałem przeskoczyć, aby uzyskać nowoczesne doświadczenie, którego szukałem, doprowadziły mnie z powrotem do standardów, które doprowadziły mnie do tego punktu. Czułem się, jakbym był więźniem historii, dopóki nie postanowiłem wyrzucić tego wszystkiego i spróbować czegoś zupełnie innego.
łatwe domyślne ustawienia i dostosowywanie za pomocą fish shell
Fish shell to nowoczesny interfejs wiersza poleceń z automatycznymi sugestiami, uzupełnianiem kart i podświetlaniem składni (między innymi). Szczególnie podoba mi się, jak Od pierwszego spróbowania wpisując fish, dostajesz piękne doświadczenie:
w pierwszej linii polecenie jest niebieskie, ponieważ pwd jest poprawnym poleceniem. W drugiej linii jest czerwony, ponieważ pdw nie jest poprawnym poleceniem. Wcisnąłem Enter, aby pokazać, że to prawda, ale mogłem szybko poprawić błąd i ruszyć dalej z moim dniem. W trzecim poleceniu chcę zmienić Katalog (cd) w folderze deweloperskim, a fish automatycznie pyta, czy chcę wskoczyć do moich plików dotfiles, tak jak to zrobiłem ostatnim razem. Kiedy nacisnę Tab dwa razy, pokazuje inne opcje w tym samym katalogu, tak jak bym się spodziewał.
Jeśli chcę dostosować moje środowisko fish shell, nie muszę instalować żadnej dodatkowej biblioteki ani frameworka, aby to zrobić. Fish wysyła za pomocą polecenia fish_config, które uruchamia graficzny interfejs użytkownika (GUI), w którym można wybierać różne kolory i konfiguracje monitów.
co bardziej imponujące, możesz przejrzeć wszystkie dostępne funkcje, zmienne, powiązania i wiele więcej z GUI:
Jeśli dostroisz swoją konfigurację, wszystkie dostosowania są przechowywane w tym samym miejscu: ~/.config / fish. Powyższy zrzut ekranu pokazuje, że stworzyłem niestandardową funkcję, która pozwala mi łatwo aktywować środowisko Pythona za pomocą pyenv. Więcej informacji znajdziesz w samouczku na temat funkcji fish.
ostrzegam: ryby nie są jak Bash
podczas próbowania innych muszli, zauważyłem, że zawsze było kilka różnic, które musiałem dostroić, ale ogólnie wydawały się znajome. Tak nie jest w przypadku ryb. Definicja funkcji, aliasing i zmienne działają nieco inaczej. Istnieją pomocne strategie konwersji .bashrc i .pliki bash_profile w konfiguracji fish, ale to więcej niż omówię w tym artykule. Tak więc, chociaż pokochałem ryby, polecam skorzystanie z interaktywnego samouczka na przejażdżkę, aby sprawdzić, czy ci się podoba.
daj rybom szansę na piękną domyślną powłokę
Lubię zacząć dzień od otwarcia terminala, a cieszę się tym bardziej od przejścia na skorupę ryb. Pozwoliło mi to odejść od martwienia się o to, co jest w bashu, a skupić się na tym, jaki kod mam zamiar napisać. Jeśli chcesz zrezygnować z majstrowania przy terminalu i skupić się bardziej na kodzie, spróbuj. Użyj chsh, aby ustawić go jako domyślną powłokę i daj mi znać, jak to idzie w komentarzach.