2

Если имя каталога указано как "мой каталог". Я могу получить в каталог использовать это,

~: cd my\ dir

или же

~: cd "dy dir" 

Но я нашел, если я сделаю это:

~: export my_dir=my\ dir

или же

~: export my_dir="my dir"

затем

~: cd $my_dir

он не работает, cd всегда получает свой параметр как "my" и сообщает об ошибке.

Кто-нибудь знает, как это исправить?

Спасибо!

4 ответа4

10

Оболочка будет разделять переменные в пустом пространстве, если они используются вне кавычек. Вместо этого используйте cd "$my_dir" .

1

дела

cd "$my_dir"

работает, но тогда вы всегда должны помнить, что для my_dir вам нужно использовать "my_dir". Альтернативное решение заключается в том, что вы можете сделать:

ln -s my\ dir my_dir
export my_dir="my_dir"

И теперь вы должны быть в состоянии сделать:

cd $my_dir

Таким образом, в основном создайте символическую ссылку на каталог с пробелом, а затем экспортируйте символическую ссылку вместо реального каталога.

0
alias cdmydir="cd my\ dir"

Вы не сможете использовать это для любой другой функции, например, для указания путей, но это сработает для немедленного использования.

Я попытался export my_dir=my\\\ dir и export my_dir="\"my dir\"" , чтобы переменная окружения была my\ dir и "my dir" соответственно. Но bash должен выполнять разбор переменных окружения по сравнению с обычной командной строкой: я получил ошибки "Нет такого файла или каталога", ошибки для my\ и "my .

0

c () {cd "$ 1 $ 2 $ 3 $ 4"; }

В любом файле Bash вы думаете, должны быть использованы. Tabbing добавляет / экранирование пробела, так же как и перетаскивание его из GUI.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .