我有一个关于bash如何工作的根本问题,以及一个相关的实际问题.
@H_403_24@基本问题:假设我在一个目录中有三个子目录: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
另外,根据一个答案 – 在$(ls)中使用dir是错误的,但是当我在$(ls -l)中使用dir时,我会获得更多的abc副本(比目录/文件更多在cwd).这是为什么?
我的第二个问题是实用的:我如何循环我的cwd中以资本W开头的所有目录(而不是文件!)?我开始
- for dir in `ls -l W*`
但是这是因为a)问题1和b)的原因,因为它不排除文件.建议赞赏