我有一个关于 bash 如何工作的基本问题,以及一个相关的实际问题。
基本问题:假设我在一个包含三个子目录的目录中:a、b 和 c。
代码
for dir in $(ls)
do
echo $dir
done
吐出:
a b c
a b c
a b c
即,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)的原因是因为它不排除文件。建议表示赞赏。