Как создать файл с символом «#» в имени в Unix?


5

Я уже пробовал много команд для создания файла и удаления файла с # характер, но это не работает. Может кто-нибудь сказать мне команду для создания, а затем удалить файл, который начинается с #?


2
Примечание. Вы должны сказать «имя файла, которое начинается с символа #», а не файл, в противном случае некоторые люди (например, я) подумают, что вы имеете в виду, что первая строка файла должна начинаться с #.
Robin Green

Ответы:


11

Два канонических способа создания / удаления файлов с «забавными персонажами»:

  1. квотирование как показал Алекс. Вы можете использовать одинарные или двойные кавычки, в зависимости от ваших потребностей расширения. Обратная косая черта может использоваться, чтобы избежать единственного забавного персонажа. Это работает до тех пор, пока имя файла не выглядит как опция (начинается с тире).
  2. Если файл выглядит как вариант, готовить путь : rm ./- "./-rf ."

Современные версии утилит Unix часто поддерживают двойной тире указать конец вариантов. В таких системах rm -- - удаляет файл с именем -,

Обратите внимание, что вы не можете создавать или удалять файлы с косой чертой или ASCII NUL в их имени. Если у вас есть такой файл (я их видел), то что-то в вашей файловой системе пошло не так.

В вашем конкретном случае с хешем #проблема заключается в интерпретации слова оболочки, начинающейся с # как начало комментарий оболочки , Хорошая оболочка позволяет отключить эту функцию оболочки, которая называется интерактивные комментарии :

  • ЗШ: unsetopt interactivecomments
  • Баш: shopt -u interactive_comments

С этим вы можете просто touch #; rm # без хлопот.


5

Делать...

touch "#file"

Удалить...

rm "#file"

2
Также touch \#file или же rm \#file
Kevin Lacquement

2
или же touch '#file' а также rm '#file'
Philipp

спасибо за вашу помощь но если что создать файл и удалить файл, используя символ "-", почему не может уже?

Так как - вводит варианты. rm - смотрит на rm как ты забыл вариант и таким образом жалуется.
Jens
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.