BASH - użyteczne sztuczki

Kilka użytecznych sztuczek usprawniających codzienną pracę.

40 comments Linux Analfabeta youtube.com 0

Brak powiązanych.
akerro

A to wszystko + więcej w oh-my-zsh

zskk

@akerro: oczywiscie ze nie. nikt na produkcyjnych maszynach nie bedzie instalowal dodatkowych shelli. trzeba nauczyc sie korzystac z basha na 105% z wszystkimi mozliwosciami. Mocna na prawde cuda robic z poziomu podstawowego shella. Prywatnie korzystam z sh jak najwiecej - wbrew pozorom to tez duzo potrafi. A wtedy - umiejąc basha/dasha/sh to na dowolnej maszynie wszystkie skroty klawiszowe beda po prostu dzialac. Przyzwyczajanie sie do rozwiązan niestandardowyc powoduje kompletne zagubienie na nowych innych maszynach.

azhag

@zskk:

nikt na produkcyjnych maszynach nie bedzie instalowal dodatkowych shelli

nikt - 1

zskk

@azhag: wciąż, dostaniesz nowa maszynke do zabawy i jestes w dupie, bo brakuje ci wszystkiego co fancy ;)

azhag

@zskk: e tam, wystarczy doinstalować normalną powłokę (zsh) oraz normalny edytor (emacs) i już jest wszystko co potrzeba :)

Pomijając sytuacje gdy ma się pod opieką Gentoo, albo jeszcze gorzej jakiegoś AIX-a, wystarczy dosłownie moment

zskk

@azhag: pfff, wyjebalbym cie z pracy za to :) tylko bash i vim :)

produkcja jest święta. im mniej paczek tym mniej problemu

azhag

@zskk: pff, sam bym odszedł :) to w ogóle zgodne z prawem zmuszanie do korzystania z tak prymitywnych narzędzi? ;)

zskk

@azhag: heh, zalozylbym sie ze potrafie wiecej z bashem i vimem niz ty z twoimi ;) prawda jest taka ze zarowno emacs jak i zsh nie są w lsb, co je automatycznie dyskriminuje jako podstawowe narzędzia ;)

azhag

@zskk: LSB ma wiele niedoróbek

Chalenge accepted: włam się vimem przez sendmaila ;)

zskk

@azhag: heh, wolasz polecenie systemowe... ;) a co do emacsa... jest gnus - klient pocztowy dizalajacy z poziomu emacsa

zskk

@azhag: nie mowie ze jest zly. prywatnie - smialo. jednak ja jestem dosc ortodoksyjny, bo nie chcę się przyzwyczajac do "wygody" prywatnie, bo później nie odnajdę się na losowej maszynie. a co do produkcji, to trzymam wszystko uber-koszernie. Nie pozwalam na jakiekolwiek niedociągnięcia czy mozliwe niejasności ;)

akerro

@zskk: zgadzam się z tym co napisałeś na początku... ale częściowo. shell, bash, zsh, csh tak... ale jak pracujesz z wieloma programami na raz, to oh-my-zsh jest niezastąpione, podpowiadanie składni do wielu zadań? git rm [tab][tab] --cached (O TAK TO CHCIAŁEM). Komendę wykonuję raz na epokę, więc takie zachowanie powłoki mi bardzo opowiada, to samo jak raz dostałem obraz dysku .img - 4 partycje, dwie zaszyfrowane, każda z 4 w innym formacie plików, wiesz ile się męczyłem zanim zacząłem sobie podpowiadać składnie? każda ma inny blocksize, każda inny format, dużo łatwiej mi to wybrać z listy niż liczyć gdzie się zaczyna która partycja*blocksize...

zskk

@akerro: bash ma tez dobry system podpowiedzi (jak sobie zainstalujesz). W praktyce - brak podpowiedzi (moja opcja) zmusza mnie do ciąglego myslenia i pamietania, ergo - w przyszlosci nie bede goły i wesoly

akerro

@zskk: jakoś bash mnie nie odpowiadał, do zalet zsh dodam jedna historia komend, niezależna od ilości terminali, więcej domyślnych bindów i przyjaźniejsze ustawienia (case non-sensitive)

zskk

@akerro: to tez dziala w bashu (historia) :) a case-sensitivity to podstawa...

akerro

@zskk: wiem, że to jest w bashu... napisałem domyślny config przecież.

azhag

@zskk: czy w bashowym systemie podpowiedzi można sobie po podpowiedziach latać tabem i strzałkami?

Nawet po zainstalowaniu bash-completion, podpowiedzi w bashu są nieopisanie toporne (chyba, że trzeba to jakoś specjalnie skonfigurować). Zaczynam pisać coś w bashu, klikam dwa razy tab i szlag mnie trafia, bo ta prymitywna powłoka tylko podpowiada co mogę wpisać zamiast po prostu to "wpisać".

