iMagazine

Fish Shell zamiast bash dla macOS

24/05/2017, 17:14 · · · 9

Od kilku dni wykonywałem syzyfową pracę za pomocą programu ImageOptim i Findera. Wiedziałem, że muszę to sobie zautomatyzować, ale nie miałem na to czasu, więc w wolnych chwilach brałem kilkaset plików, wrzucałem do ImageOptim i czekałem aż się skompresują. Dzisiaj w końcu sobie to zautomatyzowałem pisząc skrypt, który wszystko zrobi za mnie, ale żeby nie było za łatwo, to postanowiłem podmienić sobie basha na fish.

Dlaczego fish? Bo naukę basha zacząłem prawdopodobnie 23 lata temu i nigdy za nim nie przepadałem. Poza tym nie wykorzystywałem go do pisania skryptów od przynajmniej 15 lat, więc i tak musiałbym przypomnieć sobie składnię. Stwierdziłem więc, że przejdę na nowocześniejszego fisha, przy okazji zaczynając naukę „od nowa”.

Bash jest domyślnym shellem pod macOS, a fisha trzeba doinstalować. Można to zrobić na kilka sposobów – za pomocą Homebrew, MacPorts lub ręcznie. Brew miałem już na komputerze z innych powodów, więc skorzystałem z tej metody. Wszystkie są opisane tutaj.

Najpierw instalacja Homebrew

Jeśli nie macie Homebrew, to należy go zainstalować następującą komendą, wpisywaną w Terminalu:

Jeśli już macie, to uruchomcie Terminal i upewnijcie się, że wszystko gra…

A potem…

Instalujemy Fish

Jeśli już macie Homebrew, to czas na instalację fisha… W Terminalu wpisujemy…

Po jego zainstalowaniu, które może chwilę zająć, trzeba będzie jeszcze zmienić basha z domyślnego shella na fisha. Pierwszym krokiem będzie edycja pliku /etc/shells, aby dodać do niego fisha. Ja w tym celu używam BBEdit, ale każdy edytor tekstu powinien się nadawać. Do edycji tego pliku będzie potrzebne hasła administratora. Domyślnie wygląda on tak:

Na dole trzeba dodać jedną linię tekstu…

… aby system wiedział o istnieniu fisha. Teraz pozostaje już tylko zmienić basha na fisha następującą komendą.

Jeśli teraz zamkniecie okno Terminala i otworzycie nowe, to uruchomi się już fish, a nie bash.

W następnej części opiszę swój fish-owy skrypt…

fish shell

9

Wojtek Pietrusiewicz

Wydawca, fotograf, podróżnik, podcaster – niekoniecznie w tej kolejności. Lubię espresso, mechaniczne zegarki i zwinne samochody. Niedawno rozpocząłem prowadzenie kursów Lightrooma i fotografii na Pikselowe.pl – zapraszam.

morid1n

Dodaj komentarz

matipl napisał(a):

Ciekawe, ale wolę chyba i tak zsh + oh-my-zsh jako shell.

Buthimild napisał(a):

+ zsh-autosuggestions
+ zsh-syntax-highlighting

ZSH używam praktycznie od zawsze (jeszcze za czasów linuksowych). Muszę jednak przyznać, że zawsze patrzałem na Fisha jako godnego konkurenta dla ZSH.

@Moridin:disqus: Czekam na dalszy tekst; jak dokładnie wygląda sprawa z tymi skryptami? Czy tak napisany skrypt w Fishu jestem w stanie wykorzystać np. do crona?

Moridin napisał(a):

Jesteś, niezależnie od shella.

Moridin napisał(a):

@matipl:disqus @disqus_xuANHLc7JB:disqus A dlaczego zdecydowaliście się na ZSH?

Buthimild napisał(a):

1. (Istotne dla mnie): jeżeli wklepiesz w terminalu na Maku bash --version dostaniesz info, że jest to wersja z 2007 oznaczona jako 3.2.57(1). Można naturalnie zrobić upgrade za pomocą wspomnianego przez Ciebie Homebrew (do wersji 4.4.12 ze stycznia 2017). Natomiast jeżeli chodzi o ZSH to jest on na Maku w miarę aktualny (5.2 vs 5.3.1).

2. Aliasy globalne np. alias -g G=' | grep -i'. Wpisujesz wtedy cat plik.txt G szukana_fraza (ZSH potraktuje to jak: cat plik.txt | grep -i szukana_fraza).

3. Lepsze „podpowiadanie” przy użyciu cd. Lepsze uzupełnianie TABem: wpisując np. cd /u/l/b i naciskając TAB otrzymasz cd /usr/local/bin.

4. Zamienianie ścieżek: jeżeli się pomyliłeś i chcesz np. dotrzeć do katalogu share zamiast bin wpisujesz po prostu cd bin share i zostajesz przeniesiony do /usr/local/share. Bardzo pomocna opcja (przykład trochę słaby, bo ścieżka jest krótka i łatwo taki błąd naprawić, ale rozumiesz o co chodzi).

5. Uzupełnianie dla git.

6. Korekta pisowni.

I sporo więcej. Nie jestem też teraz w stanie powiedzieć, czy coś z powyższej listy nie jest zasługą https://github.com/robbyrussell/oh-my-zsh . Jest też sporo wtyczek rozszerzających funkcjonalność (choćby te wspomniane przeze mnie wyżej). Uważam, że ZSH jest zdecydowanie lepszy od Basha. A w każdym bądź razie ZSH jest na pewno lepszą opcją na Maku niż przestarzały Bash. Nie wiem, jak ma się to do Fisha, będę musiał się przyjrzeć tej powłoce, jak znajdę chwilkę :).

Moridin napisał(a):

Dzięki – właśnie takiej odpowiedzi się spodziewałem. 🙂

Piotr Zaborowski napisał(a):

Shella można jeszcze zmienić po instalacji w taki sposób. To pozwala mi na trzymanie shella w terminalu innego, a w WebStormie jeszcze innego. https://uploads.disquscdn.com/images/74c4404f92a33e09d53e7007481673c4f882a02d8f43156e6b90879d79036de7.png

Kuba Florczuk napisał(a):

fish jest zajebisty ! korzystam od dawna !

Jeśli chcesz wesprzeć redakcję iMagazine, podoba Ci się nasza praca, to zapraszamy do iMag Weekly

dołącz

W archiwum iMag Weekly znajdziecie ponad 500 felietonów, artykułów, recenzji, opisów, przepisów oraz relacji z podróży – w sumie do przeczytania jest ponad 500 tysięcy słów. Wykupienie dostępu do niego jest „dożywotnie” (czyli tak długo jak będzie funkcjonował iMagazine) i wystarczy to zrobić raz. Nasz tygodnik był wydawany do dnia 27/01/2017.

Osoby, które miały wykupioną jakąkolwiek subskrypcję otrzymały pełny dostęp do archiwum.