home       inleiding       sysadmin       services       links       bash       werk       nothing      

Behalve basishandelingen en basiscommando's zijn er ook nog enkele essentieële begrippen, zoals wildcards, path, opties, piping en redirection die hieronder behandeld worden.
 

  1. wildcards
     
    Er zijn twee wildcard tekens.
    De belangrijkste is de * (asterisk)
    De tweede wildcard is ? (vraagteken)
      
    Waar je de wildcard * plaatst wordt deze opgevuld door om het even wat met om het even welke lengte, ook lengte nul.
     
    Indien er een directory oefening2 bestaat, zal het volgende commando alle bestanden in de huidige directory copieren naar de subdirectory oefening2:
    jan@cassandra ~ $ cp * oefening2

    Het volgende commando brengt alle files en directories die beginnen met de kleine letter a uit directory /etc op scherm.

    jan@cassandra ~ $ ls -d /etc/a*
    drwxr-xr-x 3 root root    4096 2010-04-27 12:28 /etc/acpi
    -rw-r--r-- 1 root root    2981 2010-04-27 12:03 /etc/adduser.conf
    drwxr-xr-x 2 root root    4096 2010-05-23 23:21 /etc/akonadi
    drwxr-xr-x 2 root root   12288 2010-07-30 11:49 /etc/alternatives
    -rw-r--r-- 1 root root     395 2010-03-05 03:31 /etc/anacrontab
    drwxr-xr-x 7 root root    4096 2010-05-25 21:09 /etc/apache2
    drwxr-xr-x 6 root root    4096 2010-04-27 12:13 /etc/apm
    drwxr-xr-x 3 root root    4096 2010-05-02 19:41 /etc/apparmor
    drwxr-xr-x 5 root root    4096 2010-07-07 23:37 /etc/apparmor.d
    drwxr-xr-x 4 root root    4096 2010-05-24 10:26 /etc/apport
    drwxr-xr-x 6 root root    4096 2010-05-23 22:37 /etc/apt
    -rw-r----- 1 root daemon   144 2010-03-05 03:42 /etc/at.deny
    drwxr-xr-x 3 root root    4096 2010-04-27 12:29 /etc/avahi

    Het volgende commando verplaatst alle files uit de home directory die beginnen met coldplay en eindigen op mp3 naar de directory Music

    jan@cassandra ~ $ mv ~/coldplay*mp3 ~/Music

    De tweede wildcard is ? (vraagteken). Het vraagteken vervangt telkens 1 en slechts 1 karakter.
     
    Het volgende commando brengt alle files en directories uit /etc op scherm met exact 8 karakters en die beginnen met de letter s:

    jan@cassandra ~ $ ls -ld /etc/s???????
    -rw-r--r-- 1 root root  3663 2009-11-10 19:54 /etc/screenrc
    drwxr-xr-x 4 root root  4096 2010-07-10 23:54 /etc/security
    -rw-r--r-- 1 root root 18832 2009-12-03 17:11 /etc/services
    drwxr-xr-x 2 root root  4096 2010-04-27 12:03 /etc/sysctl.d

     

  2. absoluut/relatief path
     
    In een path worden directories van mekaar gescheiden door de / (slash)
     
    Alle bestanden bevinden zich op een linux machine ergens in een directory. Dat kan bijvoorbeeld je home-directory zijn. Indien je aan het werken bent op een linux terminal, bevindt je terminal zich in een bepaalde directory. We noemen deze vaak de huidige directory of de working directory. De huidige directory kunnen we op scherm kunnen brengen met pwd. Het commando pwd geeft altijd de absolute path naar je huidige directory.
     
    Veronderstel dat er een file genaamd copyrc.tar.gz bestaat die zich bevindt in de subdirectory backups van de home directory van jan.
    Het absolute path naar copyrc.tar.gz is dan /home/jan/backups
     
    Als jij je op dat ogenblik bevindt in de subdirectory Desktop van de home directory van jan (/home/jan/Desktop), dan is het relatieve path naar copyrc.tar.gz gelijk aan ../backups
     
    Bevind ik mij in een terminalvenster in de home directory van jan dan is mijn relatief path naar copyrc.tar.gz simpelweg gelijk aan backups
     
    Je home directory wordt dikwijls afgekort tot ~ (tilde)
    Je huidige directory wordt aangegeven met . (de punt)
    Je parent directory wordt aangegeven met ..
     
    Vanuit de directory Desktop in het hogere voorbeeld is het relatieve path naar /home/karl gelijk aan ../../karl
     
  3. opties
     
    Met de nodige opties kun je het gedrag of het output-formaat van een commando aanpassen. We hebben reeds rm -r en ls -l vermeld, maar er zijn er nog een paar belangrijke:
     
    rm -r verwijdert recursief files en directories
    rm -v verbose: brengt op scherm welke acties werden ondernomen
    ls -l geeft een zogenaamde longlist van een directory met vermelding van permissions, eigenaar, groep, grootte, modification date en natuurlijk ook de filenaam
    ls -a geeft eveneens hidden files weer
    ls -R geeft eveneens de inhoud van alle subdirectories weer
    mv -v brengt op scherm welke acties werden ondernomen
    cp -r copieert inclusief alle subdirectories
    cp -p bewaart alle file eigenschappen
    cp -v brengt op scherm welke acties werden ondernomen
     
    Je kan opties bij elkaar combineren.
    Voorbeeld: ls -alR is hetzelfde als ls -a -R -l

    De volgorde van de opties is dikwijls niet van belang.
     

  4. symbolic links
     
    Met het commando ln -s maken we symbolic links.
    Een symbolic link is een alias in je filesystem naar een andere file ...
     
    voorbeeld 1:
    jan@cassandra ~ $ nano dit-is-een-text.txt
    jan@cassandra ~ $ ln -s dit-is-een-text.txt link-2-text.txt
    jan@cassandra ~ $ ls -l
    -rw-rw-r-- 1 jan jan   16 Dec  9 10:40 dit-is-een-text.txt
    -rw-r--r-- 1 jan jan 1529 May 21  2016 ipv6-startup2.txt
    lrwxrwxrwx 1 jan jan   19 Dec  9 10:40 link-2-text.txt -> dit-is-een-text.txt
    -rw-r--r-- 1 jan jan  181 Aug  2 23:47 nintendo.txt
    -rw-r--r-- 1 jan jan 2197 Jun 18  2016 osmc_installer_log.txt

    voorbeeld 2:
    jan@cassandra ~ $ ln -s /etc/passwd de-etc-passwd
    jan@cassandra ~ $ ls -l *pass*
     
    lrwxrwxrwx 1 jan jan 11 Dec 9 10:43 de-etc-passwd -> /etc/passwd
     
    jan@cassandra ~ $ tail -n 5 de-etc-passwd

    ftp:x:126:135:ftp daemon,,,:/srv/ftp:/bin/false
    bind:x:127:136::/var/cache/bind:/bin/false
    jan:x:1003:1003::/home/jan:/bin/bash
    student:x:1004:1004::/home/student:
    user:x:999:999:Guest:/home/user:/bin/bash

     

  5. piping
     
    Als we een ls -l commando intikken, komt er vaak veel te veel informatie op ons scherm.
    Tik dit maar eens:
     
    jan@cassandra ~ $ls -l /etc
      
    In veel gevallen biedt de grafische terminal de mogelijkheid om terug te scrollen, maar dit werkt slechts voor 500 tekstregels. Bovendien hebben we niet altijd de beschikking over een grafische terminal, maar werken we op servers dikwijls op een CLI-machine (geen grafisch environment). Gelukkig kunnen we dan de OUTPUT van ls -l PIPEN met | naar de INPUT van less. | is de vertikale streep die je op belgische toetsenborden vindt door <ALTGR><1> in te tikken.
     
    jan@cassandra ~ $ls -l /etc | less
     
    De output van ls -l is de catalog van /etc. Die gebruiken we als ware het een tekstfile, als input voor less. Dat doen we allemaal met het 'pipe'-teken |
     
    We kunnen door het hogere commando omhoog en omlaag scrollen in de directory listing, en zoekfuncties gebruiken die standaard in less aanwezig zijn.
     
    Een andere veel gebruikte pipe is de volgende:
     
    jan@cassandra ~ $ps -A | grep <process-name>
     
    ps -A geeft alle processen weer die draaien op je computer.
    grep zoekt in een file alle regels op die de zoekstring bevatten.
     
    Het volgende voorbeeld geeft de processen weer, met hun PID's (process identifiers) waar de string 'gnome' in voorkomt:

    jan@cassandra ~ $ ps -A | grep gnome
    6478 ?        00:00:00 gnome-keyring-d
    6597 ?        00:00:00 gnome-settings-
    6741 ?        00:00:01 gnome-panel
    6752 ?        00:00:01 gnome-screensav
    6798 ?        00:00:32 gnome-do
    6805 ?        00:00:00 gnome-power-man
    7519 ?        00:00:00 gnome-terminal
    7521 ?        00:00:00 gnome-pty-helpe

     

  6. redirection
     
    Redirection is het versassen van de output van een commando naar een file of een device. Dit is o.a. nuttig indien er logfiles moeten worden aangemaakt en bewaard. Later kan je dan met zoekopdrachten deze logs bekijken.
     
    cassandra jan # tcpdump -i eth0 > dumpfile
     
    tcpdump brengt alle netwerkpakketten op scherm. Door de redirect komt dit terecht in een bestand. Je kan dat bestand later napluizen om te kijken waar bepaalde protocollen vandaan komen (vb.: # grep arp dumpfile haalt alle arp-pakketten uit de dump)
     
    Een andere mogelijkheid is het redirecten van info naar een andere terminal of naar een printer. Maar meestal heb je daar root rechten voor nodig.
     
    Het volgende voorbeeld stuurt de configuratiefile /etc/vsftpd van de ftp-server naar de printer, als je dat tenminste mag:
     
    jan@cassandra ~ $cat /etc/vsftpd > /dev/lp
     
    Als je het volgende commando ingeeft zal cat de standaardinput (toetsenbord) doorsturen naar het bestand testfile. Je kan het commando beëindigen met <CTRL><D> (EOF end of file karakter).
     
    jan@cassandra ~ $cat > testfile
     
    De redirection > wist altijd het originele bestand.
    Informatie toevoegen aan een reeds bestaande file, kun je met >>
    Test dit maar eens uit:
    jan@cassandra ~ $ ls -l / >> ~/catalog_rootdir
    jan@cassandra ~ $ ls -l / >> ~/catalog_rootdir
    jan@cassandra ~ $ cat ~/catalog_rootdir

    Tenslotte kun je ook een tekstbestand gebruiken als input voor een commando. Dit wordt vaak gebruikt in scripts om bestanden te lezen, en uitzonderlijk in dit dikwijls geciteerde maar door mij nooit gebruikte voorbeeld:
     
    jan@cassandra ~ $ mail karl@telenet.com < my_preformatted_mail