Tips en Trucs 2025

De inhoud van mappen weergeven zonder de ls opdracht

De ls opdracht is de meest gebruikte opdracht om bestanden en mappen in Linux en Unix-achtige systemen in een map op te sommen. Er zijn echter ook andere manieren om de inhoud van een map op te sommen zonder de ls opdracht te gebruiken.

Vandaag werken we in een terminal. Start een terminal via (Programmastarter > Systeem > Konsole (Terminal)).

Om te testen maken we eerst een testmap aan:

dany@pindabook:~$ mkdir -p "pindanet/map/map in map"

De map openen we met de opdracht:

dany@pindabook:~$ cd pindanet

En de testbestanden zelf maken we aan met:

dany@pindabook:~/pindanet$ touch tekst.txt audio.mp3 linux.pdf debian.odt afbeelding.jpg .verborgen.txt archief.zip map/"tekst in map.txt"

Bestanden weergeven met echo

De echo opdracht is de meest gebruikte ingebouwde opdracht die wordt gebruikt in shell scripts en batch programma's om de gegeven argumenten weer te geven. Je kunt elke tekst/string als argument opgeven en de echo opdracht zal deze weergeven op de standaarduitvoer of in een bestand. Deze opdracht is niet alleen bedoeld om de gegeven argumenten af te drukken, maar kan ook worden gebruikt om bestanden op te sommen.

Om bestanden in de huidige directory op te sommen met echo, typ je gewoon:

dany@pindabook:~/pindanet$ echo *
afbeelding.jpg archief.zip audio.mp3 debian.odt linux.pdf map tekst.txt

Om alle bestanden een niveau lager op te sommen, gebruik je deze opdracht:

