Команда ls — вероятно наиболее используемая команда в любой UNIX-системе. Её предназначение — вывод информации о файлах и каталогах. Дополнительные опции команды позволяют получить более подробную информацию и сортировать её определённым образом.
Далее будут приведены примеры опций и примеры их использования.
-R | Рекурсивно обойти встретившиеся подкаталоги. |
-a | Вывести список всех файлов (без этой опции не выводятся скрытые файлы, имена которых начинаются с точки). |
-d | Если аргумент является каталогом, то выводить только его имя, а не содержимое. Часто используется с флагом -l для получения сведений о состоянии каталога. |
-C | Вывод в несколько колонок с сортировкой по колонкам. |
Вывод в несколько колонок с сортировкой по строкам. | |
-m | Вывод в свободном формате, имена файлов разделяются запятыми. |
-l | Вывод в длинном формате: перед именами файлов выдается режим доступа, количество ссылок на файл, имена владельца и группы, размер в байтах и время последней модификации (см. ниже). Если файл является специальным, то в поле размера выводится старший и младший номера устройства. |
-n | То же, что и -l, но идентификаторы владельца и группы выводятся в виде чисел, а не в виде имен. |
-o | То же, что и -l, но идентификатор группы не выводится. |
-g | То же, что и -l, но идентификатор владельца не выводится. |
-r | Изменить порядок сортировки на обратный алфавитный или, при наличии флага -t, сначала выводить более старые файлы. |
-t | Имена файлов сортируются не по алфавиту, а по времени (сначала идут самые свежие файлы). По умолчанию используется время последнего изменения. См. также флаги -u и -c. |
-u | Вместо времени последнего изменения использовать время последнего доступа для сортировки (с флагом -t) или для вывода (с флагом -l). |
-c | Вместо времени последнего изменения использовать время последней модификации описателя файла (т.е. время создания файла, изменения режима доступа к нему и т.п.) для сортировки (с флагом -t) или для вывода (с флагом -l). |
-p | Если файл является каталогом, то выдавать после его имени символ /. |
-F | Если файл является каталогом, то выдавать после его имени символ /; если файл является выполняемым, то выдавать после его имени символ *. |
-b | Выдавать непечатные символы, входящие в имя файла, в восьмеричном виде (ddd). |
-q | Выдавать непечатные символы, входящие в имя файла, в виде символа ?. |
-i | Выдавать в первой колонке номера описателей файлов. |
-s | Выдавать размер файлов в блоках (включая косвенные блоки). |
-f | Рассматривать каждый аргумент как каталог и выводить его содержимое. Этот флаг отменяет флаги -l, -t, -s, -r и включает флаг -a. Сортировка имен файлов не производится; имена выдаются в таком порядке, в каком они перечислены в каталоге. |
Теперь несколько примеров наиболее полезных опций.
Вывести список только каталогов:
# ls -d -1 /home/setevoy/*/
/home/setevoy/Desktop/
/home/setevoy/Downloads/
/home/setevoy/Dropbox/
/home/setevoy/Images/
/home/setevoy/Soft/
/home/setevoy/Temp/
/home/setevoy/VirtualBox VMs/
То же самое, но с использованием «длинного» (полного) вывода о каталогах:
# ls -dl /home/setevoy/*/
drwxr-xr-x 2 setevoy setevoy 4096 May 6 10:22 /home/setevoy/Desktop/
drwxr-xr-x 2 setevoy setevoy 4096 May 5 10:38 /home/setevoy/Downloads/
drwx—— 16 setevoy setevoy 4096 May 6 07:40 /home/setevoy/Dropbox/
drwxr-xr-x 2 setevoy setevoy 4096 May 5 12:00 /home/setevoy/Images/
drwxr-xr-x 2 setevoy setevoy 4096 May 5 18:29 /home/setevoy/Soft/
drwxrwxr-x 2 setevoy setevoy 4096 May 5 20:15 /home/setevoy/Temp/
drwxrwxr-x 4 setevoy setevoy 4096 May 5 19:09 /home/setevoy/VirtualBox VMs/
Ключ -l весьма полезен, так как позволяет проверять владельца и права на файлы/каталоги:
Для вывода информации о скрытых файлах (начинаются с точки) используйте ключ -a:
# ls -la
ls: cannot access .gvfs: Permission denied
total 524
drwxr-xr-x 37 setevoy setevoy 4096 May 6 21:20 .
drwxr-xr-x 3 root root 4096 May 5 10:25 ..
drwx—— 3 setevoy setevoy 4096 May 5 10:39 .adobe
-rw——- 1 root root 517 May 5 11:53 .bash_history
-rw-r—r— 1 setevoy setevoy 220 May 5 10:25 .bash_logout
-rw-r—r— 1 setevoy setevoy 133 May 5 11:52 .bashrc
…
Про ошибку с .gvfs можно почитать в статье ls: cannot access .gvfs: Permission denied.
Кратко остановимся на обозначениях прав доступа и обозначениях файлов/каталогов. Первый символ:
d — файл является каталогом;
b — файл является специальным блочным файлом;
c — файл является специальным символьным файлом;
p — файл является именованным каналом;
— — обычный файл.
Далее следуют три группы символов, обозначающих права доступа — r (read), w (write), x (execute) — чтение, запись в файл/каталог и выполнение соответственно. Тема прав доступа в UNIX весьма обширна, поэтому сейчас не будем вдаваться в подробности.
Открыть для редактирования последний редактировавшийся файл:
# nano file1.txt
# nano file2.txt
# nano `ls -t | head -1`
Обычный вывод ls без ключей выводит все файлы/каталоги одной строкой. Что бы вывести их в колонку — выполняем:
# ls -1
Desktop
Downloads
Dropbox
file1.txt
file2.txt
Images
Soft
Temp
VirtualBox VMs
Ключ -h используется для вывода информации о размере в «человекоудобном» виде, т.е. в Kb, Mb, Gb:
# ls -lh
total 36K
drwxr-xr-x 2 setevoy setevoy 4.0K May 6 10:22 Desktop
drwxr-xr-x 2 setevoy setevoy 4.0K May 5 10:38 Downloads
drwx—— 16 setevoy setevoy 4.0K May 6 07:40 Dropbox
-rw-r—r— 1 root root 2 May 6 21:06 file1.txt
-rw-r—r— 1 root root 2 May 6 21:06 file2.txt
drwxr-xr-x 2 setevoy setevoy 4.0K May 5 12:00 Images
drwxr-xr-x 2 setevoy setevoy 4.0K May 5 18:29 Soft
drwxrwxr-x 2 setevoy setevoy 4.0K May 5 20:15 Temp
Отсортировать файлы/каталоги по их размеру, начиная с самого большого:
# ls -lS /var/log/
total 4152
-rw-r—r— 1 root root 1823273 May 6 19:46 dpkg.log
-rw-r—— 1 syslog adm 825505 May 6 08:05 syslog.1
-rw-r—— 1 syslog adm 589203 May 6 19:25 kern.log
-rw-r—r— 1 root root 47105 Aug 23 2012 bootstrap.log
-rw-r—r— 1 root root 37440 May 6 19:46 aptitude
-rw-r—r— 1 root root 20584 May 6 07:39 pm-powersave.log
-rw-r—— 1 root adm 14329 May 5 11:38 dmesg.1.gz
-rw-r—r— 1 root root 6167 May 6 07:39 kdm.log
drwxr-xr-x 2 root root 4096 May 5 10:25 apt
-rw-r—— 1 root adm 31 Aug 23 2012 boot
-rw-r—— 1 syslog adm 0 May 5 10:38 ufw.log
Осотрировать файлы/каталоги по дате последней модификации, новые — в конце списка:
# ls -rtl /var/log/
total 4152
drwx—— 2 speech-dispatcher root 4096 Feb 6 2012 speech-dispatcher
drwxr-xr-x 2 root root 4096 Mar 12 2012 unattended-upgrades
…
drwxr-xr-x 2 root root 4096 Aug 10 2012 dist-upgrade
…
-rw-r—r— 1 root root 47105 Aug 23 2012 bootstrap.log
…
-rw-r—r— 1 root root 2990 May 5 19:20 fontconfig.log
…
-rw-r—— 1 syslog adm 60874 May 6 21:14 syslog
Что бы вывести новые в начале списка — используйте комбинацию опций без ключа -r:
# ls -tl /var/log/
То же самое, но сортировать по дате последнего доступа к файлу, а не дате его модификации, используйте ключ -u:
# ls -tlu /var/log/
Вывести список файлов/каталогов, разделённый на 5 колонок, разделённых на всю ширину окна:
# ls /usr/local | pr -T5 -W$COLUMNS
bin games lib sbin src
Добавлять символ обозначения принадлежности файла/каталога — каталог (/), исполняемый файл (*), FIFO (|), символьная ссылка (@), сокеты семейства AF_UNIX (=):
# ls -F -1
Desktop/
Downloads/
Dropbox/
file1
file1.txt
file2
file2.txt
file3
file4.txt@
Images/
Soft/
Temp/
VirtualBox VMs/
Впрочем, ту же информацию выводит и ls -l — первый символ d для каталогов (directory) и ->; для ссылок:
# ls -l
total 36
drwxr-xr-x 2 setevoy setevoy 4096 May 6 10:22 Desktop
…
lrwxrwxrwx 1 root root 9 May 6 21:20 file4.txt -> file1.txt
Выводить список через запятую:
# ls -m
Desktop, Downloads, Dropbox, file1, file1.txt, file2, file2.txt, file3, file4.txt, Images, Soft, Temp, VirtualBox VMs
Вывести список рекурсивно, включая подкаталоги и их содержимое:
# ls -R
.:
Desktop
Downloads
Dropbox
Images
Soft
Temp
VirtualBox VMs
./Desktop:
PDF-Viewer.desktop
PDF-Viewer.lnk
./Downloads:
./Dropbox:
172210-1920×1080.jpg
271027-1366×768.jpg
…
Остортировать файлы/каталоги в обратном алфавитном порядке:
# ls -r
VirtualBox VMs Temp Soft Images file4.txt file3 file2.txt file2 file1.txt file1 Dropbox Downloads Desktop
Вывести информацию о номерах inode файлов и каталогов:
# ls -i -1
2368762 Desktop
1969746 Downloads
1987155 Dropbox
1987223 file1
1969890 file1.txt
1987865 file2
1969805 file2.txt
1987866 file3
1987863 file4.txt
1969751 Images
2141585 Soft
2368300 Temp
2141811 VirtualBox VMs
Вывести информацию о пользователе/группе в виде UID и GID, вместо символьных имён:
# ls -n
total 36
drwxr-xr-x 2 1000 1000 4096 May 6 10:22 Desktop
drwxr-xr-x 2 1000 1000 4096 May 5 10:38 Downloads
drwx—— 16 1000 1000 4096 May 6 07:40 Dropbox
-rw-r—r— 1 0 0 0 May 6 21:10 file1
-rw-r—r— 1 0 0 2 May 6 21:06 file1.txt
-rw-r—r— 1 0 0 0 May 6 21:10 file2
-rw-r—r— 1 0 0 2 May 6 21:06 file2.txt
-rw-r—r— 1 0 0 0 May 6 21:10 file3
lrwxrwxrwx 1 0 0 9 May 6 21:20 file4.txt -> file1.txt
drwxr-xr-x 2 1000 1000 4096 May 5 12:00 Images
drwxr-xr-x 2 1000 1000 4096 May 5 18:29 Soft
drwxrwxr-x 2 1000 1000 4096 May 5 20:15 Temp
drwxrwxr-x 4 1000 1000 4096 May 5 19:09 VirtualBox VMs
rtfm.co.ua
00:11:22
00:01:23
00:03:17
00:11:23
00:01:55
02:57:48
00:04:00
00:00:16
00:21:22
00:03:48
00:21:21
00:09:48
news-cinema.com
ls -F
будет :
Напишите (‘/’) сразу после каждого пути, который является каталогом, (‘*’) после каждого исполняемого файла, (‘|’) после каждого, что является FIFO, и знака at (‘@’ ) после каждого символа.
GNU ls содержит дополнительные сигналы :
… ‘=’ для гнезд, ‘>’ для дверей
=
также присутствует в основных BSD ( FreeBSD , OpenBSD , NetBSD , OS X ). Все, кроме OpenBSD, также включают %
для белых. Большинство коммерческих Unices включают =
, но они нестандартны.
A *
появится после файла, если он помечается как исполняемый, то есть, если установлен исполняемый бит. Это не обязательно означает, что вы действительно можете запустить файл. Вы можете отменить исполняемый бит с помощью chmod -x
; обычно вы не хотите, чтобы текстовые файлы и файлы PDF исполнялись, поэтому вы могли бы это сделать. Исполняемые файлы также будут иметь x
в ls -l
.
Для остальных:
/
указывает каталог, который довольно прост.|
указывает FIFO, который является именованным каналом, созданным с помощью mkfifo
(данные могут быть записаны в него и считаться ровно один раз).@
указывает символическую ссылку, сделанную с помощью ln -s
, которая является псевдонимом для другого пути.=
указывает сокет, специальный файл для связи с другими процессами.>
для дверей – еще одна возможность взаимодействия между процессами из некоторых систем.%
для whiteouts указывает специальный файл, используемый для отметки удалений, сделанных в верхних слоях стека файловой системы union.«Обычный файл» – это то, что вы обычно считаете файлом, которое вы можете записать в данные и прочитать позже. В качестве альтернативы вы можете думать об этом как о чем-либо, что не относится к одной из вышеуказанных категорий.
Жесткие ссылки вообще не отличаются от других файлов, либо в выводе ls -F
либо в противном случае. Фактически, вы можете думать о каждом файле как о жесткой ссылке на себя. Вы можете посмотреть количество ссылок на данный файл в выводе ls -l
. Второе поле – это количество ссылок:
-rw-r--r-- 3 root root 92766 Feb 20 11:42 test.txt
Этот файл имеет три ссылки. Ни одна из них не является «главной» ссылкой, и вы не можете определить, какой из них является оригиналом. Если вы удалите один из них, счетчик пойдет вниз, а остальные будут ссылаться на один и тот же файл.
Все индикаторы -F
отличные от *
, отображают одно из значений первого поля выходного сигнала режима в ls -l
, но есть дополнительные значения, которые могут там появляться, в частности b
для блочных устройств, c
для символа устройств и других системных индикаторов.
fliplinux.com