У меня есть фундаментальный вопрос о том, как работает bash, и связанный с ним практический вопрос.
Фундаментальный вопрос: предположим, что я в директории с тремя подкаталогами: a, b и c.
с кодом
for dir in $(ls)
do
echo $dir
done
выплевывает:
a b c
a b c
a b c
i.e, dir
всегда хранит список всех файлов/каталогов в моем cwd
. Мой вопрос: почему в мире это было бы удобно? На мой взгляд, гораздо более полезно и интуитивно иметь dir
хранить каждый элемент за раз, т.е. Я хотел бы иметь вывод
a
b
c
Кроме того, согласно одному из ответов - неправильно использовать for dir in $(ls)
, но когда я использую for dir in $(ls -l)
, я получаю еще больше копий a b c
(больше, чем есть каталоги/файлы в cwd). Почему это?
Мой второй вопрос практичен: как мне перебирать все каталоги (а не файлы!) в моем cwd
, которые начинаются с капитала W? Я начал с
for dir in `ls -l W*`
но это не удается, потому что: a) причина в вопросе 1 и b), поскольку она не исключает файлы. Предложения оценены.