ls in 128 seconds

next:

Skript

Notizen

alias ls="ls --help | grep -e --all -e '^ *--color' -e --directory -e --human-readable -e 'long listing format' -e --reverse -e '^ *-S' -e 'sort by time' -e --time= -e 'color the output' # "

intro

ls ist das Standardkommando, um sich im Dateisystem zu orientieren. Es zeigt

  • entweder den Inhalts eines Verzeichnisses an

  • oder die als Argument übergebenen Pfade

user@hostname:~$ ls --help
  -a, --all                  do not ignore entries starting with .
  -d, --directory            list directories themselves, not their contents
  -F, --classify[=WHEN]      append indicator (one of */=>@|) to entries WHEN
  -h, --human-readable       with -l and -s, print sizes like 1K 234M 2G etc.
  -l                         use a long listing format
  -r, --reverse              reverse order while sorting
  -S                         sort by file size, largest first
                               none (-U), size (-S), time (-t),
      --time=WORD            select which timestamp used to display or sort;
  -t                         sort by time, newest first; see --time
call types

Wenn man ls ohne Argumente aufruft, zeigt es den Inhalt des aktuellen Verzeichnisses an.

Wenn man ls mit Pfad-Argumenten aufruft, dann zeigt es bei Verzeichnissen deren Inhalt an.

Wenn man nur Einträge mit bestimmten Namen sehen will, kann man mittels der Shell-Funktionalität pattern matching ls für nur diese Einträge aufrufen.

Wie pattern matching funktioniert, wird in diesem Video erklärt.

user@hostname:~$ ls
Bilder bin Dokumente Downloads

user@hostname:~$ ls /
bin boot dev etc home lib lib64 mnt opt proc root run sbin srv sys tmp usr var

user@hostname:~$ ls *.txt
test.txt
details

Die Ausgabe von ls -l zeigt für jeden Eintrag

  • den Typ an, also vor allem

    • normale Datei

    • Verzeichnis

    • oder symbolischer Link

    außerdem

  • die Standardzugriffsrechte

  • den Besitzer

  • die Gruppe

  • die Größe

  • den Zeitpunkt des letzten Schreibzugriffs

  • den Namen

  • und bei symbolischen Links außerdem den Pfad des Linkziels

Die Linux-Zugriffsrechte werden in diesem Video erklärt.

user@hostname:~$ ls -l ls-test/
total 16
drwxrwx--- 2 testuser testuser 4096 Mar 30 03:34 directory
-rw-rw---- 1 testuser testuser    0 Mar 30 03:33 dir.txt
lrwxrwxrwx 1 testuser testuser    7 Mar 30 22:25 symlink -> dir.txt

die einzelnen Elemente der Ausgabe hervorheben, während sie erwähnt werden – und/oder sie dauerhaft markieren und beschriften

options

Dies sind die wichtigsten Optionen für ls:

user@hostname:~$ ls --help

-l zeigt auch Metadaten an

user@hostname:~$ ls ls-test/v*
ls-test/visible_file  ls-test/visible_file2

user@hostname:~$ ls -l ls-test/v*
-rw-rw---- 1 testuser testuser 8192 Mar 29 20:53 ls-test/visible_file
-rw-rw---- 1 testuser testuser    0 Mar 29 20:55 ls-test/visible_file2

-a zeigt auch die versteckten Einträge an.

eingeblendeter Text: Versteckt sind diejenigen Einträge, deren Name mit einem Punkt beginnt.

user@hostname:~$ testuser@debian-selinux:~$ ls ls-test
directory  visible_file  visible_file2

testuser@debian-selinux:~$ ls -a ls-test
.  ..  directory  .hidden_file  visible_file  visible_file2

testuser@debian-selinux:~$ ls -A ls-test
directory  .hidden_file  visible_file  visible_file2

-d zeigt Verzeichnisargumente selber an, nicht deren Inhalt; das ist vor allem bei pattern matching hilfreich

testuser@debian-selinux:~$ ls -l ls-test/d*
-rw-rw---- 1 testuser testuser    0 Mar 30 03:33 ls-test/dir.txt

ls-test/directory:
total 0
-rw-rw---- 1 testuser testuser 0 Mar 30 03:34 file

user@hostname:~$ ##### with -d

testuser@debian-selinux:~$ ls -d ls-test/d*
ls-test/directory  ls-test/dir.txt

testuser@debian-selinux:~$ ls -ld ls-test/d*
drwxrwx--- 2 testuser testuser 4096 Mar 30 03:34 ls-test/directory
-rw-rw---- 1 testuser testuser    0 Mar 30 03:33 ls-test/dir.txt

-h zeigt Größen nicht in Byte an, sondern in der sinnvollen Einheit, also Kilobyte, Megabyte, Gigabyte

user@hostname:~$ ls -l ls-test/v*
-rw-rw---- 1 testuser testuser 8192 Mar 29 20:53 ls-test/visible_file
-rw-rw---- 1 testuser testuser    0 Mar 29 20:55 ls-test/visible_file2

