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"
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.
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.
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
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
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.
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"
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.
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:
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
dany@pindabook:~/pindanet$ cd
dany@pindabook:~$ rm -r pindanet/