Behalve basishandelingen en basiscommando's zijn er ook nog enkele essentieële begrippen, zoals wildcards, path, opties, piping en redirection die hieronder behandeld worden.
- 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 directoryoefening2bestaat, zal het volgende commando alle bestanden in de huidige directory copieren naar de subdirectoryoefening2:jan@cassandra ~ $ cp * oefening2Het volgende commando brengt alle files en directories die beginnen met de kleine letter a uit directory
/etcop 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/avahiHet volgende commando verplaatst alle files uit de home directory die beginnen met coldplay en eindigen op mp3 naar de directory
Musicjan@cassandra ~ $ mv ~/coldplay*mp3 ~/MusicDe tweede wildcard is ? (vraagteken). Het vraagteken vervangt telkens 1 en slechts 1 karakter.
Het volgende commando brengt alle files en directories uit/etcop 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 - 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 metpwd. Het commandopwdgeeft altijd de absolute path naar je huidige directory.
Veronderstel dat er een file genaamdcopyrc.tar.gzbestaat die zich bevindt in de subdirectorybackupsvan de home directory van jan.
Het absolute path naarcopyrc.tar.gzis dan/home/jan/backups
Als jij je op dat ogenblik bevindt in de subdirectoryDesktopvan de home directory van jan (/home/jan/Desktop), dan is het relatieve path naarcopyrc.tar.gzgelijk aan../backups
Bevind ik mij in een terminalvenster in de home directory van jan dan is mijn relatief path naarcopyrc.tar.gzsimpelweg gelijk aanbackups
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/karlgelijk aan../../karl
-
opties
Met de nodige opties kun je het gedrag of het output-formaat van een commando aanpassen. We hebben reedsrm -renls -lvermeld, maar er zijn er nog een paar belangrijke:
rm -rverwijdert recursief files en directories
rm -vverbose: brengt op scherm welke acties werden ondernomen
ls -lgeeft een zogenaamde longlist van een directory met vermelding van permissions, eigenaar, groep, grootte, modification date en natuurlijk ook de filenaam
ls -ageeft eveneens hidden files weer
ls -Rgeeft eveneens de inhoud van alle subdirectories weer
mv -vbrengt op scherm welke acties werden ondernomen
cp -rcopieert inclusief alle subdirectories
cp -pbewaart alle file eigenschappen
cp -vbrengt op scherm welke acties werden ondernomen
Je kan opties bij elkaar combineren.
Voorbeeld:ls -alRis hetzelfde alsls -a -R -lDe volgorde van de opties is dikwijls niet van belang.
- symbolic links
Met het commandoln -smaken 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.txtvoorbeeld 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-passwdftp: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 -
piping
Als we eenls -lcommando 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 vanls -lPIPEN met | naar de INPUT vanless. | is de vertikale streep die je op belgische toetsenborden vindt door<ALTGR><1>in te tikken.
jan@cassandra ~ $ls -l /etc | less
De output vanls -lis de catalog van/etc. Die gebruiken we als ware het een tekstfile, als input voorless. 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 inlessaanwezig zijn.
Een andere veel gebruikte pipe is de volgende:
jan@cassandra ~ $ps -A | grep <process-name>
ps -Ageeft alle processen weer die draaien op je computer.
grepzoekt 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 - 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
tcpdumpbrengt 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 dumpfilehaalt 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/vsftpdvan de ftp-server naar de printer, als je dat tenminste mag:
jan@cassandra ~ $cat /etc/vsftpd > /dev/lp
Als je het volgende commando ingeeft zalcatde 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_rootdirTenslotte 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