Man kan logge inn på hvilken som helst Unix host i verden (man har tilgang til) og få alle vinduer sendt til skjermen man sitter ved.
group76@ubuntu:~$ ssh -X os@studssh.iu.hio.no os@studssh.iu.hio.no's password: [os]studssh:~$ xload |
-X skrur på X11 forwarding.
For å skrive til en skjerm, ber man X-serveren
om lov.
while test
do
kommandoer
done
|
Eksempel; alternativ måte å behandle argumenter: bedre hvis "strenger med mellomrom" er blant argumentene
#! /bin/bash
while [ $# -gt 0 ] # Så lenge det er noe i $*
do
echo "arg: $1"
shift # skyver ut $1 og legger neste argument i $1
done
|
Deamon-eksempel
#! /bin/bash
while [ "true" ] # evig løkke; en streng er alltid 'sann'
do
echo "Running $0, a process with PID $$"
# Kan være nyttig for å lage entydige filnavn
sleep 5 # sover i 5 sekunder
done
|
#!/bin/bash echo -en "svar: \a" # -n dropper linjeskift read answer echo "Du svarte $answer" |
opsjonen -e muligjør bruk av kontrolltegn som \a, som gir ett pip.
#! /bin/bash i=0 while read LINE do (( i++ )) echo "Linje nr $i: $LINE" done |
$ read.bash < /etc/passwd |
read LINE returnerer 0 (alt OK) helt
til EOF og da stopper while.
IFS kan endre hvordan
read leser inn dataene og filen kan også sendes til read inne i scriptet::
#! /bin/bash #haugerud:x:285:102:Hårek Haugerud:/iu/nexus/ud/haugerud:/bin/bash IFS=: while read brnavn x ID GR NAVN HOME SHELL do echo "$brnavn: $NAVN" done < /etc/passwd |
read leser fra STDIN og dit kan linjene også sendes med en pipe:
#! /bin/bash
#haugerud 16662 0.0 0.1 2256 1280 pts/2 S 12:52 0:00 /bin/bash
# Sender all output fra ps aux til \verb+read+:
ps aux |
while read bruker PID x x x x x x x x prog
do
if [ "$bruker" = "haugerud" ]
then
echo "ProsessID = $PID $prog"
fi
done
|
biler som ser slik ut:
$ cat biler student bmw 500000 haugerud berlingo 150000 kyrre elbil 90000 |
$ sort biler haugerud berlingo 150000 kyrre elbil 90000 student bmw 500000 |
$ sort -k 2 biler haugerud berlingo 150000 student bmw 500000 kyrre elbil 90000 |
$ sort -n -k 3 biler kyrre elbil 90000 haugerud berlingo 150000 student bmw 500000 |
sort -n -k 3 biler > sortertFil |
head for å få til det:
studssh:~$ sort -t: -k 5 /etc/passwd | head -n 6 aasej:x:2748:1001:Aase Jenssen:/iu/nexus/uc/aasej:/bin/bash s137153:x:2603:100:Aasmund Solberg:/iu/cube/u2/s137153:/bin/bash s103726:x:1089:100:Abdi Farah Ahmad:/iu/cube/u3/s103726:/bin/false s133988:x:1695:100:Abdi Hassan Abdulle:/iu/cube/u2/s133988:/bin/bash s123860:x:1090:100:Abdinasir Omar Kahiye:/iu/cube/u2/s123860:/bin/bash s141546:x:3449:100:Abdiqadir Said Jama:/iu/cube/u3/s141546:/bin/false |
-t: gjør at tegnet : betraktes som skilleledd mellom kolonnene. Evalueringen av en slik pipeline går fra
venstre til høyre så hvis man istedet ønsker å se en sortert utgave av de 6 første linjene, får man det med:
studssh:~$ head -n 6 /etc/passwd | sort -t: -k 5 bin:x:2:2:bin:/bin:/bin/sh daemon:x:1:1:daemon:/usr/sbin:/bin/sh games:x:5:60:games:/usr/games:/bin/sh root:x:0:0:root:/root:/bin/bash sync:x:4:65534:sync:/bin:/bin/sync sys:x:3:3:sys:/dev:/bin/sh |
tail gir i motsetning til head de siste linjene. En spesielt nyttig bruk av tail er for
å se på slutten av log-filer. Hvis man i tillegg tilføyer opsjonen -f vil man kontinuerlig følge med på om det kommer nye linjer til logfilen, for eksempel slik:
sudo tail -f /var/log/auth.log |
| Bourne-shell type | C-shell type | ||
|---|---|---|---|
| sh | Bourne-shell, Det opprinnelige Unix-shell | csh | C-shell, C-syntaks |
| bash | Bourne-again-shell, forbedret sh | tcsh | forbedret csh, bedre interaktivt |
| ksh | Korn-shell, utvidet sh, mye fra csh | ||
/bin/sh
group10@ubuntu:~$ ls -l /bin/sh lrwxrwxrwx 1 root root 4 2008-06-08 23:34 /bin/sh -> dash |
.bashrc.
Alle kommandoer som
står der blir utført. Hver gang du logger inn, utføres kommandoene i /etc/profile
og ~/.bash_profile.
Et nytt shell startes hver gang
/etc/profile ved hver innlogging, systemfil
~/.bash_profile ved hver innlogging
~/.bashrc for hvert nytt shell, men ikke ved innlogging
~/.xsession leses
.bash_profile og .bashrc
PS1="\h:\w$ " alias move=mv alias cp="cp -i" |
~/.bashrc vil move alltid bety mv
og promptet blir:
$ bash
cube:~/www/os$ exit
exit
$ source ~/.bashrc
cube:~/www/os$
|
source starter ikke et nytt shell, men utfører alt i det eksisterende shellet.
unalias move
#!/bin/bash
if [ "$1" = "config" ]; then
echo 'graph_title Antall Prosesser på os2.vlab'
echo 'graph_vlabel Antall Prosesser'
echo 'graph_info Viser totalt antall prosesser på os2.vlab '
echo 'graph_category OS'
echo "graph_printf %3.0lf";
echo 'os2PR.label Antall prosesser'
echo 'os2PR.type GAUGE'
exit 0
fi
res=`ps aux | sort | uniq | grep -v 'ps aux' | grep -v uniq | wc -l`
echo "os2PR.value $res"
exit 0
|
#!/bin/bash echo -en "svar: \a" read answer echo "Du svarte $answer" exit 0 |
#!/bin/bash while [ $# -gt 0 ] do echo "arg: $1" shift done |