Что означает `ls --directory`?

17

В моей версии Ubuntu у man ls есть следующая информация о --directory:

list directory entries instead of contents, and do not dereference symbolic links

Так что я немного запутался, как это работает. Я использовал команду ls --directoryи ожидал список со всеми каталогами, но вместо этого я получил.

Так что именно делает ls --directoryили ls -dделает?

Пау Чорро
источник

Ответы:

24
$ man ls
...
-d, --directory
              list directories themselves, not their contents

Текущий каталог представлен .так, что это то, что ls -dперечисляет.

Каталоги внутри текущего каталога являются содержимым каталога и поэтому не отображаются с этой опцией.

Я использую -dопцию в псевдониме для отображения скрытых файлов и каталогов

alias l.='ls -dC .* --color'

Без -dэтого будет перечислено содержимое скрытых каталогов, а это не то, что я хочу.

Другое использование для этого, когда я хочу видеть метаданные каталога, используя -lпараметр, а не его содержимое:

$ ls -ld playground
drwxr-xr-x 72 zanna zanna 12288 Mar  1 23:10 playground

Если вы хотите список каталогов в текущем каталоге, вы можете использовать

ls -d */
Занна
источник
ls -dC .* --colorтакже перечисляет скрытые файлы, а не только каталоги.
Pau Chorro
1
да @PauChorro Я действительно говорю это в своем ответе. Я использую его для отображения всех скрытых файлов и каталогов
Zanna
1
@PauChorro Я добавил способ перечислять только каталоги
Zanna
1
В моей версии Ubuntu man lsимеет следующую информацию: list directory entries instead of contents, and do not derefer‐ ence symbolic links. Так что в вашей версии это лучшее объяснение того, что он действительно делает.
Pau Chorro
1
@ Pilot6 там тоже будут перечислены файлы
Zanna
11

Использование lsтолько с -dпочти бесполезно. Он дает информацию о самом каталоге. Он не перечисляет свое содержимое.

Вот почему вы не видите список каталогов. Каталоги, которые вы ожидали увидеть, являются «содержимым» текущего каталога.

Если вы запускаете просто, ls -dон показывает текущий каталог по ..

Если имеет смысл запустить его с другими ключами, как -l.

ls -ld покажет разрешения текущего каталога.

pilot6@Pilot6:~$ ls -ld
drwxrwxr-x 1 pilot6 pilot6 2570 Mar  4 12:14 .

Вы также можете увидеть разрешения любого другого каталога, как

ls -ld /bin

pilot6@Pilot6:~$ ls -ld /bin
drwxr-xr-x 1 root root 2584 Feb 25 15:19 /bin

Если вы запускаете ls -lбез -dвас, у вас будет список всех разрешений для файлов и папок в текущем каталоге. Если вам это не нужно, это хороший пример для ls -ldиспользования.

Вы можете перечислить каталоги в текущем

ls -d */
Pilot6
источник
6

Использование ls -dсамо по себе довольно бесполезно, потому что без параметра оно всегда возвращается .. Однако после того, как вы укажете параметр, это имеет смысл. Например, если ваше имя пользователя rickи вы хотите видеть все каталоги, которые вы используете дома:

$ ls -d /home/rick/*/
/home/rick/AAC/        /home/rick/EnhanceIO/         /home/rick/silentcast/
/home/rick/assembly/   /home/rick/EnhanceIO-master/  /home/rick/Templates/
/home/rick/bin/        /home/rick/log/               /home/rick/test/
/home/rick/Desktop/    /home/rick/Music/             /home/rick/tmpe/
/home/rick/Documents/  /home/rick/Pictures/          /home/rick/Videos/
/home/rick/Downloads/  /home/rick/Public/
WinEunuuchs2Unix
источник
5

Позвольте мне объяснить с примерами:

  1. ls: список содержимого каталога

  2. ls -dили ls --directory: список самих каталогов, а не их содержимого

Примеры:

ls -d android-sdk-linux/

# result
android-sdk-linux/

ls android-sdk-linux/

# result
add-ons  build-tools  platforms  platform-tools  SDK Readme.txt  temp  tools

Ваш случай ls -dэто говорит список только покажите мне каталог , я нахожусь в не его содержание (то есть .в терминах Linux), поэтому результат: ..

Но если вы сказали:, lsтогда вы увидите все, что присутствует в текущем каталоге ..

Джордж Удосен
источник
4

ls -dсписок каталогов самостоятельно, а не их содержание. Файлы перечислены как обычно. Посмотрите на man lsописание всех опций.

. это сам каталог, который вы используете при запуске команды из текущего каталога, ./runscript.sh

..является родительским каталогом, родительским для текущего директора, например, cd ..чтобы перейти на шаг вверх в иерархии каталогов

Сорен А
источник