Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Názory k článku
Hrátky z řádky: první krůčky při programování v Bashi

Harvie aura:51
17. 3. 2008 0:19 Nový

bash's cool

celé vlákno
Posledni dobou me zacalo bavit psat v BASHi, kolikrat by clovek rek, ze to bude delsi, nebo pomalejsi kod, nez kdyz pouziju jinej jazyk, ze to cely bude krkolomny, neuciny a nevim jaky este. A ono to najednou funguje a mnohem rychlejc nez bych myslel. I kdyz priznavam, ze je to diky super *nixovejm utilitkam, ktery v tech skriptech pouzivam. V zaveru se kolikrat da napsat kratsi a rychlejsi kod nez v php-cli (puvodne sem chtel rict perl, ale zas nechci prehanet).

vzhledem k tomu, ze sem se bash naucil z man bash, tak si rad prectu tvuj clanek, abych mel jistotu, ze delam vse korektne. Dobrym prikladem je, ze me az zvyraznena syntaxe v nanu napovedela, ze je dobre davat promene do zavorek. "$foo".
Tomas Z.
Tomas Z. (neregistrovaný)
17. 3. 2008 0:55 Nový

chyby mohou být konec

celé vlákno
takže např. neošetřená chyba na jednom znamená „jen“ to, že se problematický řádek přeskočí a pokračuje se dalším.
Proto je pro ladění fajn použít přepínač, který při chybě skript nekompromině ukončí.

Jinak ten #! bych neviděl ani tak jako dobrý zvyk, jako spíš předpoklad toho že se skript bude chovat jak má pokud bude spouštěn z nějakého jiného programu (třeba grafikého, nebo CGI)

mibo
mibo (neregistrovaný)
17. 3. 2008 1:03 Nový

dalsi zdroje

celé vlákno
shadowrunner
shadowrunner (neregistrovaný)
17. 3. 2008 1:37 Nový

vylepseny test

celé vlákno
Neznáte někdo manuálovou stránku toho [[]] testu? Celkem by mě zajímalo v čem se liší oproti normálnímu testu [].
uživatel si přál zůstat v anonymitě
17. 3. 2008 9:14 Nový

Re: vylepseny test

celé vlákno
Co takhle man bash?
Ladislav Hagara
17. 3. 2008 2:11 Nový

Advanced Bash-Scripting Guide

celé vlákno
Advanced Bash-Scripting Guide, povinné čtení programátorů v Bash. Navíc včera (16.3.2008) vyšla nová verze 5.2.

K správě Source Mage GNU/Linux slouží sorcery (čarodějnictví) - v Bash skriptech vytvořená sada magických příkazů (summon, cast, dispel, gaze, scribe, sorcery), knihoven a konfiguračních souborů.
Zájemcům o programování v Bash mohu doporučit nahlédnout do sorcery-test.tar.bz2 .

Pokud byste čarodějnictví rádi viděli v reálu, doporučuji Source Mage GNU/Linux nainstalovat. :-)
uživatel si přál zůstat v anonymitě
17. 3. 2008 4:26 Nový

a jejda

celé vlákno
tenhle dil je teda hodne nepovedeny.
uživatel si přál zůstat v anonymitě
17. 3. 2008 8:57 Nový

Re: a jejda

celé vlákno
tenhle prispevek je hodne nepovedeny
gld
gld (neregistrovaný)
17. 3. 2008 9:56 Nový

Re: a jejda

celé vlákno
Nenapisal by som to tak, ale suhlasim.
Neviem pre koho bol clanok urceny, ale zaciatocnik z neho urcite nic nemal.
Ondřej Bojar
18. 3. 2008 8:41 Nový

Re: a jejda

celé vlákno
To mne mrzí, že se vám díl nelíbí. Doufal jsem, že pár začátečníků začalo seriál sledovat a chtěl jsem "spojit ty dvě linky" seriálu -- povídání o principech se snůškou náhodných tipů. Proto ty hutné příklady, kde každý řádek ilustruje jiný test nebo jinou operaci s proměnnou. Počítal jsem s probuzením fantazie. Možná máte ale pravdu a pro začátečníky bude lepší komentovat příklady pořádně. (Osobně si myslím, že nejvíc ten problém zvýraznila sazba příkladů, jak nakonec vylezla v HTML. To je samozřejmě ale chyba moje, layout roota je už dlouho stabilní.)

