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 eenat/cron.allow
aanwezig is, wordt niet naar eenat/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