2016-09-16 49 views
-1

在我的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

在你的榜样“,什么是猫? – Pierre

+0

我*想*你想'ls $(pwd)/猫'。 –

回答

2

当你说ls <argument>命令ls是用给定的参数执行的。

当你说ls $(something)时,那0123'得到评估之前。这就是你所面临的问题:pwd/cat是一个无效的命令:

$ pwd/cat 
bash: pwd/cat: No such file or directory 

所以lsls $(pwd/cat)最终没有得到任何说法,并对当前目录中的一个基本ls。还会显示无效的pwd/cat命令的错误。

如果你想内pwd执行ls到项目cat/,说:

ls "$(pwd)"/cat 

ls $PWD/cat 

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

ls cat