Ls: verschil tussen versies

Uit De Vliegende Brigade
Naar navigatie springen Naar zoeken springen
 
(11 tussenliggende versies door dezelfde gebruiker niet weergegeven)
Regel 1: Regel 1:
Commando ''ls'' toont de inhoud van een directory. Bv.:
+
The Bash command <code>ls</code> (from ''list'') displays the content of a folder - It's probably one of the most-used Bash commands. E.g.:
  
 
<pre>
 
<pre>
Regel 8: Regel 8:
 
</pre>
 
</pre>
  
== Aliassen (.bashrc) ==
+
== Use cases ==
  
alias ll="ls -lhA" # Details + leesbare bestandsgrootte
+
=== Limit output to only 1 column ===
 +
 
 +
By default, the output of <code>ls</code> 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 <code>ls</code> to a file): <code>ls -1</code>. E.g.:
 +
 
 +
<pre>
 +
$ 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
 +
</pre>
  
 
== Switches ==
 
== Switches ==
Regel 32: Regel 62:
 
ls -A
 
ls -A
 
</pre>
 
</pre>
 +
 +
=== -C ===
 +
 +
Wordt toegepast in .bashrc-alias <code>l</code>. Ik zie geen verschil.
 +
 +
=== -F, --classify ===
 +
 +
* Append indicator (one of */=>@|) to entries
 +
* Misschien handig voor filteren e.d.?
  
 
=== -long ===
 
=== -long ===
Regel 84: Regel 123:
 
Hier zie je hoe symlinks worden weergegeven. Merk op dat sommige bestemmingen eindigen op <code>/</code>, en anderen niet. Misschien is dat hoe de symlinks waren gedefineerd?
 
Hier zie je hoe symlinks worden weergegeven. Merk op dat sommige bestemmingen eindigen op <code>/</code>, en anderen niet. Misschien is dat hoe de symlinks waren gedefineerd?
  
=== -h ===
+
=== -h, --human-readable ===
  
 
Met bestandsgroottes in een leesbaar formaat (<code>h</code> staat voor ''human''):
 
Met bestandsgroottes in een leesbaar formaat (<code>h</code> staat voor ''human''):
Regel 98: Regel 137:
 
</pre>
 
</pre>
  
=== -R ===
+
=== -R, --recursive ===
  
 
Recursief:
 
Recursief:
Regel 107: Regel 146:
  
 
De inhoud van symlinks worden echter niet getoond.
 
De inhoud van symlinks worden echter niet getoond.
 +
 +
== Combinaties & aliassen ==
 +
 +
=== l ===
 +
 +
<code>.bashrc</code>:
 +
 +
<pre>
 +
alias l="ls -CF"
 +
</pre>
 +
 +
* <code>-C</code> - "list entries by columns" - Geen idee. Ik zie geen verschil met gewoon <code>ls</code>
 +
* <code>-F</code> - Append indicator (one of */=>@|) to entries) - Waarschijnlijk handig bij filteren.
 +
 +
=== la ===
 +
 +
<code>.bashrc</code>:
 +
 +
<pre>
 +
alias la="ls -A"
 +
</pre>
 +
 +
Als <code>ls</code>, maar inclusief dot-files (behalve <code>.</code> en <code>..</code>).
 +
 +
=== ll ===
 +
 +
<code>.bashrc</code>:
 +
 +
<pre>
 +
alias ll="ls -lhA"
 +
</pre>
 +
 +
* lang format
 +
* human-readable
 +
* Inclusief dot-files, behalve <code>.</code> en <code>..</code>.
 +
 +
=== Alleen aliassen weergeven ===
 +
 +
Dit lijkt niet direct te kunnen. Elegante indirecte oplossing:
 +
 +
<pre>
 +
ls -l | grep ^l
 +
</pre>
 +
 +
Boeiend dat je zo gemakkelijk een reguliere expressie kunt toepassen icm. <code>grep</code>.
  
 
== Argument list too long-error (juni 2019) ==
 
== Argument list too long-error (juni 2019) ==
Regel 119: Regel 203:
  
 
Zie [[Cp]] voor details.
 
Zie [[Cp]] voor details.
 
  
 
== Bronnen ==
 
== Bronnen ==
  
 
* http://stackoverflow.com/questions/15854332/file-size-in-human-readable-format
 
* http://stackoverflow.com/questions/15854332/file-size-in-human-readable-format

Huidige versie van 5 okt 2023 om 11:46

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