Bash 4.0

Dostępna jest już nowa wersja jednego z najbardziej fundamentalnych elementów systemów Unix/Linux – powłoka GNU Bash 4.0 (Bourne Again Shell).

bash40

Bash 4, oprócz poprawek błędów występujących w wersjach 3.x, oferuje zupełnie nowe możliwości. Jedną z ciekawszych zmian jest przekierowanie wyjścia &>>, które przekierowuje zarówno komunikaty programu, jak i komunikaty błędów do wskazanego pliku. Dotychczasowe przekazanie obu strumieni danych w pipe, które można było uzyskać za pomocą 2>&1 | możliwe jest także poprzez skrót |&. Nowością są również tak tablice asocjacyjne, tworzone za pomocą declare -A name, różniące się od dotychczasowych tym, że mogą używać praktyczne dowolnych funkcji. Pojawił się także nowy wieloznacznik **, pozwalający powłoce na operacje rekursywne listy plików i katalogów.

bash-4.0$ ls
dirA dirB fileA.txt
bash-4.0$ ls **
dirA/fileB.txt dirA/fileC.txt dirB/dirC/fileX.txt dirB/fileZ.txt fileA.txt

dirA:
fileB.txt fileC.txt

dirB:
dirC fileZ.txt

dirB/dirC:
fileX.txt

Dodano nową zmienną $BASHPID, zwracająca identyfikator procesu aktualnie uruchomionej powłoki. Osoby popełniające literówki (np. ja) powinna ucieszyć nowa opcja ‘dirspell’. Pozwala ona na poprawianie typowych literówek podczas wydawania jakże codziennych komend 🙂

Najlepiej zobrazować to na przykładzie, kiedy wpiszemy nazwę katalogu lub pliku z błędem :

bash-4.0$ mkdir wiewiorka
bash-4.0$ touch wiewiorka/orzeszek.txt
bash-4.0$ cd wewiorka
wiewiorka
bash-4.0$ ls
orzeszek.txt

Warto dodać, że zmieniono również zasady parsowania, polepszając tym samym zgodność z POSIX. To oczywiście nie wszystkie zmiany i nowości, których jest naprawdę sporo.

Wiadomość pochodzi z serwisu /dev/santyago prowadzonego przez Korneliusza Jarzębskiego i została tu zamieszczona zgodnie z licencją Uznanie autorstwa 3.0 Unported

żadnych reklam, sama wiedza.

Zarejestruj się na BEZPŁATNY NEWSLETTER i raz w tygodniu otrzymuj najważniejsze wiadmości
ze świata IT, nowych technologii i kryptowalut.

