Я замечаю, что те, кто изучают Linux, не до конца понимают, что такое * в командах, таких как rm *.bak и чем *.bak отличается от '*.bak' и "*.bak". Начнем с простой команды echo first second third Команда echo принимает три аргумента 1) first 2) second 3) third и выводит их через пробел. В случае если заключить фразу в кавычки
echo 'first second third' или
echo "first second third"
фраза становится одним аргументом. то есть echo печатает только одну фразу 1) first second third Разница не очевидно. Сравним на примере команды rm rm first second third попытается удалить файлы 1) first 2) second 3) third
А команда rm 'first second third' пытается удалить файл 'first second thired' Можно ли без кавычек? Тоже можно, но экранировать пробел: rm first\ second\ third В чем заключаются другие отличия между без кавычек, одинарные или двойные кавычки. Разница в обработке подстановок и переменных. Подстановки Что такое подстановки. ~ меняется на домашний каталог ~+ меняется на текущий каталог ~-