2014-01-08 4 views
5

Следующая команда мерзавец (которая удаляет все файлы, которые заканчиваются в ~) использует управляющие символыЭкранирование символов в структуре Глоб в Git

git rm \*~ 

Смысл заключается в том, что мерзавец использует собственную расширение файла в дополнение к расширению используемый оболочкой.

Означает ли это, что escape-символы являются способом подавления расширения имени файла, выполняемого оболочкой?

Как-то я не могу получить правильную ручку.

  • Почему git использует собственное расширение имени файла? Это потому, что расширение оболочки файла может работать по-разному в разных оболочках/ОС,
  • Если да, то почему бы не просто подавить расширение имени файла на уровне оболочки для команд Git, и позволяют мерзавец выполнять это собственную семантику с узорами Глоб

ответ

4

Да, escape-символ подавляет расширение имени файла, обычно выполняемое оболочкой Unix. Для того, чтобы ответить на подвопросы:

  1. git rm реализует свое собственное расширение, вероятно, потому, что файлы могут не присутствовать в извлеченном каталоге. (Подумайте о ситуации, когда вы первый rm *~, а затем помните, что вы также хотите, чтобы удалить их из git.)

  2. Использование символа обратной косой черты побег (или оберточной аргумент в кавычках) делает именно то, что - подавляет расширение имени файла на уровне оболочки. Это невозможно сделать git автоматически, потому что git не контролирует вашу оболочку, к моменту ее выполнения расширение уже закончено. Расширение должно быть предотвращено самой оболочкой или, что более реалистично, конечным пользователем, вызывающим git через оболочку.

Смежные вопросы