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