Commando’s

  • Zoek vooreerst in de man-pages van man welke de default editor (PAGER) is voor het tonen van de man-pages (man PAGER). Een PAGER zal een lange tekst opdelen in pagina’s zodanig dat je er kan door scrollen tijdens het raadplegen van de helpfunctie. Hoe open je de man-pages die de mogelijkheden van deze editor beschrijven.
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

linssenjack@hq-ml-vm-001:~$ man PAGER
linssenjack@hq-ml-vm-001:~$
LESS(1)                     General Commands Manual                    LESS(1)
NAME
       less - opposite of more
SYNOPSIS
       less -?
       less --help
       less -V
       less --version
       less [-[+]aABcCdeEfFgGiIJKLmMnNqQrRsSuUVwWX~]
            [-b space] [-h lines] [-j line] [-k keyfile]
            [-{oO} logfile] [-p pattern] [-P prompt] [-t tag]
            [-T tagsfile] [-x tab,...] [-y lines] [-[z] lines]
            [-# shift] [+[+]cmd] [--] [filename]...
       (See  the  OPTIONS section for alternate option syntax with long option
       names.)
DESCRIPTION
       Less is a program similar to more (1), but it has many  more  features.
       Less  does  not  have to read the entire input file before starting, so
       with large input files it starts up faster than text  editors  like  vi
       (1).  Less uses termcap (or terminfo on some systems), so it can run on
 Manual page pager(1) line 1 (press h for help or q to quit)
  • Hoe vraag je ingebouwde help in de less editor, en dus ook in alle man-pages? Hoe sluit je dit help-venster?
 Manual page pager(1) line 1 (press h for help or q to quit)
  • Met welk van volgende commando’s cpddlnmktemptouch of cat kun je vlug een aantal (lege) bestanden aanmaken (create), waarvan de namen als parameters van het commando worden opgegeven. Gebruik de man-pages.
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

linssenjack@hq-ml-vm-001:~$ touch bestandsnaam
linssenjack@hq-ml-vm-001:~$
  • Op welke 2 manieren kan je door gebruik te maken van het cd commando naar jouw home-map terugkeren?
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

linssenjack@hq-ml-vm-001:~$ cd

linssenjack@hq-ml-vm-001:~$ cd $HOME
linssenjack@hq-ml-vm-001:~$ cd ~
linssenjack@hq-ml-vm-001:~$ cd ~/
linssenjack@hq-ml-vm-001:~$
  • Maak de map /home/<gebruiker>/linux/man/map aan met 1 enkel commando (gebruik mkdir) zonder eerst de afzonderlijke submappen aan te maken.
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

linssenjack@hq-ml-vm-001:~$ mkdir -p linux/man/map
linssenjack@hq-ml-vm-001:~$
  • Maak in de map uit vraag 5 een bestaand aan met als naam teverwijderen.txt. Verwijder nu de map /home/<gebruiker>/linux/(rmdir). Lukt dit zomaar zonder opties? Indien niet, waarom niet? Gebruik het commando rm om de map (en alle submappen) toch in 1 keer kan verwijderd worden. Hoe kan je controleren of de map en submappen effectief verwijdert zijn?
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

linssenjack@hq-ml-vm-001:~$ mkdir -p linux/man/map
linssenjack@hq-ml-vm-001:~$ touch linux/man/map/teverwijderen.txt
linssenjack@hq-ml-vm-001:~$ rmdir linux
rmdir: kan ‘linux’ niet verwijderen: Map is niet leeg
linssenjack@hq-ml-vm-001:~$ rm -rf /home/linssenjack@hq-ml-vm-001/linux
linssenjack@hq-ml-vm-001:~$ find linux
linssenjack@hq-ml-vm-001:~$
  • Maak een nieuwe gebruiker test aan (useradd) die als home-map /dit/is/mijn/home/test zal gebruiken. Vul een wachtwoord in en bevestig dit. Andere velden mag je leeglaten en maak de gebruiker aan. Log nu aan in een tekstuele terminal (ctrl + alt + F1) als de gebruiker test. Eens je aangemeld bent verifieer je of je wel degelijk in de juist home map zit. Hiervoor gebruik je het commando echo $HOME of echo $PWD. Probeer het wachtwoord van deze gebruiker te wijzigen via passwd. Log daarna uit (logout). Keer terug naar jouw grafische omgeving. Zoek het commando om de gebruiker test te verwijderen en voer dit uit. Controleer daarna via een tekstuele terminal of de gebruiker effectief is verwijdert door te proberen aanmelden. Is zijn home-map ook weg?
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

linssenjack@hq-ml-vm-001:~$ sudo mkdir -p /dit/is/mijn/home/
[sudo] password for linssenjack:
linssenjack@hq-ml-vm-001:~$ sudo useradd -d /dit/is/mijn/home/test -m test
linssenjack@hq-ml-vm-001:~$
test@hq-ml-vm-001:~$ passwd test
Wachtwoord aan het wijzigen voor test
(huidig) UNIX-wachtwoord:
Nieuw UNIX-wachtwoord invoeren:
Nieuw UNIX-wachtwoord herhalen:
passwd: wachtwoord is met succes aangepast
test@hq-ml-vm-001:~$
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

linssenjack@hq-ml-vm-001:~$ sudo adduser --home /dit/is/mijn/home/map test
[sudo] password for linssenjack:
Gebruiker `test' toevoegen...
Toevoegen nieuwe groep `test' (1001).
Nieuwe gebruiker `test' (1001) met groep `test' toevoegen...
Thuismap `/dit/is/mijn/home/map' aanmaken...
Kopiëren bestanden van `/etc/skel' ...
Nieuw UNIX-wachtwoord invoeren:
Nieuw UNIX-wachtwoord herhalen:
passwd: wachtwoord is met succes aangepast
De gebruikersinformatie van test wordt veranderd
Voer een nieuwe waarde in of druk op Enter voor de standaardwaarde
Volledige naam []:
Kamernummer []:
Telefoon werk []:
Telefoon thuis []:
Varia []:
Is deze informatie correct? [Y/n] Y
linssenjack@hq-ml-vm-001:~$

# Het commando adduser maakt de gebruiker aan met het volledige pad en vraagt aansluitend ook een gebruikerswachtwoord op te geven.
  • Zoek in de man-pages alle beschikbare informatie over het bestand passwd. Indien je geen optie gebruikt bij het oproepen van de man-pages zal je enkel informatie bekomen over het commando passwd, en niet over het bestand. Zoek een extra optie voor het man commando, zodat je enkel sectie 5 raadpleegt.
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

linssenjack@hq-ml-vm-001:~$ man 5 passwd
linssenjack@hq-ml-vm-001:~$ 

PASSWD(5)                File Formats and Conversions                PASSWD(5)
NAME
       passwd - the password file
DESCRIPTION
       /etc/passwd contains one line for each user account, with seven fields
       delimited by colons (“:”). These fields are:
       ·   login name
       ·   optional encrypted password
       ·   numerical user ID
       ·   numerical group ID
       ·   user name or comment field
       ·   user home directory
       ·   optional user command interpreter
 Manual page passwd(5) line 1 (press h for help or q to quit)
  • Waar vind je het bestand passwd ? Bekijk de inhoud ervan.
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

linssenjack@hq-ml-vm-001:~$ more /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologi
n
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
systemd-timesync:x:100:104:systemd Time Synchronization,,,:/run/systemd:/bin/fal
se
systemd-network:x:101:105:systemd Network Management,,,:/run/systemd/netif:/bin/
false
systemd-resolve:x:102:106:systemd Resolver,,,:/run/systemd/resolve:/bin/false
systemd-bus-proxy:x:103:107:systemd Bus Proxy,,,:/run/systemd:/bin/false
syslog:x:104:110::/home/syslog:/bin/false
messagebus:x:105:112::/var/run/dbus:/bin/false
uuidd:x:106:113::/run/uuidd:/bin/false
avahi:x:107:116:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false
dnsmasq:x:108:65534:dnsmasq,,,:/var/lib/misc:/bin/false
whoopsie:x:109:118::/nonexistent:/bin/false
avahi-autoipd:x:110:122:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false
speech-dispatcher:x:111:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/
false
kernoops:x:112:65534:Kernel Oops Tracking Daemon,,,:/:/bin/false
pulse:x:113:124:PulseAudio daemon,,,:/var/run/pulse:/bin/false
rtkit:x:114:126:RealtimeKit,,,:/proc:/bin/false
saned:x:115:127::/var/lib/saned:/bin/false
usbmux:x:116:46:usbmux daemon,,,:/var/lib/usbmux:/bin/false
colord:x:117:128:colord colour management daemon,,,:/var/lib/colord:/bin/false
hplip:x:118:7:HPLIP system user,,,:/var/run/hplip:/bin/false
lightdm:x:119:129:Light Display Manager:/var/lib/lightdm:/bin/false
linssenjack:x:1000:1000:Jack Linssen,,,:/home/linssenjack:/bin/bash
linssenjack@hq-ml-vm-001:~$
  • Wat verschijnt er op het scherm indien je de opdracht head /etc/passwd uitvoert? Vergelijk deze uitvoer met cat /etc/passwd.
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

linssenjack@hq-ml-vm-001:~$ head /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
linssenjack@hq-ml-vm-001:~$ 

# head /etc/passwd toont enkel de eerste 10 regels
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

linssenjack@hq-ml-vm-001:~$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
systemd-timesync:x:100:104:systemd Time Synchronization,,,:/run/systemd:/bin/false
systemd-network:x:101:105:systemd Network Management,,,:/run/systemd/netif:/bin/false
systemd-resolve:x:102:106:systemd Resolver,,,:/run/systemd/resolve:/bin/false
systemd-bus-proxy:x:103:107:systemd Bus Proxy,,,:/run/systemd:/bin/false
syslog:x:104:110::/home/syslog:/bin/false
messagebus:x:105:112::/var/run/dbus:/bin/false
uuidd:x:106:113::/run/uuidd:/bin/false
avahi:x:107:116:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false
dnsmasq:x:108:65534:dnsmasq,,,:/var/lib/misc:/bin/false
whoopsie:x:109:118::/nonexistent:/bin/false
avahi-autoipd:x:110:122:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false
speech-dispatcher:x:111:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/false
kernoops:x:112:65534:Kernel Oops Tracking Daemon,,,:/:/bin/false
pulse:x:113:124:PulseAudio daemon,,,:/var/run/pulse:/bin/false
rtkit:x:114:126:RealtimeKit,,,:/proc:/bin/false
saned:x:115:127::/var/lib/saned:/bin/false
usbmux:x:116:46:usbmux daemon,,,:/var/lib/usbmux:/bin/false
colord:x:117:128:colord colour management daemon,,,:/var/lib/colord:/bin/false
hplip:x:118:7:HPLIP system user,,,:/var/run/hplip:/bin/false
lightdm:x:119:129:Light Display Manager:/var/lib/lightdm:/bin/false
linssenjack:x:1000:1000:Jack Linssen,,,:/home/linssenjack:/bin/bash
linssenjack@hq-ml-vm-001:~$  

# cat /etc/passwd toont alle regels
  • Zoek nu het verwante commando dat de laatste lijnen van een bestand op het scherm toont. Zoek verder naar de juiste opties(s), zodat je steeds de laatste regels op het scherm houdt, indien het bestand door een ander proces achteraan wordt aangevuld ?
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

linssenjack@hq-ml-vm-001:~$ tail -f <bestandsnaam>
linssenjack@hq-ml-vm-001:~$
  • Welke opties moet je toevoegen aan het commando wc om enkel de grootte van een bestand te tonen (zonder andere informatie). Verifieer deze grootte met ls -l voor het bestand /etc/passwd.
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

linssenjack@hq-ml-vm-001:~$ ls -l /etc/passwd
-rw-r--r-- 1 root root 2217 jan 11 19:42 /etc/passwd
linssenjack@hq-ml-vm-001:~$
linssenjack@hq-ml-vm-001:~$ wc -c /etc/passwd
2217 /etc/passwd
linssenjack@hq-ml-vm-001:~$ wc --bytes /etc/passwd
2217 /etc/passwd
linssenjack@hq-ml-vm-001:~$
  • Met welke optie(s) kun je er bij de uitvoering van het cp commando voor zorgen dat je interactief gevraagd wordt of een bestand in de doeldirectory mag overschreven worden, indien dit reeds zou bestaan? Test dit ook effectief uit voor een bestand in je homemap.
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

linssenjack@hq-ml-vm-001:~$ cp --help
Gebruik: cp [OPTIE...] [-T] BRON BESTEMMING
     of: cp [OPTIE...] BRON... MAP
     of: cp [OPTIE...] -t MAP BRON...
Kopieert een BRON naar een BESTEMMING, of BRON(nen) naar een MAP.

(Een verplicht argument bij een lange optie geldt ook voor de korte vorm.)

  -i, --interactive voor overschrijven om toestemming vragen

linssenjack@hq-ml-vm-001:~$ cp -i <bron> <map>
linssenjack@hq-ml-vm-001:~$ cp -interactive <bron> <map>
linssenjack@hq-ml-vm-001:~$
  • Hoe kan je met het commando date de systeemtijd op het scherm krijgen in de vorm ‘dd/mm/jjjj uu:mm:ss‘.
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

linssenjack@hq-ml-vm-001:~$ date '+%d/%m/%Y %H:%M:%S'
11/01/2016 20:41:26
linssenjack@hq-ml-vm-001:~$ date '+%D %T'
01/11/16 20:41:47
linssenjack@hq-ml-vm-001:~$ date +'%D %T'
01/11/16 20:41:57
linssenjack@hq-ml-vm-001:~$

Redirection

Piping

Variabelen

  • Naast gekende shellvariabelen, zoals PATH kan je zelf shell-variabelen toevoegen. Tenzij je de declare opdracht gebruikt, zijn ze steeds van het type string. Er wordt onderscheid gemaakt tussen hoofdletters en kleine letters. Voer de volgende commando’s uit :
    • Toon PATH als string en toon alle opgeslagen padnamen opgeslagen in de variabele in $PATH
    • Toon dag als string en $dag als variabele die op dit moment leeg is.
    • Toon dag als string en de variabele $dag welke de inhoud van een string jan heeft.
    • Toon een lijst van alle huidig gedefinieerde variabelen en hun inhoud, alle methodes en hun code
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

linssenjack@hq-ml-vm-001:~$ echo PATH $PATH
PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/loc
al/games
linssenjack@hq-ml-vm-001:~$ echo dag $dag
dag
linssenjack@hq-ml-vm-001:~$ dag=jan
linssenjack@hq-ml-vm-001:~$ echo dag $dag
dag jan
linssenjack@hq-ml-vm-001:~$ set
BASH=/bin/bash
BASHOPTS=checkwinsize:cmdhist:complete_fullquote:expand_aliases:extglob:extquote
:force_fignore:histappend:interactive_comments:progcomp:promptvars:sourcepath
BASH_ALIASES=()
BASH_ARGC=()
//
Some results are ommitted
//

local quoted;
_quote_readline_by_ref "$1" ret;
printf %s "$ret"
}
  • Definieer zelf de variabele date met een willekeurige datum als inhoud. Wat is het verschil tussen $date$(date) en ${date} ? Onderzoek dit met behulp van het commando echo. Je kan bijvoorbeeld je eerste script schrijven met de volgende regels:
    • Zet de variabele date op de waarde 21/10/2004
    • Toon de string ‘$date’ en de variabele $date met als inhoud 21/10/2004
    • Toon de string ‘$date’ en de variabele $date met als inhoud 21/10/2004
    • Toon de string ‘$(date)’ en de systeemvariabele (date) met de systeemtijd
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

