2013-12-18 3 views
1

Работа над проектом в крупном co. В папке для проекта содержится символ «$» (знак доллара). Это, кажется, путает Баш, когда я пытаюсь изменить каталог в эту папку:

cd TEST_$_xyz 

Урожайность ошибку:

No such file or directory 

Я почти уверен, что это из-за обращения в Bash в «$ «характер, но я чрезвычайно новичок в bash, поэтому я ищу подтверждение, прежде чем заставить меня изменить имя.

Благодаря

ответ

4

Вам нужно бежать знак доллара ($), как это. В противном случае он обрабатывает $_xyz как переменную среды.

cd TEST_\$_xyz 

пример:

# In this case, $a evaluates to nothing because it is not defined 
[email protected]:~/tmp/asdf$ mkdir a$a 
[email protected]:~/tmp/asdf$ ls 
a 

# Here, I have escaped $ with \ so that it's treated like a normal $ character 
[email protected]:~/tmp/asdf$ mkdir a\$a 
[email protected]:~/tmp/asdf$ ls 
a a$a 

# changing directory to directory with escaped $ sign 
[email protected]:~/tmp/asdf$ cd a\$a 
[email protected]:~/tmp/asdf/a$a$ 
1

Вы можете использовать ...

cd TEST*xyz 

(Звездочка может справиться с большим количеством различных символов, как «$», пространство и др.)

+0

Это может быть хорошо для интерактивного использования, но не в скрипте. Поскольку это сайт программирования, мы должны предполагать скрипты (хотя это может и не быть здесь). – Barmar

+0

Я не понимаю, почему этот подход не может быть использован в скриптах. –

+0

Потому что он будет соответствовать другим символам рядом с '$'. Взаимодействительно вы можете знать априорно, что их нет, но сценарий не должен делать подобные предположения. – Barmar

Смежные вопросы