Obok braku definiowania katalogów (hash -d) oraz "skrótu" do which (=polecenie zamiast which polecenie) jest to jeden z powodów absolutnie dyskryminujących dyskwalifikujących tę powłokę.

Z plusów basha trzeba jednak oddać, że autorzy wielu programów sami tworzą podpowiedzi dla basha, dzięki czemu dla wielu dość niszowych programów są podpowiedzi. Ale to właściwie wynika tylko z popularności basha.

zskk

@azhag: ale odchodzimy od powodu calej dyskujsi. zsh nie jest domyslnym/standardowym shellem, więc jest to dodatkowa paczka ktora trzeba by na produkcji instalowac i pozniej utrzymac. zsh ma wiele fancy ficzerów, mozliwe ze jest lepsze od basha. Osobiscie uwazam, że cwiczenie pamięci i robienie wszystkiego z palca (względnie z manem) jest podstawą bycia profesjonalistą. Smialo sobie automatyzuj podpowiedzi, jakies zabawne aliasy. Dla mnie pięc literek w te czy we wte nie robi roznicy. Dzieki temu jak dostane "golego" basha, ja odnajdę sie szybko bez instalacji czegokolwiek, ty bedziesz narzekac "jakie to gowno". Zlej baletnicy ;)

azhag

@zskk: no ale proszę nie rób ze mnie ofiary, która nie potrafi się odnaleźć w powłoce, która nie jest jego ulubioną. Pracowałem w bashu, dashu, ashu, mkshu, kshu i fishu -- istota działania, może pomijając skryptowe rzeczy typu for (nie wiem co kierowało deweloperami fisha...), jest dokładnie taka sama: wpisujesz polecenie, które chcesz wykonać.

I co właściwie profesjonalnego jest w klepaniu z palca nazw plików podawanych jako argumenty?

Jeszcze rozumiem niechęć przed instalacją emacsa (choć podtrzymuję niechęć do vi(ma), eda i innych edytorów z minionej epoki), ale powłoka?

pozniej utrzymac

Właściwie jak się "utrzymuje" powłokę? Trzeba ją jakoś zabezpieczać przed ingerencją z zewnątrz? Blokować na firewallu? Działa ona jako demon? Dodaje własne moduły do jądra? Pytam jako potykający się o rąbek dopełniania amator, który wreszcie spotkał profesjonalistę na swej naznaczonej potknięciami drodze. ;)

PS We FreeBSD, OpenWRT, OpenBSD, MirBSD (nawiasem mówiąc twórca to świetny facet!) i Grmlu (również!) bash nie jest domyślną powłoką, ba -- w każdym jest inna (nawet w jednym z nich jest to zsh właśnie). A to tylko kilka systemów, które przychodzą mi na myśl teraz. Nazywanie basha Domyślną Powłoką Świata™ jest nadużyciem.

zskk

@azhag: E no, luz w dupie panie :D nie probuje sie wywyższać pod zadnym pozorem. Raczej chodzi mi o to, że ciągłe cwiczenie pamięci jest podstawą w byciu profesjonalistą ;) Aczkolwiek doceniam podjęcie tematu i merytoryczną argumentację (do tego sensowną!) - tak bardzo tego brak w internetach. Nie robię z nikogo ofiary, nie wytykam ;) Staram się raczej wymagać od siebie (i moich pracownikow) umiejętnosci odnalezienia się "na już" w kazdym systemie który dostaną - a zakres to tylko pochodne debiana i redhata.

Co do utrzymania - chociazby aktualizacje. Nie mówie juz o zlosliwym kodzie, bo to jest odsiewane na wszystkich poprzednich etapach, ale o wszelkich błędach, memory leakach itp. Bash jest dużo starszym shellem, przeżyl wszystkie etapy okresu mlodzienczego.

Za to nie waż mi się nazywać vima przestarzałym :D za to należy się solidne ukręcenie wora :D jest to fantastyczny edytor, z możliwosciami daleko wybiegającymi poza zakres np sublime.

azhag

@zskk:

Co do utrzymania - chociazby aktualizacje.

Zsh aktualizuje się dokładnie tak samo jak basha. Dzięki repozytoriom i pakietom nie trzeba nawet ślęczeć z kompilacją samodzielnie.

Bash jest dużo starszym shellem, przeżyl wszystkie etapy okresu mlodzienczego.

Bash powstał w 1988, zsh w 1990. Oba są w wieku, w którym dwa lata nie robią już żadnej różnicy. Ba, niewykluczone że w wielu kwestiach zsh odchorował co trzeba wcześniej -- cytując Fenia, jednego z deweloperów Debiana, komentującego, jeśli mnie pamięć nie myli, wydanie basha 4.0:

coś mi się zdaje, że roadmap basha to changelog zsh i to z dość odległej wersji ;)

Raczej chodzi mi o to, że ciągłe cwiczenie pamięci jest podstawą w byciu profesjonalistą ;)

