## Что делает данная команда?

Команда **LS** (List Files and Directories) - выводит список директорий и файлов.

## Возможности

- Вывод в подробном (списком) или в краце (строчном) формате
- Сортировка по алфавиту, дате, размеру и типу
- Отображение скытых файлов
- Рекрусивый обход каталогов

## Базовые примеры

### Команда без аргументов
Попробуем сначала вывести просто `ls` без аргументов.
```console title="Просто ls"
[cher@k-des test0]$ ls 
dirrectory  hello-world.txt
```
Мы видим, что было выведено 2 элемента: **hello-world.txt** и **dirrectory**.

### Вывод элементов вне активном каталоге
Так же, список можно вывести и не в активном каталоге. Пропишем любой путь.
```console title="Вывод содержимого вне активного каталога"
[cher@k-des test0]$ ls /srv
ftp  http  nfs4
```
В каталоге, **srv**, который находиться в корневом каталоге системы `/`, видим 3 элемента: **ftp**, **http** и **nfs4**.

### Вывод всех элементов в каталоге
Теперь посмотрим, имеються ли скрытые файлы с помощью аргумента `-a`.
```console title="Вывести все что есть"
[cher@k-des test0]$ ls -a
.  ..  dirrectory  hello-world.txt  .hide-file.txt
```
!!! info "Скрытые файлы и каталоги"
    Скрытые файлы и каталоги обозначаються точкой перед названием.

    Пример: `.FileName.md`

Мы видим, что  в нашем каталоге имееться скрытый файл **.hide-file.txt**. Но вместе с этим мы получили еще 2 элемента: `.` и `..`. Что они обозначают?

1. `.` обозначает наш активный каталог. 
2. `..` ссылкаеться на предыдущий каталог.

Прямо сейчас, они нам не нужны. Можно такие элементы не выводить, и аргумент `-A` нам поможет.
```console title="Вывести все скрытые файлы и каталоги"
[cher@k-des test0]$ ls -A
dirrectory  hello-world.txt  .hide-file.txt
```

### Вывод подробного, строчного списка
Теперь попробуем вывести списком. Для этого нам понадобиться аргумент `-l`. Попробуем ввести с дополнительным аргументом `-A`.
```console title="Подробный список"
[cher@k-des test0]$ ls -lA
итого 12
drwxr-xr-x 2 cher cher 4096 янв  3 20:03 dirrectory
-rw-r--r-- 1 cher cher   16 янв  3 19:35 hello-world.txt
-rw-r--r-- 1 cher cher   10 янв  3 19:38 .hide-file.txt
```
Здесь нужно остановиться и разобраться, что здесь написано.

| Параметр | Описание |
| -------- | -------- |
| **итого 12** | Обозначаеться общий размер всех файлов в каталоге в килобайтах. Но считает не размерами файлов, а блоками. |
| **-rw-r--r--** | Права на файл или каталог. *Данная тема очень обширная и ее следует рассматривать отдельно*. <br> Мы можем увидеть, что у каталога в начале прав вместо `-` установлена `d`. Это обозначение каталога. <br> *Данная тема очень обширная и ее следует рассматривать отдельно*.|
| Первый параметр **cher** | Имя  пользователя, который владеет каталогом или файлом. <br> Данный владелец присвоился от создателя. |
| Второй параметр **cher** | Группа, которая владеет каталога или файла. <br> Данная группа присвоилась от создателя. |
| **4096**, **16** и **10** | Размер файла и каталога в байтах. <br> Каталоги, как и все в Linux - файл. Обычный пустой каталог весит **4096** байтов, то есть **4** КБ. |
| **Янв 3 19:38** | Дата и время создания или измения каталога. |

### Завершение базовой части 
Мы прошлись по базовым аргументам, которые должны знать уверенные пользователи GNU/Linux.
!!! info "Не большая рекомендация" 
    Попробуйте на своей машине с GNU/Linux попрактиковаться. 

## Расширенные примеры

Посмотрим другие параметры.

### Перевернуть список
Попробуем перевернуть список, используя аргумент `-r` `--reverse`.
```console title="Вверх ногами"
[cher@k-des test0]$ ls -lr
итого 8
-rw-r--r-- 1 cher cher   16 янв  3 19:35 hello-world.txt
drwxr-xr-x 2 cher cher 4096 янв  3 20:03 dirrectory
```

### Сортировать по размеру
Теперь посмотрим, какие файлы самые большие, использовав аргумент `-S`.
```console title="Сортировка по размеру"
[cher@k-des test0]$ ls -lS
итого 8
drwxr-xr-x 2 cher cher 4096 янв  3 20:03 dirrectory
-rw-r--r-- 1 cher cher   16 янв  3 19:35 hello-world.txt
```

Ничего не изменилось. Да же, если выведем и скрытые файлы, то ничего не измениться. Потому что обычная и по размеру сортировка совпадает. Попробуем тогда вывести с другого каталога. 

