Что означает `ls --directory`?
В моей версии Ubuntu у man ls есть следующая информация о --directory:
list directory entries instead of contents, and do not dereference symbolic links
Так что я немного запутался, как это работает. Я использовал команду ls --directory
и я ожидал список со всеми каталогами, но вместо этого я получил .
Так что именно ls --directory
или же ls -d
делать?
5 ответов
$ 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
только с -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 */
С помощью 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/
Позвольте мне объяснить с примерами:
ls
: список содержимого каталога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
, тогда вы увидите все, что присутствует в текущем каталоге .
,
ls -d
список каталогов самостоятельно, а не их содержание. Файлы перечислены как обычно. Смотреть в man ls
Се описание всех опций.
.
это сам каталог, который вы используете при запуске команды из текущего каталога, ./runscript.sh
..
является родительским каталогом, родительским для текущего директора, как в cd ..
двигаться на шаг вверх в иерархии каталогов