linssenjack@hq-ml-vm-001:~$ date="21/10/2004"
linssenjack@hq-ml-vm-001:~$ echo '$date :' $date
$date : 21/10/2004
linssenjack@hq-ml-vm-001:~$ echo '${date} :' ${date}
${date} : 21/10/2004
linssenjack@hq-ml-vm-001:~$ echo '$(date) :' $(date)
$(date) : do jan 14 21:18:35 CET 2016

Scripting

  • Schrijf een script dat telt tot van 1 tot 10
#!/bin/bash
# oefening_een.sh

for ((teller=0; "${teller}" < 10; teller+=1 ))
do
echo "${teller}"
done
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

linssenjack@hq-ml-vm-001:~$ bash oefening_een.sh
0
1
2
3
4
5
6
7
8
9
linssenjack@hq-ml-vm-001:~$
  • Schrijf een script dat telt van a tot en met b waarbij a de eerste meegegeven parameter is ($1) en b de tweede aan het script ($2)
    Voorbeelduitvoer voor “bash oefening_twee.sh 2 4”
    2
    3
    4
#!/bin/bash
# oefening_twee.sh

a=$1
b=$2
echo Script dat telt van $1 tot en met $2:
for ((a; a <= b; a+=1 ))
do
echo "$a"
done

To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

