Как удалить имя файла ":?"

Как удалить имя файла ":?"

:~Я случайно создал имя файла в оболочке bash

scp foo :~

Как это удалить?

решение1

попробуй rm ':?'или rm ":?"илиrm :\?

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

Вот некоторые специальные символы, которые я могу насчитать:

*
|
$
&
#
<>
;
space/tab/newline
\
brackets/parenthesis/braces
'"`
?
etc

Я предлагаю использовать одинарные кавычки, чтобы предотвратить удаление неправильно названного файла my_fileвместо $filewith rm $fileили rm "$file"when file='my_file'. Символ одинарной кавычки — единственный символ, который вы не можете заключить в одинарные кавычки в оболочках типа Bourne, но вы всегда можете заключить в кавычки остальную часть имени файла с помощью '...'и 'саму себя как \':

rm -- '-$#~<>'\''"*?[]{}'`

Обратите внимание, что это -не является чем-то особенным для оболочки, но это особенно в rmтом, что если он находится в начале аргумента, он рассматривается как опция. Здесь говорится, --что rmаргументы, которые следуют за ним, не должны рассматриваться как опции, даже если они начинаются с -.

решение2

В общем, когда вы хотите удалить файл со странным именем, вы можете попробовать использовать маркер --, который обозначает конец опций. Все, что находится после этого флага, обрабатывается как позиционный параметр. (См. также:Что означает «--» (двойное тире)?)

Итак, это было бы

rm -i -- :?

(Как предположил @Doug O'Neal, эта -iопция запрашивает перед удалением подтверждение, чтобы убедиться, что вы удаляете нужный файл.)

Однако в этом случае ?будет расширен оболочкой как символ glob. Поэтому вышесказанное не сработает.

В этом случае вы можете использовать функцию автозаполнения оболочки. Перейдите в каталог, где находится файл со странным именем, затем введите rm :(не нажимая Enter), а затем нажмите Tab, чтобы просмотреть все файлы в текущем каталоге. Файл со странным именем будет отображаться правильно заключенным в кавычки.

Связанный контент