O množství jiných zdrojů vím, to je evidentní, že vlastně jen přechroustáváme manuálovou stránku jako to dělali i jiní (díky za ty přesné odkazy pro někoho, kdo ještě neumí pořádně hledat). Můj náhled na cíl seriálu je tento: pravidelný inspiromat pro začátečníky. Každé pondělí se krátce kouknou, jestli nějaký tip nekoresponduje s tím, co denně řeší. A pokud ano, přečtou si víc a dohledají víc, prostor článku je prostě omezený. Napište do komentáře své představy, myslím, že se já i Petr rádi přizpůsobíme.

Sbírka zajímavých tipů každého člověka je nutně omezená (ještě jsem svou nevyčerpal, ale vím, že k tomu dojde). Osobně bych byl hrozně rád, kdyby třeba i někdo z diskuse nabídl redakci, že jeden díl udělá o svých vlastních objevech. Aspoň se tak poučím i já.

A k těm lomítkům: já totiž v bashi programuju hlavně v Makefilech... (O tom taky plánuju díl či dva, slibuju, že tam ale bude víc komentářů.) Budu rád, když se přidá někdo, kdo v bashi napsal větší dílka. Pro takový účel já sahám vždycky po Perlu, ale třeba je to "zbytečný luxus" :-)
Petr Macek aura:97
18. 3. 2008 11:52 Nový

Re: a jejda

celé vlákno
Ja myslim, ze tento dil neni spatny. Pokud nekdo cte teoreticke dily od Ondry pravidelne, i tato cast mu do toho pekne zapada. Neni az zase takova sranda nacpat do omezeno mnozstvi znaku nejake tema. Pokud ma nekdo zajem, muze si to s nami zkusit :-)
peca
peca (neregistrovaný)
17. 3. 2008 10:18 Nový

Re: a jejda

celé vlákno
s tim nesouhlasim, článekk je docela povedený...
Ash
Ash (neregistrovaný)
17. 3. 2008 16:24 Nový

Re: a jejda

celé vlákno
Díl je opravdu nepovedený, to neustálé motání se kolem \ na konci řádku, nesmysly o střednících při elif a else a podobně. Autor není v programování v bash příliš sběhlý a na kvalitě článku se to jasně projevilo, bohužel.
Václav Kocian
17. 3. 2008 8:58 Nový

[[ 40 -eq 050 ]]

celé vlákno
Nula před číslem znamená osmičkovou soustavu (a 5x8=40 ). Z podobného důvodu platí také například [[ 80 -eq 0x50 ]].
Mir a B.
Mir a B. (neregistrovaný)
17. 3. 2008 10:55 Nový

Kopirovani bin. soub. v BASHi

celé vlákno
Zdarec,

na serveru se nam vyskytla podivna chyba: mame k dispozici pouze dva BASHe a
zadne externi programy nefunguji (ani cat, ls, ...).

Potrebujeme vsak zkopirovat binarni knihovnu, ale mame k dispozici JEN
interni funkce bashe. Ani dalsi bash nelze spustit.

Napadne nekoho neco?

Zatim jsme dokonvergovali k nasledujicimu (ls je binarni kopirovany soubor):
export IFS="" ; while read -r -n 1 radka; do printf "%c" "$radka"; done <
ls > ls2

ale tohle reseni nezapise znaky 0a (a mozna nejake jine)

potom jsme jeste objevili nacteni souboru do promenne:
a=$(<ls) ale zapsat obsah te promenne do souboru tak, aby odpovidala
originalnimu ls se nepovedlo

diky,
uživatel si přál zůstat v anonymitě
17. 3. 2008 11:01 Nový

Re: Kopirovani bin. soub. v BASHi

celé vlákno
Doporucil bych staticky "cat"
Harvie aura:51
17. 3. 2008 14:41 Nový

Re: Kopirovani bin. soub. v BASHi

celé vlákno
BASH dokaze otevrit soubor a pracovat s nim pomoci jeho FD:
Mohu doporucit pouzit google: http://blogmag.net/blog/read/48/File_descriptors_in_shell
i bashar zacatecnik si pak uz pak snadno dopise funkce jako cat(), cp() a pod bez pouziti externich binarek... BTW sem si vzdycky myslel, ze BASH ma nektery prikazy (jako treba cp nebo cat) este redundantne ve svoji implementaci primo v sobe, aby to bylo rychlejsi... ale nevim.
Coz ovsem neznamena, ze si tady hned musim delat reklamu: http://blog.harvie.ath.cx/ ;+D
Harvie aura:51
17. 3. 2008 15:01 Nový