Возьмем для примера каталог `/etc/ssh`, где присутствют файлы конфигурации ssh.
```console title="Сортировка по размеру №2"
[cher@k-des test0]$ ls -l /etc/ssh
итого 608
-rw-r--r-- 1 root root 581349 окт 25 11:36 moduli
-rw-r--r-- 1 root root   1558 дек  4 02:47 ssh_config
drwxr-xr-x 2 root root   4096 дек  7 15:46 ssh_config.d
-rw-r--r-- 1 root root   3528 ноя 30 01:22 sshd_config
drwxr-xr-x 2 root root   4096 ноя 17 19:57 sshd_config.d
-rw------- 1 root root    505 окт  2 02:26 ssh_host_ecdsa_key
-rw-r--r-- 1 root root    172 окт  2 02:26 ssh_host_ecdsa_key.pub
-rw------- 1 root root    399 окт  2 02:26 ssh_host_ed25519_key
-rw-r--r-- 1 root root     92 окт  2 02:26 ssh_host_ed25519_key.pub
-rw------- 1 root root   2590 окт  2 02:26 ssh_host_rsa_key
-rw-r--r-- 1 root root    564 окт  2 02:26 ssh_host_rsa_key.pub
[cher@k-des test0]$ ls -lS /etc/ssh
итого 608
-rw-r--r-- 1 root root 581349 окт 25 11:36 moduli
drwxr-xr-x 2 root root   4096 дек  7 15:46 ssh_config.d
drwxr-xr-x 2 root root   4096 ноя 17 19:57 sshd_config.d
-rw-r--r-- 1 root root   3528 ноя 30 01:22 sshd_config
-rw------- 1 root root   2590 окт  2 02:26 ssh_host_rsa_key
-rw-r--r-- 1 root root   1558 дек  4 02:47 ssh_config
-rw-r--r-- 1 root root    564 окт  2 02:26 ssh_host_rsa_key.pub
-rw------- 1 root root    505 окт  2 02:26 ssh_host_ecdsa_key
-rw------- 1 root root    399 окт  2 02:26 ssh_host_ed25519_key
-rw-r--r-- 1 root root    172 окт  2 02:26 ssh_host_ecdsa_key.pub
-rw-r--r-- 1 root root     92 окт  2 02:26 ssh_host_ed25519_key.pub
```
Здесь уже достаточно хорошо видно различие между обычной сортировки и сортировки по размеру.

Обратная сортировка осуществляеться таким образом: `ls -lSr`.

### Рекурсивый просмотр каталогов
Попробуем вывести сразу список в активном каталоге и тех, которые находяться в нем. Добавим аргумент `-R` к `-l`.
```console title="Вевести ВСЕ!"
[cher@k-des test0]$ ls -lR
.:
итого 8
drwxr-xr-x 3 cher cher 4096 янв  3 21:52 dirrectory
-rw-r--r-- 1 cher cher   16 янв  3 19:35 hello-world.txt

./dirrectory:
итого 8
drwxr-xr-x 2 cher cher 4096 янв  3 21:53 dirrectory0
-rw-r--r-- 1 cher cher    5 янв  3 21:49 gift.txt

./dirrectory/dirrectory0:
итого 4
-rw-r--r-- 1 cher cher 10 янв  3 21:53 trap.txt
``` 
Теперь мы сразу увидели что находиться в каталогах **./dirrectory** и **./dirrectory/dirrectory0**.

### Сотрировка по времени
Аргумент `-t` или `--time` поможет сортировать по времени.
```console title="Временной калаж"
[cher@k-des test0]$ ls -ltA
итого 12
drwxr-xr-x 3 cher cher 4096 янв  3 21:52 dirrectory
-rw-r--r-- 1 cher cher   10 янв  3 19:38 .hide-file.txt
-rw-r--r-- 1 cher cher   16 янв  3 19:35 hello-world.txt
```

### Вывод элементов по строчно без дополнительной информации
Аргумент `-1` работает также, как и `-l`, но без лишней информации, только название элементов.
```console title="Строчный список имен"
[cher@k-des test0]$ ls -1A
dirrectory
hello-world.txt
.hide-file.txt
```

## Аргументы

| Аргумент | Описание |
| :--------: | -------- |
| `-l`     | Выводит подробный список. |
| `-a`, `--all`| Выводит дополнительно скрытые файлы и каталоги, начинающиеся с точки. |
| `-A` `--almost-all` | То же, что и `-a`, `-all`, но без основного каталога `.` и  каталога выше `..`.|
| `-o` | То же, что и `-l`, но без групп. |
| `-g` | То же, что и `-l`, но без владельцев. |
| `--full-time` | Выведет время в полном варианте. <br> Будет использоваться формат **full-iso**. |
| `-S` | Сортировка элементов по размеру. |
| `-s` | Отобразить блочно размер файлов. |
| `-r` | Перевернуть список. |
| `-R` | Рекурсивный список каталогов и файлов. <br> Отобразит содержимое основного каталого и и тех, которые присутствуют в нем. |
| `-1` | Работает так же, как и `-l`, но выводит только название файлов и каталогов. |
| `-t`, `--time` | Сортировка по времени |
