|
このページは大阪弁化フィルタによって翻訳生成されたんですわ。 |
Egy kis magyar痙at, hogyan is kell mindezt 駻teni: a less paranccsal meg tudod n騷ni mind az stdout "tartalm疸" (ami a bufferen marad), mind az stderr-騁, ami a k駱erny? jelenik meg, de t?l?ik, amint olvasni pr?疝od a buffert.
Hat疽疵a a program stderr kimenete f疔lba ??ik.
grep da * 2> grep-errors.txt
automatikusan l騁rej?nek.
#!/bin/bash
STR="Hello World!"
echo $STR
tar -cZf $OF /home/me/
Ez a szkript felvet egy m疽ik dolgot is. De mindenek el?t tiszt畸an kell lenned a v疝toz? l騁rehoz疽疱al, az 駻t駝ad疽sal lesz, a date parancs form疸um-kapcsol?nak (+%Y%m%d) k?z?het?n. Ezt m?os?hatod m疽 form疸um megad疽疱al.
M馮 n馼疣y p駘da:
echo ls
echo $(ls)
Lok疝is v疝toz?at a local kulcssz?al tudunk l騁rehozni.
#!/bin/bash
HELLO=Hello
function hello {
local HELLO=World
echo $HELLO
}
echo $HELLO
hello
echo $HELLO
Ennek a p駘d疣ak el馮nek kell lennie, hogy bemutassa a lok疝is v疝toz? haszn疝at疸.
#!/bin/bash
T1="foo"
T2="bar"
if [ "$T1" = "$T2" ]; then
echo a felt騁el igaz
else
echo a felt騁el hamis
fi
7.1 P駘da for ciklusra
#!/bin/bash
for i in $( ls ); do
echo elem: $i
done
let COUNTER=COUNTER+1
done
Ez a szkript a j? ismert "for" ciklust ut疣ozza (C, Pascal, perl, stb.).
#!/bin/bash
function quit {
exit
}
function hello {
echo Hello!
}
hello
quit
echo foo
function quit {
exit
}
function e {
echo $1
}
e Hello
e World
quit
echo foo
OPTIONS="Hello Quit"
select opt in $OPTIONS; do
if [ "$opt" = "Quit" ]; then
echo done
exit
elif [ "$opt" = "Hello" ]; then
echo Hello World
else
hasonl? a "for" ciklusra. Csak itt ahelyett, hogy minden $OPTIONS
elemre egyszer?n v馮rehajtan疣k a ciklust, mindig "meg疝l?juk" a
felhaszn疝?.
#!/bin/bash
if [ -z "$1" ]; then
echo haszn疝at: $0 k?yvt疵n騅
exit
fi
SRCD=$1
TGTD="/var/backups/"
OF=home-$(date +%Y%m%d).tgz
tar -cZf $TGTD$OF $SRCD
echo K駻lek add meg a vezet駝- 駸 keresztneved
read FN LN
echo "Hi! $LN, $FN !"
Ha be?om a parancssorba, hogy "echo $[3/4]", akkor 0-t kapok, mivel a bash csak eg駸zekkel dolgozik. Az "echo 3/4|bc -l" parancsra viszont m疵 helyes eredm駭yt ad, azaz 0.75-?.
Mike levele nyom疣 (n騷d meg a k?z?etnyilv疣?疽t):
Eddig mindig a "#!/bin/bash" form疸 haszn疝tuk, most itt van p疵 p駘da arra, hogyan tudhatod meg a bash konkr騁 el駻駸i ?j疸.
A "locate bash" az egyik legjobb m?szer erre a feladatra, de nem minden rendszeren van locate.
A gy?駻b? kiadott "find ./ -name bash" legt?bsz? m??ik.
A lehets馮es helyek, ahol n騷el?hetsz:
ls -l /bin/bash
ls -l /sbin/bash
ls -l /usr/local/bin/bash
ls -l /usr/bin/bash
ls -l /usr/sbin/bash
ls -l /usr/local/sbin/bash
(Most kap疽b? nem jut t?b eszembe... A legt?b rendszeren
ezen k?yvt疵ak valamelyik饕en lesz).
Vagy megpr?疝hatod a "which bash" parancsot is.
(4) s1 > s2
(5) -n s1
(6) -z s1
(1) s1 megegyezik s2-vel
(2) s1 nem egyezik meg s2-vel
(3) __TO-DO__
(4) __TO-DO__
(5) s1 nem nulla (egy vagy t?b karakterb? 疝l)
(6) s1 nulla
K騁 sztring ?szehasonl?疽a.
#!/bin/bash
S1='string'
S2='String'
if [ $S1=$S2 ];
then
11.3 Aritmetikai oper疸orok
+
-
*
/
% (marad駝)
11.4 Aritmetikai rel當i? oper疸orok
-lt (<)
-gt (>)
-le (<=)
-ge (>=)
-eq (==)
-ne (!=)
A C programoz? egyszer?n ?sze tudj疚 vetni ezen oper疸orokat a
z疵?elek k?t megadottakkal.
11.5 Hasznos parancsok
$sed 12, 18d /tmp/dummy
A sed, a 12. 駸 18. sorok k?ti r駸z kiv騁el騅el ki?ja a f疔l
tartalm疸. Az eredeti f疔l nem v疝tozik.
$wc --words --lines --bytes /tmp/dummy
2 5 34 /tmp/dummy
A wc nem foglalkozik a param騁erek sorrendj騅el. Mindig egy el?e megadott sorrendben ?ja ki ?et, amint azt te is l疸hatod: (sorok)(szavak)(b疔tok)(f疔ln騅).
sort (sz?eges f疔l sorainak rendez駸e)
Most a dummy f疔l a k?etkez?et tartalmazza:
"b
c
a"
$sort /tmp/dummy
$bc -q
1 == 5
0
0.05 == 0.05
1
5 != 5
0
2 ^ 8
256
sqrt(9)
3
while (i != 9) {
i = i + 1;
print i
}
123456789
quit
tput (termin疝 inicializ疝疽疵a vagy a terminfo adatb痙is lek駻dez駸駻e)
Egy kis p駘da a tput k駱ess馮einek demonstr疝疽疵a:
$tput cup 10 4
A kurzor a (y10,x4)-es poz?i?an jelenik meg.
$tput reset
#!/bin/bash
SRCD="/home/"
TGTD="/var/backups/"
OF=home-$(date +%Y%m%d).tgz
tar -cZf $TGTD$OF $SRCD
if [$1 = ]; then
echo "nem adt疝 meg f疔lnevet"
exit 0
fi
for file in $*
do
mv ${file} $file$suffix
done
exit 0
fi
OLD=$1 ; NEW=$2 ; shift ; shift
# Ez a for ciklus v馮igmegy az ?szes f疔lon amit a programnak 疸adtak,
# 駸 egyenk駭t 疸nevezi ?et a "sed" program seg?s馮騅el.
do
new=`echo ${file} | sed s/${OLD}/${NEW}/g`
mv ${file} $new
done
exit 0
fi
# Ha id疂g eljutottunk, akkor semmi haszn疝hat? nem adtak 疸 a programnak
# ez駻t ki?juk a felhaszn疝?ak, hogyan haszn疝ja ezt a szkriptet.
echo "haszn疝at:"
echo " renna p [el?ag] f疔lok.."
echo " renna s [ut?ag] f疔lok.."
#!/bin/bash -x
Ennek hat疽疵a 駻dekes kimeneti inform當i?at kaphatunk.
A dokumentummal kapcsolatban semmif駘e garancia nincs.
Olasz: by William Ghelfi (wizzy at tiscalinet.it) itt a c?
Francia: by Laurent Martelli nincs c?
Koreai: Minseok Park http://kldp.org
Koreai: Chun Hye Jin ismeretlen
Spanyol: ismeretlen
レj ford?疽ok 駸 l駭yegi jav?疽ok.
A Kess 疝tal 疸?t hasznos parancsok r駸z hozz畭d疽a.
Hibajav?疽ok, javaslatok.
P駘d疚 a sztring ?szehasonl?疽hoz.
v0.8 Elhagyom a verzi?z疥oz疽t, r疔?tem, hogy a d疸um is el馮.
http://org.laol.net/lamug/beforever/bashtut.htmBourne shell programoz疽 http://207.213.123.70/book/
http://www.inf.u-szeged.hu/~bmse/unix/unix3.htmlShell programoz疽 http://shell-script-programing.sync.hu/SHELL_PROGRAMOZAS.htm
Shell programoz疽 http://www.fsz.bme.hu/~szebi/slides/U3/sld010.htm
Shell programoz疽 http://www.szabilinux.hu/ufi/10.html