Re: Kopirovani bin. soub. v BASHi

celé vlákno
v zaveru sem se s tim popral takhle:

harvie@harvie-ntb:~/Work/butils$ source tinyutils.bash
harvie@harvie-ntb:~/Work/butils$ tinycat tinyutils.bash
#!/bin/bash

tinycat() {
if [ -a "$1" ]; then
exec 6<"$1";
while read line <&6; do
echo "$line";
done;
exec 6<&-;
else echo 'FNF!' > /dev/stderr
fi;
}
harvie@harvie-ntb:~/Work/butils$ tinycat not_found
FNF!
harvie@harvie-ntb:~/Work/butils$


staci pres > presmerovat do souboru a muzes kopcit...
Harvie aura:51
17. 3. 2008 17:08 Nový

Re: Kopirovani bin. soub. v BASHi

celé vlákno
Taky sem uz prisel na to, jak je to s tema vnitrnima prikazama:
jestli nemas /bin/echo, tak prepis echo na builtin echo:

harvie@harvie-ntb:~/Work/butils$ builtin echo foo
foo
aaa
aaa (neregistrovaný)
17. 3. 2008 16:37 Nový

Re: Kopirovani bin. soub. v BASHi

celé vlákno
ono pred par rokmi sa nam v praci (u zakaznika) vyskytla podobna "chyba" - neslo otvarat nove terminaly, ani login etc. prislo sa na to ze nam hackli server... tak pozor ;-)
matej
matej (neregistrovaný)
18. 3. 2008 18:29 Nový

Re: Kopirovani bin. soub. v BASHi

celé vlákno
Uplne staci, ked si odfajcis glibc, resp. nainstalujes glibc, ktore je napriklad nekompatibilne s aktualne beziacim kernelom. To potom nespustis nic, co uz nemas spustene, resp. co nie je staticky nalinkovane.
(To uz treba len dufat, ze ta bashova ssh konzola nespadne, kym nahodis nazad funkcne glibc.)
pht
pht (neregistrovaný)
23. 3. 2008 10:09 Nový

Re: Kopirovani bin. soub. v BASHi

celé vlákno
nekdy staci na vyreseni takoveho problemu pouzit /lib/ld-linux.so.2 , napr. /lib/ld-linux.so.2 /bin/cp neco nekam...
uživatel si přál zůstat v anonymitě
17. 3. 2008 13:19 Nový

aritmetická expanze

celé vlákno
netreba psat $(($i+1)), staci $((i+1))
pht
pht (neregistrovaný)
23. 3. 2008 10:09 Nový

Re: aritmetická expanze

celé vlákno
myslim ze spis ((i+1))
Eugene
Eugene (neregistrovaný)
19. 3. 2008 12:08 Nový

ndiswrapper ze skriptu

celé vlákno
nejde mi ze skriptu nahrat modul ndiswrapper, kde delam chybu?


#!/bin/bash
su root -c modprobe ndiswrapper\
Ash
Ash (neregistrovaný)
19. 3. 2008 22:37 Nový

Re: ndiswrapper ze skriptu

celé vlákno
chzbí uvozovky
Eugene
Eugene (neregistrovaný)
27. 3. 2008 9:51 Nový

Re: ndiswrapper ze skriptu

celé vlákno
Dik!
Kit
Kit (neregistrovaný)
26. 4. 2008 16:50 Nový

Detekce připojení notebooku

celé vlákno
Trochu jsem ten školní příklad upravil, protože grep je v něm zbytečný. Navíc ten původní příklad nefunguje v českém národním prostředí - ve výpisu ifconfig je "inet adr" místo "inet addr". Proto jsem před ifconfig doplnil LANG=POSIX.
case $(LANG=POSIX /sbin/ifconfig eth0 |
   sed -n 's/^.*inet addr:\([^ ]*\).*/\1/p') in \
      195.113.*) echo škola ;;  \
      10.*|192.168.*) echo doma ;; \
      *) echo nevím ;; \
esac
Skripty v bashi nejsou pomalé. Pouze je nutné ty skripty psát tak, aby byly rychlé.
Zasílat nově přidané příspěvky e-mailem