UNIX Algemeen
Hidden files beginnen met een '.'
De 'login.com' heet .profile
Meerdere opdrachten op één regel mogelijk. Scheiden middels een ';':
pwd; ls -a; man ps
De naam van een bestand kan maximaal 14 tekens lang zijn, edoch bestanden hebben
eigenlijk geen naam. In de directory wordt een naam opgeslagen met een pointer
naar de data van het bestand. Dat betekent dat er meerdere pointers naar hetzelfde
bestand mogelijk zijn (zie de opdracht ln).
Wildcards zijn: ?, * en [], waarbij binnen [] een reeks naar
maximaal één teken wordt gezocht:
a[57] = a5,a7
a[5-7] = a5,a6,a7
a[5-70] = a5,a6,a7 en a0
a[12].[57] = a1.5,a1.7,a2.5,a2.7
Protectie is opgebouwd uit 3x een serie van 3 bits die tesamen een octaal getal vormen.
De waarden die UMASK toont of die met UMASK gezet kunnen worden, zijn altijd waarden
die aangeven wat er niet aangezet moet worden!
rwx = 111 = 4+2+1 = 7.
rwxrwxrwx = 777
rwxr-xr-- = 754
Om van 777 naar 754 te gaan, doe je het volgende:
777 - 754 = 23, dus umask 023
Foutmeldingen lopen via de errdemon en komen terecht in /usr/adm/errfile.
Ze zijn te zien met errpt. Demon stoppen met errstop.
Shell scripts worden altijd in een subshell uitgevoerd (let op de EXPORT van
environment variabelen). Indien een script niet de protectie x erbij heeft,
kan je'm door de opdracht 'sh <script>' uit laten voeren. x kan je
toevoegen dmv 'chmod a+x <script>'. Om een script met x protectie in
de huidige shell uit te voeren gebruik je de '.':
. <script>
Message of the day ligt opgeslagen in /etc/motd
Nieuws
news -a(ll) -n(ames) -s(=ongelezen)
$HOME/.news_time
/usr/news
De volgende batchfiles worden bij het opstarten van het systeem door de eerste
shell uitgevoerd en zijn aan te passen:
bcheckrc
brc
rc
Redefining input stream, zodat invoer vanuit de batchfile wordt geaccepteerd
(zoals 'define TT sys$input' onder Dec/VMS):
ed testfile <<NB
> 1,25s/aap/noot/
> w
> q
> NB
cat testfile
UNIX opdrachten
chmod - Verander bestands- en directory-attributen
gou-w - Verwijder SCHRIJF permissie bij Group/Others/User
u+rw - Voeg LEES & SCHRIJF permissie toe aan de User
u=rw - Zet LEES & SCHRIJF permissie bij de User
PERMISSION COMMAND
U G W
rwx rwx rwx chmod 777 filename
rwx rwx r-x chmod 775 filename
rwx r-x r-x chmod 755 filename
rw- rw- r-- chmod 664 filename
rw- r-- r-- chmod 644 filename
U = User
G = Group
W = World
r = Readable
w = writable
x = executable
- = no permission
echo - Stuur tekst naar STDOUT. Environment ariabelen vooraf
laten gaan door een $-teken: echo $PATH. Opdrachten
tussen backticks plaatsen: echo Huidige directory is `pwd`
who - Toont de aangemelde gebruikers.
who am i - Toont je eigen proces.
tty - Toont scherminstellingen.
stty - Zet scherminstellingen:
intr - Interrupt toetsaanslag
erase - Wis karakter toets
kill - Mogelijkheid tot het ontvangen van signals
eof - End Of File karakter: stty eof '^Z' (eof wordt CTRL/Z)
-a - Toont ALLE scherminstellingen
$ <opdracht> & - Smijt process naar de achtergrond.
Let op: als je afmeldt, wordt het achtergrondproces
ook gestopt.
ps - Toont processen
-e - + entries
-f - FULL
. Process ID
. Parent Process ID
. Owner Process
. Terminal
. Status
. Elapsed time
. Commandline command
kill <signal> PID
-9 0 - Stop alles van jezelf
ls - List, zelfde als DIR op VMS/DOS.
-s(ize)
-a(ll) - ook hidden files
-d(irectory)
-l(ong) - = uitgebreid
-R(ecursive) - subdirectories ook
-F(iletype) - '/' = subdirectory
'*' = programma/opdracht
file <file> - Gokt naar het type bestand.
tail <regels> <file>
- laat laatste aantal <regels> van <file> zien.
-f(ollow) - laat constant de laatste x regels zien.
lp - printen
-w(arnig when ready)
-n(number of copies)x
-d(evice)zzz
-c(opy) - Plaatst ipv het origineel een copie in de queue.
lpstat - Toont status van de printer
-t(otal) - = Alles tonen
ln - Link. Creert extra verwijzing naar een bestand.
grep - Zoekt patronen in bestanden.
-n(umber) - Laat regelnummer erbij zien
-i(gnore case)
-c(alculate) - laat totaal aantal gevonden regels zien
-v - Selecteer regels waarin het patroon niet voorkomt!
make <file> - waarbij <file> er van binnen als volgt uit moet
zien:
<doel> : <afhankelijkheid>
<uit te voeren opdracht>
sed - Stream Editor tbv gebruik in pipelines.
sed <edtcmd> <file>
-f <cdmfile>
-n - geen listing op scherm
sort - Sorteert een bestand. Sort werkt met < en >.
-b(lanks) - Negeer voorloopspaties
-f(old) - Negeer hoofd/kleine letters
-i(gnore) - Negeer control-characters
-d - Alleen letters,cijfers en spaties
-n(umerical) - Sorteert numeriek
-o(utputfile) <filename>
rsh - Restricted shell
De volgende zakenkan de gebruiker niet doen:
cd,
$PATH veranderen,
'/', '>' en '>>' gebruiken.
tail - Bekijk de laatste regels bvan een bestand.
-10 - Laatste tien regels
telinit - Activeert init en laat init de meegegeven
opdracht uitvoeren.
0-6 - nieuw runlevel
s/S(ingle usermode)
q/Q - re-read inittab
tr - String bewerkingen
-d(elete) - verwijdert alle voorkomende tekens uit str1
-c(omplement)- verandert alle niet in str1 voorkomende tekens.
-s(queeze) - verandert repeterende tekens in één teken.
> tr [optie] str1 str2
dd - Speciaal voor vreemde tapes/disks
if (input file)
of (output file)
ibs (in: blocksize)
obs (out: blocksize)
skip=n (n=aan het begin over ts slaan aantal blokken)
conv=ascii (ebcdic > ascii)
ebcdic (ascii > ebcdic)
lcase (> lowercase)
ucase (> uppercase)
cx - chmod +x
write - schrijf direct op het beldscherm van een user.
w(rite)all
shutdown <seconds>
VI Editor
vi <file>
ZZ - Exit/Save
:q! - Exit/no Save
:!<cmd> - Opdracht uitvoeren
<ESC> - Uit EDIT-modus naar command-modus
h - Cursor links
j - Cursor naar onder
k - Cursor naar boven
l - Cursor rechts
H - Cursor naar eerste regel van het scherm
M - Cursor naar middelste regel van het scherm
L - Cursor naar laatste regel van het scherm
- - Vorige regel
G - Laatste regel van het bestand,
maar ook: 10G - ga naar regel 10.
w/W - Spring 1 woord naar rechts
b/B - Spring 1 woord naar links
e/E - Spring naar het eind van het woord
) - Spring naar begin volgende zin
( - Spring naar begin huidige zin
} - Spring naar begin volgende paragraaf
{ - Spring naar begin huidige paragraaf
a - Start editing, Append modus
i - Start editing, Insert modus
o - Start editing, op nieuwe regel er onder
O - Start editing, op nieuwe regel er boven
r - Start editing, vervang één teken
s - Start editing, vervang één teken, insert modus
C - Start editing, vervang modus hele regel
cw - Start editing, vervang een woord
/ - Start zoeken
^ - Zoek aan het begin van een regel: ^Einde - zoek EINDE
$ - Zoek aan het einde van een regel: Einde$ - zoek EINDE
. - Wildcard, één teken
* - Wildcard, tekenreeks
n - Zoek volgende
N - Zoek volgende de andere kant op
u - Undo
U - Reset regel naar oorspronkelijke waarde
x - Wis teken op de cursor
X - Wis teken vóór de cursor
dw - Wis een woord
dd - Wis huidige regel
D - Wis de rest van regel
yy - Copieer huidige regel naar clipboard
p - Clipboard tekst achter de cursor plakken
P - Clipboard tekst vóór de cursor plakken
CTRL/D - Scroll tekst een 1/2 scherm UP (scherm 'zakt')
CTRL/U - Scroll tekst een 1/2 scherm DOWN (scherm 'stijgt')
CTRL/F - Een heel scherm tekst UP
CTRL/B - Een heel scherm tekst DOWN
Alle verplaatsingsopdrachten kunnen meerdere keren achterelkaar worden
uitgevoerd door het aantal keer vooraf op te geven:
10w - Spring 10 woorden naar rechts
10l - Cursor 10 posities naar rechts
3dw - Verwijder 3x een woord
Alle verwijderde en/of gecopieerde tekst wordt in een buffer
geplaatst (clipboard).
UNIX Password en Group
/etc/passwd
Lay-out:
- username
- wachtwoord[,geldigheidsduur]
- user-ID
- group-ID
- commentaar
- login directory (bevat .profile)
- uit te voeren programma
[,geldigheidsduur] is als volgt opgebouwd:
WwLLWW - W = maximum aantal weken geldig
w = minimum aantal weken geldig
LLWW = weeknummer laatste keer gewijzigd.
Het aantal wordt weergegeven in een 64-tallig stelsel, waarbij
de '.'=0, '/'=1, '0'=2,....,'z'=63
Als W<w mag de gebruiker zijn wachtwoord niet wijzigen.
Bijbehorende opdrachten:
/bin/passwd
/bin/chgown
/bin/pwck
/etc/group
Lay-out:
- groepsnaam
- wachtwoord (bijna altijd leeg)
- group-ID
- username[,username...]
Bijbehorende opdrachten:
/bin/newgrp
/bin/chgrp
/bin/grpck
UNIX-shell help
Variabelen
$? = exit code laatste opdracht
$$ = PID huidige shell
$! = PID laatste background proces
$0 - $9 = positionele parameters, waarbij $0 de opdracht zelf is.
$# = aantal meegegeven parameters
$* = concat van $1 - $9.
Opdrachten
# = commentaarregel
shift = Schuift waarden binnen parameters één parameter naar links.
set = Geeft een waarde aan een parameter en maakt de overige leeg:
set jan piet ==> $1 = jan, $2 = piet, de rest = leeg.
`<opdracht>` = Voert opdracht uit en plaatst returnvalue: workdir=`pwd`
<tekens>() <opdracht>
= Creert een alias voor <opdracht>: logout() exit ==> logout doet nu exit.
export = Maakt variabelen buiten de batchfile waarneembaar: TERM=vt100; export TERM
setenv = Idem als EXPORT, doch een andere shell: setenv TERM vt100
Statements
<condition> kan een returnvalue van een UNIX opdracht zijn, of van test (zie onder) of een expressie.
if
if <condition>
then
...
...
elif <condition>
then
...
...
else
...
...
fi
for
for <variabele> [in <list of values] (default: in $*)
do
...
[break] springt uit de loop
[continue] voert gelijk de volgende iteratie uit.
...
done
while
while <condition>
do
...
[break] springt uit de loop
[continue] voert gelijk de volgende iteratie uit.
...
done
case
case <variabele> in
<value>)
...
...
;;
<value>)
...
...
;;
esac
Voorbeelden voor <value>:
aap|noot) = aap of noot
[a-z]*) = begint met a-z
*) = alles (in C: default:)
Voorbeeld:
echo Doorgaan J/N
read antw
case antw in
j|J|y|Y) ..... ;;
esac
test
- bestanden onderzoeken:
test -rwxfds <file>
rwx = test autorisatie
f = bestaat het bestand
d = is het een directory
s = staat er iets in het bestand
- strings onderzoeken:
test -z <str> = true als <str> leeg is.
-n = true als <str> niet leeg is.
- argumenten onderzoeken (strings)
test <str1> = <str2>
!=
- argumenten onderzoeken (getallen)
test <getal1> -eq <getal2>
-ne, -le, -ge, -lt, -gt
- conditions
test x -a y = x AND y
-o = x OR y
test kan vervangen worden door [ en ] met spaties er tussen:
[ <getal1> -eq <getal2> ]
[ -z <str> ]
expr
(overal spaties tussen plaatsen)
+, -, \*, /, %(=rest vd deling)
=, !=, \>, \<, \>=, \<=
Crontab, At en Batch
cron
Kijkt of er processen gestart dienen te worden:
- Eenmalig uitvoeren van een opdracht in de achtergrond op een bepaald tijdstip.
(via <at> opgegeven)
- Eenmalig uitvoeren van een opdracht in de achtergrond.
(via <batch> opgegeven)
- Met bepaalde regelmaat werkzaamheden uitvoeren.
(via <crontab> opgegeven)
Directories:
/usr/spool/cron
/usr/lib/cron
/usr/lib/cron/log
Files:
/usr/lib/cron/at.allow (bevatten usernames)
at.deny
cron.allow
cron.deny
Als er een at/cron.allow aanwezig is, wordt niet naar een at/cron.deny
gezocht (en andersom). Indien geen van beide aanwezig is, wordt alleen root
toegestaan.
Voorbeeld opdrachten:
crontab <tabel> - maakt <tabel> actief
-l(ist outstanding jobs)
-r(etreat job)
lay-out van een tabel:
min uur dagnr maand weekdag opdracht
(0-59) (0-23) (1-31) (1-12) (0(zondag)-6)
1 2 3 4 5 6
-----------------------------------------------------------------
0 17 * * 5 Iedere vrijdag, 17:00
30 23 * * * Dagelijks om 23:30
15 5 1 * 5 1e van iedere maand om 05:15
0 22 1 6,12 * 1 jan & 1 dec om 22:00
at
Jobs eindigen op .a
-l(ist outstanding jobs)
-r(etreat job)
at <tijdstip>
<opdracht>
<opdracht>
...
...
<eof>
batch
(= at now)
jobs eindigen op .b