dany@pindabook:~/pindanet$ echo */*
map/map in map map/tekst in map.txt

Voer het volgende uit om ook de verborgen bestanden (naam begint met een .) weer te geven:

dany@pindabook:~/pindanet$ echo * .*
afbeelding.jpg archief.zip audio.mp3 debian.odt linux.pdf map tekst.txt .verborgen.txt

Raadpleeg de man pagina's voor meer details.

dany@pindabook:~/pindanet$ man echo

ECHO(1)                   Opdrachten voor gebruikers                   ECHO(1)

NAAM
      echo - toon een regel tekst

SAMENVATTING
      echo [KORTE_OPTIE]... [TEKENREEKS]...
      echo LANGE_OPTIE

BESCHRIJVING
      Stuurt de gegeven TEKENREEKS(en) naar standaard uitvoer.

      -n     regel afsluiten zonder nieuwe regel-teken

      -e     interpretatie van backslash escape-tekens inschakelen

      -E     interpretatie    van    backslash   escape-tekens   uitschakelen
             (standaard)

      --help toon de helptekst en stop

      --version
             toon programmaversie en stop
Manual page echo(1) line 1 (press h for help or q to quit)

Zoals je kunt zien geeft de echo opdracht alleen bestanden weer, geen mappen. Geen probleem, de volgende methode laat zien hoe je zowel bestanden als mappen kunt weergeven.

Bestanden en mappen weergeven met printf

De printf opdracht wordt gebruikt om tekst op te maken en weer te geven. Deze opdracht drukt de gegeven argumenten af volgens het gegeven formaat of voert ze uit volgens de gegeven optie.

Voer de volgende printf opdracht uit om de inhoud van de huidige map weer te geven:

dany@pindabook:~/pindanet$ printf '%s\n' *
afbeelding.jpg
archief.zip
audio.mp3
debian.odt
linux.pdf
map
tekst.txt

In tegenstelling tot de echo opdracht, zal de printf opdracht zowel bestanden als mappen weergeven.

Raadpleeg de man pagina's of de hier getoonde --help optie voor meer details.

dany@pindabook:~/pindanet$ printf --help
printf: printf [-v VARIABELE] OPMAAK [ARGUMENTEN]
   Argumenten volgens een opmaakvoorschrift opmaken en printen.

   Print de gegeven ARGUMENTEN, opgemaakt volgens de gegeven OPMAAK.

   Optie:
     -v VAR   de uitvoer in de variabele VAR plaatsen in plaats van deze
                naar standaarduitvoer te sturen

   De OPMAAK-tekenreeks bestaat uit drie soorten tekens: gewone tekens,
   die simpelweg naar standaarduitvoer gekopieerd worden; stuurtekens,
   die omgezet worden en dan naar standaarduitvoer gekopieerd worden;
   en opmaaksymbolen, die elk steeds het volgende argument doen printen.

   Naast de standaard %-opmaaksymbolen van printf(1), "diouxXfeEgGcs",
   betekent %b dat de backslash-stuurtekens in het betreffende argument
   omgezet moeten worden, en betekent %q dat het argument op zo'n manier
   aangehaald moet worden dat het als invoer voor de shell hergebruikt
   kan worden.  %Q is als %q, maar een precisie wordt toegepast op het
   onaangehaalde argument vóór het aanhalen.  Verder betekent %(OPMAAK)T
   dat datum-plus-tijd getoond moet worden door deze opmaak aan strftime(3)
   mee te geven.

   De gegeven opmaak wordt zo vaak hergebruikt als nodig is om alle argumenten
   te consumeren.  Als er minder argumenten zijn dan de opmaak verwacht, dan
   gedragen de overtollige opmaakspecificaties zich alsof (al naar gelang) de
   waarde nul of een lege tekenreeks gegeven werd.

   De afsluitwaarde is 0, tenzij een ongeldige optie gegeven werd of er een
   schrijf- of toekenningsfout optrad.

Bestanden en mappen weergeven met dir

De dir opdracht is nog een Linux opdracht om de inhoud van een map weer te geven. Het wordt vaak beschouwd als het equivalent van Windows en werkt in Linux op vrijwel dezelfde manier.

Om de inhoud van de huidige map weer te geven, voer je uit:

dany@pindabook:~/pindanet$ dir
afbeelding.jpg  archief.zip  audio.mp3  debian.odt  linux.pdf  map  tekst.txt

Om de inhoud van een specifieke map op te sommen, geef je gewoon het pad als argument door:

dany@pindabook:~/pindanet$ dir ~/pindanet/map/
map\ in\ map  tekst\ in\ map.txt

Alle inhoud weergeven, inclusief verborgen bestanden:

dany@pindabook:~/pindanet$ dir -a
.   afbeelding.jpg  audio.mp3   linux.pdf  tekst.txt
..  archief.zip     debian.odt  map        .verborgen.txt
ls

Bestanden en mappen weergeven met de opdracht find

De opdracht find wordt gebruikt om bestanden te zoeken in een directoryhiërarchie. We kunnen de opdracht find niet alleen gebruiken om bestanden te zoeken, maar ook om de inhoud van mappen weer te geven, zoals hieronder.

dany@pindabook:~/pindanet$ find -maxdepth 1
.
./.verborgen.txt
./map
./archief.zip
./afbeelding.jpg
./linux.pdf
./debian.odt
./tekst.txt
./audio.mp3

Of

dany@pindabook:~/pindanet$ find .
.
./.verborgen.txt
./map
./map/map in map
./map/tekst in map.txt
./archief.zip
./afbeelding.jpg
./linux.pdf
./debian.odt
./tekst.txt
./audio.mp3

Zoals je kunt zien, geeft de eerste opdracht alle bestanden en mappen tot één niveau lager in de huidige map weer, terwijl de tweede opdracht alle bestanden en mappen recursief weergeeft.

Je kunt ook de inhoud van een specifieke map weergeven.

dany@pindabook:~/pindanet$ find map/
map/
map/map in map
map/tekst in map.txt

Bestanden en mappen weergeven met de stat opdracht

De opdracht stat wordt gebruikt om informatie over bestanden en bestandssystemen weer te geven. Met deze opdracht kunnen we onder andere bestandseigenschappen zoals grootte, permissies, aanmaak- en toegangsdatums vinden.

Bestanden en mappen weergeven met de stat opdracht:

dany@pindabook:~/pindanet$ stat -c '%A %n' *
-rw-r--r-- afbeelding.jpg
-rw-r--r-- archief.zip
-rw-r--r-- audio.mp3
-rw-r--r-- debian.odt
-rw-r--r-- linux.pdf
drwxr-xr-x map
-rw-r--r-- tekst.txt

Zoals je kunt zien, geeft de stat opdracht niet alleen de inhoud van de huidige map weer, maar ook de rechten. Het is handig als je de inhoud van de map inclusief de rechten wilt bekijken.

Bestanden en mappen weergeven met grep

De grep opdracht wordt gebruikt om tekstbestanden te doorzoeken met reguliere expressies.

Voer de grep opdracht uit om de inhoud van de map weer te geven:

dany@pindabook:~/pindanet$ grep -l '.*' ./*
grep: ./map: Is een map

Oeps, dit gaat fout. De map wordt weergegeven, maar lege bestanden worden niet weergegeven. Bij het aanmaken van de testbestanden hebben we de touch opdracht gebruikt. De touch opdracht past de toegangtijd en aanpastijd van een bestand aan naar de huidige tijd. Indien het bestand niet bestaat, wordt een leeg bestand aangemaakt.

Om testbestanden met inhoud aan te maken gebruiken de volgende opdracht:

dany@pindabook:~/pindanet$ echo "Inhoud" | tee tekst.txt audio.mp3 linux.pdf debian.odt afbeelding.jpg .verborgen.txt archief.zip map/"tekst in map.txt"
Inhoud

En proberen we nogmaals met grep de inhoud van de huidige map weer te geven:

dany@pindabook:~/pindanet$ grep -l '.*' ./*
./afbeelding.jpg
./archief.zip
./audio.mp3
./debian.odt
./linux.pdf
grep: ./map: Is een map
./tekst.txt

Om de lege testbestanden te herstellen, verwijderen we de testbestanden met inhoud:

dany@pindabook:~/pindanet$ rm tekst.txt audio.mp3 linux.pdf debian.odt afbeelding.jpg .verborgen.txt archief.zip map/"tekst in map.txt"

En maken we deze opnieuw aan met:

dany@pindabook:~/pindanet$ touch tekst.txt audio.mp3 linux.pdf debian.odt afbeelding.jpg .verborgen.txt archief.zip map/"tekst in map.txt"

Bestanden en mappen weergeven met de lsattr opdracht

De opdracht lsattr wordt gebruikt om de attributen van bestanden en mappen onder Linux op te sommen.

Gebruik de opdracht lsattr om bestanden en mappen in de huidige werkmap op te sommen:

dany@pindabook:~/pindanet$ lsattr ./*
--------------e------- ./afbeelding.jpg
--------------e------- ./archief.zip
--------------e------- ./audio.mp3
--------------e------- ./debian.odt
--------------e------- ./linux.pdf
--------------e------- ./map/map in map
--------------e------- ./map/tekst in map.txt
--------------e------- ./tekst.txt

Zoals je in de uitvoer kunt zien, geeft de lsattr opdracht de inhoud slechts één niveau lager weer. Met andere woorden, het toont geen submappen en hun inhoud of verborgen bestanden.

Bestanden en mappen weergeven met de getfacl opdracht

Setfacl en getfacl zijn de handigste en belangrijkste opdrachten die elke systeembeheerder moet kennen om toegangscontrolelijsten (ACL's) van bestanden en mappen in te stellen.

Om de lijst van bestanden en mappen in de huidige map te bekijken, voer je uit:

dany@pindabook:~/pindanet$ getfacl ./*
# file: afbeelding.jpg
# owner: dany
# group: dany
user::rw-
group::r--
other::r--

# file: archief.zip
# owner: dany
# group: dany
user::rw-
group::r--
other::r--

# file: audio.mp3
# owner: dany
# group: dany
user::rw-
group::r--
other::r--

# file: debian.odt
# owner: dany
# group: dany
user::rw-
group::r--
other::r--

# file: linux.pdf
# owner: dany
# group: dany
user::rw-
group::r--
other::r--

# file: map
# owner: dany
# group: dany
user::rwx
group::r-x
other::r-x

# file: tekst.txt
# owner: dany
# group: dany
user::rw-
group::r--
other::r--

Wat ik het leukst vind aan deze opdracht is dat het niet alleen de inhoud van de map weergeeft, maar ook andere nuttige details zoals:

Bestanden en mappen weergeven met for-lus

Een andere methode om de inhoud van mappen op te sommen is door een for-lus te gebruiken. Elke terminal gebruikt een shell programma om o.a. scripts uit te voeren. De meest gebruikte shell is BASH. De volgende for-lus werkte zoals verwacht.

dany@pindabook:~/pindanet$ for i in *; do echo $i; done
afbeelding.jpg
archief.zip
audio.mp3
debian.odt
linux.pdf
map
tekst.txt

Opruimen