user@hostname:~$ ls -lh ls-test/v* # --human-readable
-rw-rw---- 1 testuser testuser 8.0K Mar 29 20:53 ls-test/visible_file
-rw-rw---- 1 testuser testuser    0 Mar 29 20:55 ls-test/visible_file2

-1 zeigt nur einen Namen pro Zeile an (was in einer Pipeline allerdings automatisch passiert)

user@hostname:~$ ls ls-test/v*
ls-test/visible_file  ls-test/visible_file2

testuser@debian-selinux:~$ ls -1 ls-test/v*
ls-test/visible_file
ls-test/visible_file2

testuser@debian-selinux:~$ ls -1 ls-test/v* | wc -l
2

--color zeigt den Typ des Eintrags durch die Farbe der Ausgabe an

user@hostname:~$ ls -l --color=never
total 12
drwxrwx--- 2 testuser testuser 4096 Mar 30 03:34 directory
-rw-rw---- 1 testuser testuser    0 Mar 30 03:33 dir.txt
lrwxrwxrwx 1 testuser testuser    7 Mar 30 22:25 symlink -> dir.txt

ls -l --color=auto
total 12
drwxrwx--- 2 testuser testuser 4096 Mar 30 03:34 directory
-rw-rw---- 1 testuser testuser    0 Mar 30 03:33 dir.txt
lrwxrwxrwx 1 testuser testuser    7 Mar 30 22:25 symlink -> dir.txt

-S sortiert die Einträge der Größe nach

user@hostname:~$ ls -l ls-test/v*
-rw-rw---- 1 testuser testuser 8192 Mar 29 20:53 ls-test/visible_file
-rw-rw---- 1 testuser testuser    0 Mar 29 20:55 ls-test/visible_file2
-rw-rw---- 1 testuser testuser   10 Mar 30 22:37 ls-test/visible_file3

testuser@debian-selinux:~$ ls -lS ls-test/v*
-rw-rw---- 1 testuser testuser 8192 Mar 29 20:53 ls-test/visible_file
-rw-rw---- 1 testuser testuser   10 Mar 30 22:37 ls-test/visible_file3
-rw-rw---- 1 testuser testuser    0 Mar 29 20:55 ls-test/visible_file2

-t sortiert die Einträge nach dem Zeitpunkt des letzten Schreibzugriffs

user@hostname:~$ ls -l ls-test/v*
-rw-rw---- 1 testuser testuser 8192 Mar 29 20:53 ls-test/visible_file
-rw-rw---- 1 testuser testuser    0 Mar 30 22:40 ls-test/visible_file2
-rw-rw---- 1 testuser testuser   10 Mar 30 22:37 ls-test/visible_file3

testuser@debian-selinux:~$ ls -lt ls-test/v*
-rw-rw---- 1 testuser testuser    0 Mar 30 22:40 ls-test/visible_file2
-rw-rw---- 1 testuser testuser   10 Mar 30 22:37 ls-test/visible_file3
-rw-rw---- 1 testuser testuser 8192 Mar 29 20:53 ls-test/visible_file

-r kehrt die Sortierreihenfolge um

user@hostname:~$ ls -lt ls-test/v*
-rw-rw---- 1 testuser testuser    0 Mar 30 22:40 ls-test/visible_file2
-rw-rw---- 1 testuser testuser   10 Mar 30 22:37 ls-test/visible_file3
-rw-rw---- 1 testuser testuser 8192 Mar 29 20:53 ls-test/visible_file

testuser@debian-selinux:~$ ls -ltr ls-test/v*
-rw-rw---- 1 testuser testuser 8192 Mar 29 20:53 ls-test/visible_file
-rw-rw---- 1 testuser testuser   10 Mar 30 22:37 ls-test/visible_file3
-rw-rw---- 1 testuser testuser    0 Mar 30 22:40 ls-test/visible_file2
see also

Eine immense Verbesserung für ls – weil man dieses Kommando leicht 100mal pro Tag nutzen kann – sind Shell-Aliase.

  • Man spart immens Tippaufwand: l statt ls -lh

  • Man kann Aliase nutzen, um sich nicht alle Optionen merken zu müssen: Das sieht zwar nach viel Tippaufwand und einem anderen Erinnerungsproblem aus, aber beides erledigt sich durch die Tab-Vervollständigung der Shell.

user@hostname:~$ alias l='ls -lh'

testuser@debian-selinux:~$ l ls-test/
total 16K
drwxrwx--- 2 testuser testuser 4.0K Mar 30 03:34 directory
-rw-rw---- 1 testuser testuser    0 Mar 30 03:33 dir.txt
lrwxrwxrwx 1 testuser testuser    7 Mar 30 22:25 symlink -> dir.txt
-rw-rw---- 1 testuser testuser 8.0K Mar 29 20:53 visible_file
-rw-rw---- 1 testuser testuser    0 Mar 30 22:40 visible_file2
-rw-rw---- 1 testuser testuser   10 Mar 30 22:37 visible_file3

testuser@debian-selinux:~$ alias ls-sortieren-nach-letzter-aenderung='ls -lt'