在我的Ubuntu中,例如:
$ pwd
/home/yangxiaoyu/c/test
如果我说:
ls /home/yangxiaoyu/c/test/cat
我明白了:
ls: 无法访问'/home/yangxiaoyu/c/test/cat': No such file or directory
但是,如果我说:
ls $(pwd/cat)
我明白了:
bash: pwd/cat: No such file or directory
0x2b 1.txt catfile ff readFile.c ~rootfile yxy.h
0X2b.c a.out example list ref.c thread.c
正如您所看到的,当我使用$(pwd/cat)
作为ls
的参数时,它会显示错误输出以及当前目录中的项目列表。
为什么会这样?
答案 0 :(得分:2)
当您说ls <argument>
时,使用给定参数执行命令ls
。
当您说ls $(something)
时,之前会对$(something)
进行评估。这就是你所面临的问题:pwd/cat
是一个无效的命令:
$ pwd/cat
bash: pwd/cat: No such file or directory
ls
中的ls $(pwd/cat)
最终没有获得任何参数,并在当前目录上执行基本ls
。它还会显示无效pwd/cat
命令的错误。
如果您想ls
对cat/
内的pwd
项,请说:
ls "$(pwd)"/cat
ls $PWD/cat
或者,因为当前目录是默认目录,只需:
ls cat