Bez reklam.

  1. Awatar arekm
    arekm

    W nowej wersji wprowadzono też parę segfaultów choćby momentami przy komendzie "cd" 😉 Trzeba poczekać na oficjalne łatki/poprawkową wersję albo listę bug-bash@ śledzić.

  2. Awatar janc
    janc

    mam nadzieje, ze dirspell da sie w prosty sposob wylaczyc..
    jakos nie widze zysku (a raczej potencjalne problemy) w porowaniu do depelniania tabem…

    1. Awatar Maciej Piechotka
      Maciej Piechotka

      Mi się podoba rozwiązanie z zsh. Jeśli jest włączone to grzecznie się pyta czy miałem na myśli wiewiorka zamiast wewiorka.

      1. Awatar 3ED
        3ED

        ZSH to w ogóle inna bajka. ZSH jest wielkim kombajnem pod względem funkcji, a waży kilka razy mniej co bash. Ma naprawdę dużo opcji kompletacji, można skonfigurować oddziwlnie dla każdego polecenia czy czynności różne modele postępowania, itd. Te nowości z basha już dawno miał ZSH (np tablice associative)..

        – O taki przykład: alias rm='nocorrect rm -i' # już bez korekcji
        – Np. menu jest ciekawe, wtykasz [tab], a on rysuje listę, wtykasz drugi raz, a on pozwala poruszać się jak po menu strzałkami.. Piękne.
        – Ot rexepy wbudowane: alias lsnowe="ls -rl *(D.om[1,10])"
        – Czy aliasy by plik wykonywał się "jak binarka", np: alias -s flv=mplayer
        – Specjalna konfiguracja stylu dla kill (dwie ładne kolorowe kolumny PID i pełnym CMD, z możliwością poruszania się strzałkami..):
        zstyle ':completion:*:processes' command 'ps -au$USER -opid=,cmd=|grep -v "ps -au$USER -opid=,cmd="
        zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#)*=0=01;31
        – I tak dalej..

    2. Awatar jeronimmo
      jeronimmo

      dołączam się do Ciebie w tej nadziei

  3. Awatar Korneliusz Jarzębsk
    Korneliusz Jarzębsk

    janc, dirspell jest domyślnie wyłączony

  4. Awatar pjf
    pjf

    Ktoś mógłby podać przykłady użycia tych "tablic asocjacyjnych"?

  5. Awatar MichalK
    MichalK

    use google looke..

  6. Awatar arturz
    arturz

    W jakich to Unixach jest Bash?

    1. Awatar arturz
      arturz

      Horda wściekłych wyznawców Linuksa minusuje 🙂 Czy ja wyraziłem opinie do oceniania czy zadałem pytanie?

      1. Awatar karakar
        karakar

        Bo prawidłowo pisze się Uniksach. Literę "x" piszesz tylko w mianowniku l.p. w przeciwnym wypadku zamienia się na "ks".

        1. Awatar Thar
          Thar

          @karakar: już nie. Rada Języka Polskiego dopuściła też drugą formę, tłumacząc to jej powszechnością. W związku z tym czekam, aż wywalą z alfabetu ó.

        2. Awatar barcin
          barcin

          @Thar: uporczywie będę się domagał źródła potwierdzającego tę informację.

        3. Awatar xd
          xd

          Też nie hcę "ó". Ruwnież "rz" i "ch" nadają się na śmietnik. Preĉ z ortografią dla ortografii!

          Język jest nażędziem służącym wyrażaniu myśli. W pżeciwnym wypadku jest to pżerost formy nad treścią.

          Dublowanie zapisu tyh samyh głosek to idiotyzm.

        4. Awatar karakar
          karakar

          Sprawdziłem sprawę z "x", prawidłowy jest zapis "UNIX-ach", ale "Uniksach" już nie. Opieram się na opinii językoznawców z PWN:
          http://poradnia.pwn.pl/lista.php?id=9821

        5. Awatar die_potatoe
          die_potatoe

          "Ortografia powinna być trudna po to, żebym ja czytając podanie o pracę od razu widział czy człowiek jest idiotą" – nie pamiętam kogo to cytat ale całkowicie się zgadzam.

        6. Awatar michalzxc
          michalzxc

          @die_potatoe:
          To zróbmy sobie drugi lepszy alfabet 3000znakowy, na wzór chińskiego czy japońskiego. To dopiero będzie trudne:P

          [Poza tym "podań o pracę" się nie czyta, rzuca się okiem na ułożenie tekstu w CV i zdjęcie:P]

        7. Awatar Thar
          Thar

          @karakar: opinia była zgodna ze stanem faktycznym, kiedyś.

          @barcin: http://wiadomosci.wp.pl/kat,9811,title,Wolisz-ogu…

          Polecam lekturę artykułu – jak się okazuje, RJP przy ustalaniu zasad nie kieruje się już ani ich logiką, ani dokładnymi badaniami językowymi (czy zasada jest jednolita z pozostałymi), lecz bazuje na konkursie popularności. De facto więc, skoro RJP ma takie podejście do zasad, jakie powinniśmy mieć my, szarzy użytkownicy polszczyzny?

          I pomyśleć, że ci ludzie to językoznawcy

        8. Awatar mby7930
          mby7930

          @Thar

          "@karakar: już nie. Rada Języka Polskiego dopuściła też drugą formę, tłumacząc to jej powszechnością. W związku z tym czekam, aż wywalą z alfabetu ó."

          Ale przecież w zalinkowanym wywiadzie jest dość dobrze wyjaśnione, dlaczego możliwe było dopuszczenie formy np. "Unixach", a nie jest możliwe zamienienie wszystkich "ó" na "u".

        9. Awatar arhan
          arhan

          @Thar: Właśnie – językoznawcy. Za Wikipedią – język to "ukształtowany społecznie system budowania wypowiedzi". Właśnie przez "konkurs popularności" język ewoluuje, zmienia się. Formy używane powszechnie stają się częścią języka. Gdyby z jakiegoś powodu coraz więcej osób zaczęło np. mówić na las "les", to najpierw byłoby to błędem, z czasem (i popularnością) pewnie weszłoby do słownika jako potoczne, aż (z dalszym wzrostem popularności) musiałoby zostać uznane za prawidłowe. RJP bada język i obowiązujące w nim zasady, a nie tworzy je.

        10. Awatar Thar
          Thar

          @mby7630: wcale nie jest dobrze wyjaśnione. Jest mglisto napisane, że x jest ok, ale wywalenie ó to byłby gwałt na języku. Paręnaście lat temu to samo mówiono o zostawianiu w odmianie x, który nie należy przecież do polskiego alfabetu.

          @arhan: bo łatwiej na zlocie zmienić zasadę w słownikach niż opracować strategię utrzymywania czystości polszczyzny ;>

          Nieważne. Od tej pory na każdy zarzut niepoprawnego stawiania przecinków będę odpowiadał, że to część naturalnej ewolucji języka.

        11. Awatar mby7930
          mby7930

          Jak dla mnie jest to dobrze wyjaśnione. Jeżeli zamienione zostałyby "ó" na "u", to jak należałoby pisać takie wyraż jak "moje" czy "krowa".
          Powiem szczerze, że z tego wywiadu wydaje mi się, że prościej byłoby zamienić wszyskie "u" na "ó".

          Jeśli chodzi zaś o dopuszczenie form takich jak "Linuxach", to zmiana jest minimalna, kosmentyczna i w żadnym razie nie niszczy języka. Akurat jak dla mnie "x" jest tak samo literą polskiego alfabetu jak "a", "b" czy "q".

        12. Awatar Thar
          Thar

          Ta, a dla mnie polski alfabet to cyrylica. Длатэґо од дис' то ё пише по полску.

        13. Awatar arhan
          arhan

          Oj, Thar… Nie widzisz różnicy między masowym stosowaniem a indywidualnym wybrykiem? 😉

        14. Awatar arhan
          arhan

          @mby7930: Właśnie o to chodzi, że "X" nie jest literą polskiego alfabetu… Kiedyś było powszechnie stosowane, ale od kiedy przyjęto, że po "W" jest od razu "Y" 🙂 To chyba było gdzieś w okresie międzywojennym… W każdym razie odtąd nielegalne stało się pisanie "maximum" czy "sex", nie mówiąc już o "xiądz" albo "xięga". Tak samo wyrazy z "X" (tym samym: obce) należało odmieniać (bo odmiana to rzecz polska) zmieniając "X" na "KS". Jakoś jednak "X" nie chciało opuścić naszego języka, a już po otwarciu na świat po PRL wtargnęło zupełnie bezczelnie – pojawiło się "xero", "sex shopy", pojawiło się całe mnóstwo firm typu Hortex, Animex czy inne Bartimpexy 😉 Nagle bardziej swojsko poczuły się osoby o nazwisku Fox (chodziłem z takim gościem do podstawówki, w PRL, ale nie wiem, jak je odmieniał 😉 ). Życie weryfikuje odgórne ustalenia i myślę, że teraz już tylko kwestią czasu jest oficjalne przyjęcie "X" do naszego alfabetu 🙂

        15. Awatar Thar
          Thar

          @arhan: każda ewolucja zaczyna się od indywidualnego wybryku 😛

        16. Awatar arhan
          arhan

          Tylko ewolucja to chyba nieświadomie, naturalnie, a tak to raczej rewolucja 😉

          Ale dobra: powodzenia! 😀

      2. Awatar Neonique
        Neonique

        Za Wikipedią:

        Bash to jedna z najpopularniejszych powłok systemów uniksowych. Jest domyślną powłoką w większości dystrybucji systemu GNU/Linux oraz w systemie Mac OS X w wersji 10.4 Tiger, istnieją także wersje dla większości systemów uniksowych. Bash jest także domyślną powłoką w środowisku Cygwin dla systemów Win32.

        Za FAQ na stronie Basha:

        A4) On what machines will bash run?

        Bash has been ported to nearly every version of Unix.

        1. Awatar Budyń
          Budyń

          Pytający pytał, gdzie JEST, a nie gdzie ew. MOŻE BYĆ.

        2. Awatar Neonique
          Neonique

          Za Wikipedią:
          Bash to jedna z najpopularniejszych powłok systemów uniksowych. Jest domyślną powłoką w większości dystrybucji systemu GNU/Linux oraz w systemie Mac OS X w wersji 10.4 Tiger, istnieją także wersje dla większości systemów uniksowych. Bash jest także domyślną powłoką w środowisku Cygwin dla systemów Win32.

        3. Awatar http://alienjr.livej
          http://alienjr.livej

          A gdzie to mityczne GNU, które tak nieustępliwie, w postaci Stallmana, utwierdza wszystkich w przekonaniu, że ten system to nie Linux to GNU/Linux? To było pytanie z tej serii. Odpowiedź brzmi: idź se poczytaj, a temat jest dyskusyjny.

        4. Awatar arturz
          arturz

          Że działa na Unixach to jedno ale nie jest ich fundamentalnym elementem.

    2. Awatar trasz
      trasz

      @arturz: W MacOS X.

      1. Awatar arturz
        arturz

        Dzięki.

    3. Awatar Rsh
      Rsh

      Zapewne w każdym Uniksie w jakim go zainstalujesz.

      1. Awatar arturz
        arturz

        To od wtedy jest jego fundamentalną częścią?

    4. Awatar karakar
      karakar

      Aktualnie jest (lub może być) w tych:
      Mac OS X, Solaris, HP-UX, AIX.

  7. Awatar Łechtak
    Łechtak

    Przecież przekierowanie obu wyjść &> było już od dawna.

    1. Awatar xd
  8. Awatar xeros
    xeros

    Ciekawe jak ma się wydajność nowej wersji basha w porównaniu do poprzedniej. Dużo benchmarków wskazuje jego powolność w wykonywaniu większych skryptów w stosunku do popularnych lżejszych odpowiedników.

    1. Awatar Maciej Piechotka
      Maciej Piechotka

      Dlatego do skryptów wykorzystuje się czasem inne shelle…

  9. Awatar guzo
    guzo

    to co w przykładzie bash potrafił już dawno temu, dzięki opcji cdspell:

    guzo@t40:~$ bash –version
    GNU bash, version 3.2.39(1)-release (i486-pc-linux-gnu)
    Copyright (C) 2007 Free Software Foundation, Inc.
    guzo@t40:~$ shopt -s cdspell
    guzo@t40:~$ mkdir test
    guzo@t40:~$ cd tset
    test
    guzo@t40:~/test$

    Czy dirspell na pewno robi to samo? Nie jest tak, że cdspell działał tylko z 'cd' a dirspell działa z resztą świata? Bo tak sugerowałyby opisy w changelogu…

  10. Awatar erketre
    erketre

    Czy bash 4 będzie można wreszcie skompilować pod MinGW32?

    1. Awatar xd
      xd

      A kogo to obchodzi?

      Nie wystarczają ci cmd.exe i bogate DOSowe polecenia?

      Poza tym ms już dawno powiedział, że tekstowa powłoka to przeżytek, więc czemu im nie ufasz i nie używasz do wszystkiego GUI?

      1. Awatar trasz
        trasz

        @xd: Microsoft od dluzszego czasu oferuje Interiksa, od pewnego czasu jako komponent Windows.

      2. Awatar erketre
        erketre

        Mam gdzieś to co mówi MS. Windows nie jest idealny, nie wszystko można zrobić z GUI. Linux natomiast posiada to czego brakuje w Windows czyli przydatne i bogate narzędzia linii poleceń + shell

        1. Awatar trasz
          trasz

          @erketre: I dokladnie to samo mozesz miec pod Windows – do narzedzi uniksowych jest oddzielny podsystem o nazwie Interix.

  11. Awatar xd
    xd

    Przydałyby się tablice wielowymiarowe.

    1. Awatar vampire
      vampire

      To jest powloka a nie pelen jezyk programowania ;] Jak chcesz tablice wielowymiarowe to uzyj Perla.

      Poza tym, tablica dowolnego wymiaru moze (i tak naprawde to w zastosowaniach numerycznych powinna byc) reprezentowana w pamieci w postaci tablicy jednowymiarowej. W dokumentacji do GSL chyba bylo to dosc dobrze wyjasnione (a jak nie tam to chyba w "Numerical Recipes").

  12. Awatar gotar
    gotar

    Wow, to jeszcze poczekamy kolejne 6 lat i będą funkcje dosŧępne 5 lat temu w zsh.

    1. Awatar fEnIo
      fEnIo

      Podobnie miałem napisać… coś mi się zdaje, że roadmap basha to changelog zsh i to z dość odległej wersji 😉

      pozdr,
      fEnIo

  13. Awatar sjakub
    sjakub

    Ciekawe, czy to poprawianie literowek moze np. "poprawic" polecenie:
    rm *~ na rm * w przypadku brakow plikow z ~ na koncu? 😉

  14. Awatar yen
    yen

    Geez,
    po 1. bash nawet jesli uwazasz (bo uwazac mozesz…), ze jest fundamentem linuksa to bynajmniej nie ma nic z wspólnego z funamentem ani nawet ze starym tynkiem uniksów. W uniksach jesli juz o tym mowa to najczesciej
    pojawia sie zwykly zwyczajny sh czyli bourne shell oraz korn shell.

    po 2. nie ma czegos takiego jak "najbardziej fundamentalny". Jest fundamentalny albo nie i już. Równie dobrze mógłbyś rzec ze Twoja dziewczyna jest "trochę w ciąży".

  15. Awatar Aleksander
    Aleksander

    czy $BASHPID to nie to samo co $$ ?

  16. Awatar Aletha Luga
    Aletha Luga

    Excellent blog here! Also your website loads up very fast! What host are you using? Can I get your affiliate link to your host? I wish my site loaded up as fast as yours lol

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *