2016-09-16 2 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)/cat'. –

ответ

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