Команда
ls – вероятно наиболее используемая команда в любой
UNIX-системе.
Её предназначение – вывод информации о файлах и каталогах.
Дополнительные опции команды позволяют получить более подробную
информацию и сортировать её определённым образом.
Далее будут приведены примеры опций и примеры их использования.
-R |
Рекурсивно обойти встретившиеся подкаталоги. |
-a |
Вывести список всех файлов (без этой опции не выводятся скрытые файлы, имена которых начинаются с точки). |
-d |
Если аргумент является
каталогом, то выводить только его имя, а не содержимое. Часто
используется с флагом -l для получения сведений о состоянии каталога. |
-C |
Вывод в несколько колонок с сортировкой по колонкам. |
-x |
Вывод в несколько колонок с сортировкой по строкам. |
-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 весьма полезен, так как позволяет проверять владельца и права на файлы/каталоги:
# ls -l
total 32
drwxr-xr-x 2 root root 4096 Aug 23 2012 bin
drwxr-xr-x 2 root root 4096 Aug 23 2012 etc
drwxr-xr-x 2 root root 4096 Aug 23 2012 games
drwxr-xr-x 2 root root 4096 Aug 23 2012 include
drwxr-xr-x 4 root root 4096 May 5 11:13 lib
lrwxrwxrwx 1 root root 9 May 5 10:22 man -> share/man
drwxr-xr-x 2 root root 4096 Aug 23 2012 sbin
drwxr-xr-x 7 root root 4096 Aug 23 2012 share
drwxr-xr-x 2 root root 4096 Aug 23 2012 src
Для вывода информации о скрытых файлах (начинаются с точки) используйте ключ
-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
drwx—— 17 setevoy setevoy 4096 May 5 18:29 .cache
drwxrwxr-x 3 setevoy setevoy 4096 May 5 10:54 .compiz-1
drwx—— 20 setevoy setevoy 4096 May 6 10:38 .config
drwx—— 3 setevoy setevoy 4096 May 5 10:38 .dbus
…
Про ошибку с
.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
drwxrwxr-x 4 setevoy setevoy 4.0K May 5 19:09 VirtualBox VMs
Отсортировать файлы/каталоги по их размеру, начиная с самого большого:
# 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
etc
include
man share
Добавлять символ обозначения принадлежности файла/каталога – каталог (
/), исполняемый файл (
*), 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
http://rtfm.co.ua/komanda-ls-primery-ispolzovaniya-i-opcii