linssenjack@hq-ml-vm-001:~$ bash oefening_twee.sh 1 2
Script dat telt van 1 tot en met 2:
1
2
linssenjack@hq-ml-vm-001:~$
  • Pas nu het script uit de vorige oefening aan en voeg controle op de invoer toe. Zolang de waarde van $1 groter is dan $2 vraag je aan de gebruiker een waarde.
    Voorbeelduitvoer voor “bash oefening_drie.sh 5 2”
    5 is groter dan 2, geef een nieuwe startwaarde in: >> 1
    Script dat telt van 1 tot en met 2:
    1
    2
#!/bin/bash
# oefening_drie.sh

if [ "$#" -ne 2 ]
then
echo "Gelieve twee parameters op te geven!"
exit 1
fi
a=$1
b=$2
while [ "$a" -ge "$b" ]; do
echo $a is groter dan $b, geef een nieuwe startwaarde op:
echo -n ">>"
read a
echo
done
echo Script dat telt van $a tot en met $b:
for ((a; a <= b; a+=1 ))
do
echo "$a"
done
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

linssenjack@hq-ml-vm-001:~$ bash oefening_drie.sh
Gelieve twee parameters op te geven!
linssenjack@hq-ml-vm-001:~$ bash oefening_drie.sh 2 2
2 is groter dan 2, geef een nieuwe startwaarde op:
>>1

Script dat telt van 1 tot en met 2:
1
2
linssenjack@hq-ml-vm-001:~$
  • Schrijf een bashscript dat voldoet aan volgende voorwaarden:
    • Druk volgende tekst “Naam van het script:” af samen met de naam van het script op het scherm
    • Druk volgende tekst “# parameters:” af samen met het aantal parameters af op het scherm
    • Plaats de meegegeven parameters in een array
    • Druk met een herhalingsstructuur alle parameters op een even positie af (dus parameter 2, 4, …)
    • Voorbeelduitvoer voor “bash oefening_vier.sh een twee drie vier vijf zes”
      Naam van het script: oefening_vier.sh
      # parameters: 6
      twee vier zes