2016-09-16 55 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