Я пытаюсь удалить файл ~ $ bgka.mod из моего текущего каталога
~
и $
- специальные символы в bash.
Вы можете либо избежать их, используя \
либо поместить аргумент в одинарные кавычки '
.
Двойные кавычки нельзя использовать, так как «Заключение символов в двойные кавычки "
сохраняет буквальное значение всех символов в кавычках, за исключением $
, `и \"
Использование:
rm \~\$bgka.mod
Или же:
rm '~$bgka.mod'
Расширение тильды
Если слово начинается с символа кавычки без кавычек ~
, все символы до первой косой черты без кавычек (или все символы, если без косой черты без кавычек) считаются префиксом тильды. Если ни один из символов в префиксе тильды не заключен в кавычки, символы в префиксе тильды, следующие за тильдой, рассматриваются как возможное имя для входа. Если это имя входа является пустой строкой, тильда заменяется значением переменной оболочки HOME
. Если HOME
не установлен, вместо него подставляется домашний каталог пользователя, выполняющего оболочку. В противном случае префикс тильды заменяется домашним каталогом, связанным с указанным именем входа.
Расширение Source Shell
Расширение параметров оболочки
Символ $
вводит расширение параметров, подстановку команд или арифметическое расширение. Имя параметра или символ, который должен быть расширен, может быть заключен в фигурные скобки, которые являются необязательными, но служат для защиты переменной, которая должна быть развернута, от символов, следующих непосредственно за ним, которые могут быть интерпретированы как часть имени.
Расширение Source Shell
квотирование
Цитирование используется для удаления специального значения определенных символов или слов в оболочке. Кавычки могут использоваться для отключения специальной обработки для специальных символов, для предотвращения распознавания зарезервированных слов как таковых и для предотвращения расширения параметров.
Каждый из метасимволов оболочки имеет особое значение для оболочки и должен быть заключен в кавычки, если он представляет себя.
Побег персонаж
Не-цитируемый обратный слэш \
является маскирующим Bash. Он сохраняет буквальное значение следующего символа, за исключением символа новой строки. Если появляется пара \newline, а сама обратная косая черта не заключена в кавычки, \newline обрабатывается как продолжение строки (то есть она удаляется из входного потока и фактически игнорируется).
Одинарные кавычки
Ограждающие символы в одинарных кавычках '
буквальное значение каждого символа в кавычках. Одиночная кавычка может отсутствовать между одинарными кавычками, даже если ей предшествует обратная косая черта.
Двойные кавычки
Заключение символов в двойные кавычки "
сохраняет буквальное значение всех символов в кавычках, за исключением $
,` и \
. Символы $
и `сохраняют свое особое значение в двойных кавычках. Обратная косая черта сохраняет свое специальное значение только тогда, когда за ней следует один из следующих символов: $
, `, "
, \
или newline. В двойных кавычках удаляются обратные слэши, за которыми следует один из этих символов. Обратная косая черта предшествующих символов без специального значения остается неизменной. Двойная кавычка может быть заключена в двойные кавычки, если им предшествует обратная косая черта.
Цитирование источника:
Дальнейшее чтение