Теоретически да. На практике обычно тоже да. Если вы вызываете сценарий оболочки или псевдоним, который делает что-то странное, то, возможно, нет.
Вы можете использовать echo
, чтобы увидеть, до какой конкретной команды будет расширена оболочка:
$ echo rm -R ~
rm -R /home/frostschutz
$ echo rm -R "~"
rm -R ~
Обратите внимание, что echo
удаляет ""
, поэтому вы не должны копировать и вставлять то, что он печатает. Это просто показывает, что если вы укажете "~"
, команда буквально увидит ~
, а не расширенный путь / home / frostschutz
.
Если у вас есть какие-либо сомнения по поводу какой-либо команды, как насчет того, чтобы начать с чего-то менее смертоносного, если оно пойдет не так? В вашем случае вы можете начать с переименования, а не сразу удалить.
$ mv "~" delete-me
$ ls delete-me
# if everything is in order
$ rm -R delete-me
Для запутанных имен файлов, которые обычно не должны существовать (например, ~
и другие имена, начинающиеся с ~
или , или содержащие символы новой строки и т. Д.), Это Лучше быть в безопасности, чем потом сожалеть.
Также рассмотрите возможность использования автозавершения табуляции (введите ls ~
), большинство оболочек изо всех сил стараются позаботиться о вас, это также помогает избежать ошибок при вводе обычных имен файлов.
Со стандартным ящиком для инструментов, sed
- хороший вариант:
sed -e 's/"/\\&/g' <sampleMetadata
Другой способ избежать двойных кавычек (и других специальных символов) поместить все строки в одинарные кавычки (если они отсутствуют в вашем тексте) ):
sed "s/^\|$/'/g" <sampleMetadata