Из того, что я читал here, он говорит, что «В одинарных кавычках каждый специальный символ, кроме« интерпретируется буквально ». Итак, я думал, что обратная косая черта («\») также интерпретируется буквально.Одиночные кавычки обрабатывают обратную косую черту как специальную в сценариях bash?
Но тогда, когда я пытаюсь использовать его в качестве псевдонима, это как-то по-прежнему получает интерпретируется как специальный символ:
alias somefolder='cd /Some\ path/with\ spaces/'
... до сих пор работает?
И все же это не делает:
alias somefolder='cd /Some path/with spaces/'
Это удивляет меня, потому что я думал, что все дело в одинарных кавычках должно было быть за лени, то есть, когда вы не расширяется любой переменные с $
(потому что это потребует двойных кавычек).
Я действительно сомневаюсь, что источник tldp ошибочен, так есть лучший способ объяснить это? Благодарю.
не имеет ничего общего с кавычками. он имеет отношение к расширению псевдонимов, которое является буквальным значением строки * *. поставьте кавычки только по пути. – user2864740
... что является одной из многих причин, почему вместо псевдонимов следует использовать функции оболочки. http://mywiki.wooledge.org/BashFAQ/080 – rici
все еще .... Меня еще больше озадачивает это: 'alias somefolder = 'cd'/Some path/with spaces/''' не работает, так как i сказал в вопросе. Однако из командной строки 'cd '/ Some path/with spaces /'' * does * работает? – Hunle