LINUX.ORG.RU

[zsh] не работает ls *(/)

 


0

1

Сабж выдает список всех файлов, рекурсивно. А должен, вроде бы, выдавать только директории, не залезая в них? Если в . нет директорий, то выдает просто список файлов... ??? man zshexpn порыл, но пока не нашел, в чем дело.

★★

так вроде и должно быть (у меня так же)

попробуй: ls ./

что бы только директории, и файлы, когда нет директорий - man + скрипт, скорее всего.

derlafff ★★★★★
()

Не совсем понял, в чём проблема: ls делает что и запрошено.

выдавать только директории, не залезая в них


Либо $ ls -d *(/)
либо просто $ echo *(/)

geekless ★★
()

zsh тут не причём (наверное). разве что - алиас какой. Запускайте /bin/ls -R для рекурсивного разбора и /bin/ls -d для не рекурсивного.

Ещё удобно find . -maxdepts N -ls для разбора любой вложенности N

drBatty ★★
()

Когда ты через сабжевую команду скидываешь ls список каталогов, он тебе и выводит честно листинг каждого перечисленного каталога. Добавь -d, как советуют тут умные люди.

man zshexpn порыл, но пока не нашел, в чем дело.


Покопай лучше man ls.

nnz ★★★★
()
Ответ на: комментарий от geekless

>>Либо $ ls -d *(/)

либо просто $ echo *(/)


Спасибо. Просто в одной tips'n'tricks нашел что ls *(\) должен list just directories. Короче, надо кончать хватать по верхам и заняться чтением какого-нибудь учебника. Кто что посоветует?

Кстати, ls -d у меня выдает только ".", т.е. пишет точку - и никаких других дир не кажет.

Кроме этих алиасов, других, относящихся к ls, не имеется.

alias ls='ls --color'
alias lsgr='ls -lA | grep'

frpaul ★★
() автор топика
Ответ на: комментарий от frpaul

В общем, пока так решил:

alias lsd='ls -d *(/)' :)

frpaul ★★
() автор топика
Ответ на: комментарий от frpaul

>Кстати, ls -d у меня выдает только ".", т.е. пишет точку - и никаких других дир не кажет.

Логично. 'ls' без указания пути эквивалентен 'ls .'
Значит 'ls -d' эквивалентен 'ls -d .'
Например:
/$ ls -ld
drwxr-xr-x 20 root root 4096 Дек 10 21:36 .

Кто что посоветует?


Я бы посоветовал начать с вдумчивого чтения man bash, затем прочитать info coreutils (вроде так, у меня info в Арче выпилена, не могу посмотреть), man по sed, awk, xargs...
Для работы в консоли информации из встроенной справки — более, чем достаточно.

Книг по теме не знаю. Помню, RHL года примерно 99-го шла сразу с руководствами пользователя, администратора и программиста. С тех пор по работе в консоли, кроме манов и гугла, остального ничего не читал. :)

geekless ★★
()
Ответ на: комментарий от geekless

Спасибо, теперь понял, что не так.

man bash полностью вряд ли осилю. Учебник все-таки более подходящая вещь для _изучения_ вопроса. А вот как справочник - это да, полезно.

frpaul ★★
() автор топика
Ответ на: комментарий от frpaul

http://www.bash-scripting.ru/abs/chunks/

дело тут вот в чём: сама оболочка раскрывает звёздочку. Потому, если вы написали

ls *

то оболочка в действительности выполнит

ls dir1 dir2 dir3 file1 file2 file3

ls

без параметра эквивалентна

ls .

если вы выполнили

ls test*

и при этом в текущем каталоге нет файла начинающегося на test, то оболочка отправит в ls 'test*' на что ls будет ругаться. Полезно, если параметр - НЕ имя файла.

В bash имеется такой хак:

ls **/*

это рекурсивное раскрытие каталогов средствами оболочки (про zsh не помню. Вроде тоже есть что-то такое).

Ещё оболочка умеет раскрывать символьные классы вроде [0-9] или [[:xdigit:]] и вопросы (?).

drBatty ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.