Ls

Uit De Vliegende Brigade
Naar navigatie springen Naar zoeken springen
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

The Bash command ls (from list) displays the content of a folder - It's probably one of the most-used Bash commands. E.g.:

ls /

bin   dev  home        initrd.img.old  lib64       media  opt   root  sbin  srv       sys  usr  vmlinuz
boot  etc  initrd.img  lib             lost+found  mnt    proc  run   snap  swapfile  tmp  var  vmlinuz.old

Use cases

Limit output to only 1 column

By default, the output of ls is layout in multiple columns. Sometimes I want this to be only one column, e.g., to copy the contents to a text editor (without first redirecting the output of ls to a file): ls -1. E.g.:

$ ls -1 /

backup
bin
boot
dev
etc
home
lib
lib32
lib64
libx32
lost+found
media
mnt
opt
proc
root
run
sbin
snap
srv
sys
usr
var

Switches

Gewoon, zonder switches - toon directory:

ls

-a, --all

Inclusief dot-files (ook . en ..):

ls -a 

-A, --almost-all

Inclusief dot-files, behalve . en ..:

ls -A

-C

Wordt toegepast in .bashrc-alias l. Ik zie geen verschil.

-F, --classify

  • Append indicator (one of */=>@|) to entries
  • Misschien handig voor filteren e.d.?

-long

Inclusief details:

 ls -long 

-l

Long listing-format - Nog meer informatie dan met -long. Er is geen synoniem met -- voor deze switch.

 ls -l

Voorbeeld:

totaal 384
drwx------ 49 jeroen jeroen 32768 2011-07-18 08:37 1
drwx------ 48 jeroen jeroen 32768 2011-07-19 08:22 2
drwx------ 52 jeroen jeroen 32768 2011-07-06 08:51 3
drwx------ 48 jeroen jeroen 32768 2011-07-21 08:07 4
drwx------ 48 jeroen jeroen 32768 2011-07-15 09:09 5
drwx------ 68 jeroen jeroen 32768 2011-07-23 18:11 6
drwx------ 39 jeroen jeroen 32768 2011-01-23 15:47 7
-rwxr-xr-x  1 jeroen jeroen   430 2011-02-24 20:29 DeVliegendeBackup
-rwxr-xr-x  1 jeroen jeroen   393 2011-07-23 18:20 DeVliegendeBackup.log

Waarbij:

  • De eerste kolom het type object aangeeft. 'd' staat voor 'directory' en '-' voor een bestand;
  • Drie groepen van drie letters (bv. rwxr-xr-x) die de rechten aangeven voor respectievelijk de eigenaar van het object, de leden van de betreffende groep, en de rest van de wereld;
  • Het aantal directories dat een object bevat. Een directory bevat altijd minimaal twee subdirectories, want '.' en '..'. En blijkbaar telt een bestand ook als een directory (zoals op de laatste twee regels);
  • Eigenaar (user) van het object;
  • Groep waaraan het object is toegewezen;
  • Grootte van het object;
  • Datum en tijd waarop het object voor het laatst is gewijzigd;
  • Naam van het object.

Ander voorbeeld (deel van de output):

ls -l

lrwxrwxrwx 1 jeroen jeroen     45 dec 11 11:28 witches-diagrammen-zonder-marge -> witches-too-tools-diagrams-without-margin/
lrwxrwxrwx 1 jeroen jeroen     29 dec 17 15:06 witches-fotos-met-logo -> witches-too-tools-jpg-logo
lrwxrwxrwx 1 jeroen jeroen     37 okt 23 11:46 witches-fotos-zonder-logo -> witches-too-tools-jpg-without-logo
lrwxrwxrwx 1 jeroen jeroen     37 okt 23 11:46 witches-jpeg-zonder-logo -> witches-too-tools-jpg-without-logo
lrwxrwxrwx 1 jeroen jeroen     41 dec 11 12:33 witches-voor-wasmachines -> witches-too-washing-machines-jpg-logo/

Hier zie je hoe symlinks worden weergegeven. Merk op dat sommige bestemmingen eindigen op /, en anderen niet. Misschien is dat hoe de symlinks waren gedefineerd?

-h, --human-readable

Met bestandsgroottes in een leesbaar formaat (h staat voor human):

ls -h

of in combinatie met -l:

ls -lh

-R, --recursive

Recursief:

ls -R

De inhoud van symlinks worden echter niet getoond.

Combinaties & aliassen

l

.bashrc:

alias l="ls -CF"
  • -C - "list entries by columns" - Geen idee. Ik zie geen verschil met gewoon ls
  • -F - Append indicator (one of */=>@|) to entries) - Waarschijnlijk handig bij filteren.

la

.bashrc:

alias la="ls -A"

Als ls, maar inclusief dot-files (behalve . en ..).

ll

.bashrc:

alias ll="ls -lhA"
  • lang format
  • human-readable
  • Inclusief dot-files, behalve . en ...

Alleen aliassen weergeven

Dit lijkt niet direct te kunnen. Elegante indirecte oplossing:

ls -l | grep ^l

Boeiend dat je zo gemakkelijk een reguliere expressie kunt toepassen icm. grep.

Argument list too long-error (juni 2019)

In een map met veel bestanden:

ls Koolborstels*

bash: /bin/ls: Argument list too long

Zie Cp voor details.

Bronnen