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

testuser@learnlinux: ~/ls-test$ ls --help
  -a, --all                  do not ignore entries starting with .
      --color[=WHEN]         color the output WHEN; more info below
  -d, --directory            list directories themselves, not their contents
  -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
      --time=WORD            select which timestamp used to display or sort;
  -t                         sort by time, newest first; see --time

testuser@learnlinux: ~/ls-test$
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.

testuser@learnlinux: ~/ls-test$ ls -l
total 20
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
-rw-rw----. 1 testuser testuser 8192 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@learnlinux: ~/ls-test$

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:

testuser@learnlinux: ~/ls-test$ ls --help | head -20
Usage: ls [OPTION]... [FILE]...
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.

Mandatory arguments to long options are mandatory for short options too.
  -a, --all                  do not ignore entries starting with .
  -A, --almost-all           do not list implied . and ..
      --author               with -l, print the author of each file
  -b, --escape               print C-style escapes for nongraphic characters
      --block-size=SIZE      with -l, scale sizes by SIZE when printing them;
                             e.g., '--block-size=M'; see SIZE format below

  -B, --ignore-backups       do not list implied entries ending with ~
  -c                         with -lt: sort by, and show, ctime (time of last
                             change of file status information);
                             with -l: show ctime and sort by name;
                             otherwise: sort by ctime, newest first

  -C                         list entries by columns
      --color[=WHEN]         color the output WHEN; more info below

testuser@learnlinux: ~/ls-test$

-l zeigt auch Metadaten an

testuser@learnlinux: ~$ ls ls-test/v*
ls-test/visible_file  ls-test/visible_file2  ls-test/visible_file3

testuser@learnlinux: ~$ 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@learnlinux: ~$

-a zeigt auch die versteckten Einträge an.

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

testuser@learnlinux: ~$ ls ls-test
directory  dir.txt  symlink  visible_file  visible_file2  visible_file3

testuser@learnlinux: ~$ ls -a ls-test
.   directory  .hidden_file  symlink       visible_file2
..  dir.txt    visible_file  visible_file3

testuser@learnlinux: ~$ ls -A ls-test
directory  .hidden_file  symlink       visible_file2
dir.txt    visible_file  visible_file3

testuser@learnlinux: ~$

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

testuser@learnlinux: ~$ 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

testuser@learnlinux: ~$ 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

testuser@learnlinux: ~$

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

testuser@learnlinux: ~$ 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@learnlinux: ~$ ls -lh ls-test/v*
-rw-rw----. 1 testuser testuser 8.0K 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@learnlinux: ~$

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

testuser@learnlinux: ~$ ls ls-test/v*
ls-test/visible_file  ls-test/visible_file2  ls-test/visible_file3

testuser@learnlinux: ~$ ls -1 ls-test/v*
ls-test/visible_file
ls-test/visible_file2
ls-test/visible_file3

testuser@learnlinux: ~$ ls -1 ls-test/v* | wc -l
3

testuser@learnlinux: ~$

--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

testuser@learnlinux: ~$ 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@learnlinux: ~$ 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 30 22:40 ls-test/visible_file2

testuser@learnlinux: ~$

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

testuser@learnlinux: ~$ 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@learnlinux: ~$ 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@learnlinux: ~$

-r kehrt die Sortierreihenfolge um

testuser@learnlinux: ~$ 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@learnlinux: ~$ 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

testuser@learnlinux: ~$
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.

testuser@learnlinux: ~$ alias l='ls -lh'

testuser@learnlinux: ~$ l ls-test/
total 20K
drwxrwx---. 2 testuser testuser 4.0K Mar 30 03:34 directory
-rw-rw----. 1 testuser testuser    0 Mar 30 03:33 dir.txt
-rw-rw----. 1 testuser testuser    4 Apr  8 02:59 selinux
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@learnlinux: ~$

 

testuser@learnlinux: ~/ls-test$ alias my-ls-sort-by-mtime-asc='ls -ltr'

testuser@learnlinux: ~/ls-test$ my-ls-  # type tab

 

testuser@learnlinux: ~/ls-test$ alias my-ls-sort-by-mtime-asc='ls -ltr'

testuser@learnlinux: ~/ls-test$ my-ls-sort-by-mtime-asc

 

testuser@learnlinux: ~/ls-test$ alias my-ls-sort-by-mtime-asc='ls -ltr'

testuser@learnlinux: ~/ls-test$ my-ls-sort-by-mtime-asc
total 20
-rw-rw----. 1 testuser testuser 8192 Mar 29 20:53 visible_file
-rw-rw----. 1 testuser testuser    0 Mar 30 03:33 dir.txt
drwxrwx---. 2 testuser testuser 4096 Mar 30 03:34 directory
lrwxrwxrwx. 1 testuser testuser    7 Mar 30 22:25 symlink -> dir.txt
-rw-rw----. 1 testuser testuser   10 Mar 30 22:37 visible_file3
-rw-rw----. 1 testuser testuser    0 Mar 30 22:40 visible_file2
-rw-rw----. 1 testuser testuser    4 Apr  8 02:59 selinux

testuser@learnlinux: ~/ls-test$