rubriekLiglog copyleft.be linuxuser | Command | Shell | Apache | html/css | MySQL | Php | SVN | Netwerk | Mailserver | Archief

Bourne Again SHell

Keys:
CTRL-C : uit script
TAB : aanvullen
TAB TAB : toont mogelijkheden
CTRL X ( : macro opnemen
CTRL X ) : macro opgenomen
CTRL X e : macro uitvoeren
CTRL U : del lijn links
CTRL W : del woord links
CTRL K : del lijn rechts

Tekens:
$ parameter
~ user, user dir
@ computer
# userpromt
- argument
-- arg. nonoption
. onzichtbaar bestand
* ? jokers zien geen .
>> afleiden uitvoer
<< invoer nemen van

Algemeen
-v verbose=uitleg
set +C = clobber:overschrijven
set -C = noclobber
shopt -s dotglob : shell option
(om verborgen bestanden mee te globben)

Commando's
bestaat bashcommando:
type -a commando
clear : scherm leegmaken
cat file: toont bestand
head -n : eerste n regels
tail -n :laatste n regels
pwd: working dir
ls -a -l : alle+info
echo $? : laaste foutwaarde
chmod + x file : w. uitvoerbaar
env of printenv : omgev.var
expr 1 + 2 : geeft "3" op scherm
rm -i / -f :verwijder met/z. info
wc : tel tekens/woorden/zinnen
tar -cvf bestandslijst
c = create v = verb f = file
file : geeft bestandsformaat

Bestanden uitpakken
uitpakken naar huidige dir,
Gzipped files:
tar xzvf /mnt/cdrom/prog-1.02.tgz
Bzipped files:
tar xzvf --bzip2 /mnt/cdrom/prog-1.02.tar.bz2

compile, install
./configure --help
(toont opties)
./configure
make
su -c "make install"
of als root:
make install

apt tools
apt-get install package
-s simulate only
apt-get update
apt-get upgrade
apt-get dist-upgrade
apt-get remove package
apt-get --purge remove packages
apt-cache search deelvannaam
dpkg -s package
dpkg -S fileofwichpackage
apt-file list package
apt-file search file

Strukturen, bestanden, redirect
Struktuur: while ; do done
. .
Struktuur: case in ) ;; ) ;; *) ;; esac
case " " in
" ")
   (commando)
   (commando);;
" ")
   (commando);;
   (commando);;
esac
case " " in
" " | " ")
   (commando);;
*)
   (commando);;
esac
* dient hier als joker
| betekent "logische of" (or)

Struktuur: if;then;elif;then;else;fi
if (voorwaarde) ;then
_ (commando)
_ (ev. exit 1/0)
fi
if (opdracht) ; then (opdracht) ;
_ [ elif (opdracht); then (opdracht) ;]
_ [ else (opdracht); ]


Testen met test of [ ... ] (bestandnaam, str, getal)
vb [ -d /qqq ] : in bash spatie achter [ _ en voor _ ]
vb test -d /qqq : 0 is ok, 1 is fout: echo $?
Volgorde v/h uitvoeren met ( ) in shell door /( en /)
test-_ (file) of (dir) -f bestaat, -d is dir
test-_ (file) -r -w -x read write execute toegang
test -z str zero, leeg, -n str niet leeg str1 = str2 gelijk
test getallen n,m rekenkundig vergelijken:
n -eq m rek. vergelijken n -lt m less than
n -ne m not equal n -le m less or equal
! (expr) not n -gt m greater than
(exp) -a (exp) and n -ge m greather or eq.
(exp) -o (exp) or

Globbing: oplossen van Wildcards of jokers
Onderlingen verschillen tussen shells mogelijk!
Echo * (in directory, ipv ls bv)
? : vervangt exact 1 teken op die plaats
* : vervang 0 tot max_bestandsnaam_lengte tekens
(dos stopt * pas aan een punt, hier niet: ls p*h.txt)
[1-3] : tekenreeks op te vervangen plaats, ook [a-cx-z]
[!1-3] : ! als omkering (not) ook hoedje kan ^

Brace Extension
{x,y} : ls k{i,y}r kir en kyr worden getoond

Rechten in linux
entry own-grp-wrld n name group size date filename
dir d rwx r-x r-x 5 jos adm 1024 Feb 24 2000 Desktop
dir d rwx r-x r-x 4 jos adm 1024 Nov 20 11:14 public_html
dir d rwx r-x r-x 2 jos adm 1024 Nov 22 11:14 shellbook
file - rw- r-- r-- 1 jos adm 761 Jun 16 13:04 status.html
file - rw- --- --- 1 jos adm 9608 Apr 19 1999 .mc.menu
d=dir f=file c=char b=block app p=pipe app
n = counter, teller

Onderscheid bestand en programma
chmod +x dient om bestand uitvoerbaar te maken, bv shell script
menu.sh rw- r-- r-- waarop chmod +x menu.sh heeft als resultaat rwx r-x r-x

Redirect: leiden van uitvoer en invoer
Vanuit bestand gegevens halen ipv input op command line
Onderdrukken soort echo in bv wc -l < tekst.txt
Foutmelding en resultaten onderscheiden sturen
Afleiden om niet te zien: > /dev/null
Kanaal nr apparaat opm
stand. in 0 toetsenbord
stand. uit 1 monitor
fout uit 2 monitor
Scripting(/scripts/scriptmenu.txt)
$0 variabele: bestandsnaam
$ variabelen 1-9 parameters
# commentaar
${ } var scheiden van txt
$# aantal parameters in script
Quoting:" ' `
double or single quotes, backticks
" " tekst > 1 woord
' ' tekst letterlijk
uit te voeren commando
|   logische of (or) in case-struc
var=" " tekst >1 woord toekennen
exit 0 foutwaarde, 0=ok

Let ook:
path nakijken, dir
van uitvoeren script!
in subshell uitvoeren:
script.sh
als root:
./script.sh
geen subshell, sourcen "."):
. ./script.sh

.inputrc in homedir
/etc/magic bestandsformaten
(naam kan varieren vlgs distr)

Root:
vanuit user :
su root (password)
./script ipv script
(system logs)
tail -f /var/log/messages
Keys - Tekens - Algemeen - Struktuur - Testen - Globbing - Brace extension - Rechten - Redirect - Scripting
(*) since dec 2000

  Linux gebruikers memo's, tips en ervaringen : linuxuser.copyleft.be 2000-2006 +