为什么“ls $(pwd / cat)”不起作用?

时间:2016-09-16 11:05:51

标签: linux ls

在我的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的参数时,它会显示错误输出以及当前目录中的项目列表。

为什么会这样?

1 个答案:

答案 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命令的错误。

如果您想lscat/内的pwd项,请说:

ls "$(pwd)"/cat

ls $PWD/cat

或者,因为当前目录是默认目录,只需:

ls cat