Что означает `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 */

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/

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 ..чтобы перейти на шаг вверх в иерархии каталогов

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.