Dziękuję, zapamiętałem już, że gdzie jest konfig Apache'a. Ale czy na pewno za każdym razem muszę wpisywać praktycznie całą ścieżkę ręcznie?

zskk

@azhag: hahaha :) Fenio jest na urlopie to nie potwierdze jego wersji :P on sam uzywa debiana, basha i podstawowych podstaw lsb :P

Co to zsh, to dobry punkt, nie wiedzialem ze jest tak stare ;)

Co do sciezki - autocompletion scieżki jest out of box, wiec i tak wcale wiele klepania sciezki nie ma ;)

azhag

@zskk:

Co do sciezki - autocompletion scieżki jest out of box, wiec i tak wcale wiele klepania sciezki nie ma ;)

ale, jak pisałem gdzie indziej, dopełnianie działa inaczej: w zsh wystarczy wcisnąć tab kolejny raz lub użyć strzałek, żeby wstawić odpowiednie dopełnienie, w bashu tylko dostanę listę możliwych propozycji, którą muszę wpisywać dalej ręcznie.

zskk

@azhag: tylko pierwsza literke :P czepialstwo, osobiscie mnie irytowala okropnie ta opcja, bo często zdarzalo mi sie wybrac zla opcje, potem ctr+w usuwa cala sciezke i tak znowu z powrotem...

azhag

@zskk:

prawda jest taka ze zarowno emacs jak i zsh nie są w lsb

znalazłem chwilę, żeby sprawdzić: bash i vi(m) również nie są, czy to je także dyskwalifikuje? ;)

zskk

@azhag: przyznam ze musi ci sie niezle w pracy nudzic :D pozniej zweryfikuję i się ustosunkuję ;)

zskk

@azhag: a ja wrócę do tej dyskusji. Dzisiaj Fenia przepytalem z zsh - jest jego fanatykiem się okazuje ;) niemniej nie przekonal mnie, a co więcej - zupelnie zniechęcil do zsh opowiadając o jego zaletach :P

zskk

@azhag: raczej radosc. zsh to chory pomysl niedojebanych psychopatów. Oni jako zaletę chwalą się tym, że język jest niejednoznaczny! Aliasy mają i mogą byc tylko i wylącznie uzywane na początku. Uzywanie aliasu z kategorii G="|grep" i potem "komenda G cos" jest CHORE....

azhag

@zskk: nawet nie wiedziałem, że tak można :) Zresztą to, że powłoka umożliwia coś niestandardowego, nie znaczy przecież, że trzeba z tego korzystać.

Przypomniałem sobie jeszcze jedną fajną rzecz z zsh. Jeśli zacznę pisać "xyz" i dam strzałkę w górę, to przechodzi o ostatniego polecenia zaczynającego się od "xyz", zamiast jak w bashu przejść poprostu do ostatniego polecenia. Z tego powodu zresztą nie znoszę sudo, bo kompletnie wypacza tę funkcję. ;)

zskk

@azhag: wolę klasyczne ctrl-R ;)

azhag

Szczerze powiedziawszy z basha wystarcza mi:

chsh -s `which zsh`

(oczywiście po uprzednim wpisaniu chsh -s =zsh i przeklnięciu basha ;))

zskk

@azhag: widac jak malo go znasz ;) nie uzywa się, co wiecej - są mocno deprecjonowane apostrofy ;)

azhag

@zskk: w złożonych skryptach oczywiście lepsza jest konstukcja $( ... ), ale przy prostym jednolinijkowcu gravisy się sprawdzają (no i zawsze dwa znki zamiast trzech!111). Nawiasem mówiąc jskrypt fluxbox-generate_menu zawiera(ł) na początku dłuuuugi komentarz na temat dobrych praktyk przy ulepszaniu go, m.in. zalecał, jeśli mnie pamiięć nie myli, gravisy zamiast $( ... ) ze względu na większą przenośność.

PS Nie chcę być "epicko patetyczny", ale słowo "deprecjonować" w języku polskim oznacza coś innego niż chyba Ci się wydaje.

zskk

@azhag: meh, faktycznie, za duzo ponglisza... a co do przenośności `` - 95% distro ma link symboliczny /bin/sh do /bin/bash to raz (nawet to chyba LSB uwzglednia). Dwa - ubuntowy dash akceptuje $(). Nie mam niczego egzotycznego aby przetestować gdzie indziej. A poza tym odsetek uzytkownikow tcsh csh czy ksh jest tak niewielki ze mam w dupie portowanie tego tam ;)

azhag

@zskk: Są w uniksowym świecie inne systemy niż dystrybucje Linuksa.

zskk

@azhag: nie mowie ze nie, nie mam jak przetestowac aby potwierdzic. z drugiej strony nikt nie bedzie instalowac fluxa na aixach :)

zskk

@azhag: plus dla ciebie :P powinienem dodac, ze wyłączam ludzi z duzym poczuciem humoru ;)