Для удаления строки под курсором использовать dd
.
Удалить команда принимает все нормальные позиционные модификаторы, поэтому если Вы находитесь в начале строки ниже той, Вы хотите удалить, Вы могли просто dk
для входа удаляют режим и перемещают одну строку вверх, удаляя все, что курсор передал.
Можно также указать повторение, таким образом, 5dd
удалит строку под курсором пять раз, эффективно удаляя ток и после четырех строк.
Используйте "-", чтобы заставить комнату прекратить анализировать параметры командной строки, как это:
rm -- --help
--
особенно.
– jw013
26.12.2011, 23:47
-
из текстовых утилит или cd
, foo=bar
из awk
...
– Stéphane Chazelas
17.06.2015, 13:31
rm -- <filename>
не сделал.
– StockB
31.10.2017, 16:31
Ответы Vegar Nilsen и edfuh очень хороши и надлежащие решения проблемы как это.
Я действительно хочу добавить общий ответ на этот вопрос, который позволяет Вам удалять любой файл с трудным именем файла. Сначала его inode число получено с помощью ls -i
или некоторая форма stat
и затем файл удален путем поиска файлов в текущем каталоге inode числом и выполнения rm
команда на файле с соответствием inode число
find . -inode <inode> -exec rm {}\;
С тех пор inode числа уникальны в каждой файловой системе, можно удалить любой файл с помощью этого; unicode или использующий символы ESC. Это - как когда-либо очень раздражающий для вывода так я рекомендовал бы добавить строку
TAB: menu-complete # Tab: Cycles through the command
"\e[Z": menu-complete-backward # Shift-Tab: Cycles backwards
в Ваш .inputrc
файл, если Вы используете удар. Это позволяет Вам циклически повторяться через список возможных завершений (для получения дополнительной информации).
find -name '--help' -delete
– aculich
06.12.2011, 03:36
rm --help
, который все еще не удалит файл. Просто используйте rm ./--help
(или rm -i *
.
– Keith Thompson
06.12.2011, 09:16
find
префиксы путь параметра командной строки ко всем файлам, таким образом, это работало бы rm ./--help
и rm ./sub/dirs/--help
. Для фиксации второго нужно было бы добавить -maxdepth 1
, но все это по существу применяет решение @edfuh более окольным, замысловатым способом, и -delete
более безопасно, чем -exec rm
так или иначе.
– jw013
26.12.2011, 23:39
{}
и \;
, иначе это не будет работать.
– Eugene S
22.05.2012, 17:08
-xdev
. Это не поможет Вам выполнить это ls -i --help
.
– Stéphane Chazelas
17.06.2015, 15:16
Использовать find
сделать это:
find . -name '--help' -delete
И это - хороший метод, потому что, если у Вас есть более затем несколько файлов как это, что можно удалить Вас, может получить список предварительного просмотра файлов просто рабочей находкой без -delete
опция сначала, и затем если список файлов выглядит хорошим просто, выполняет его снова с -delete
.
На самом деле, Вы предотвращение rm
в пользу find
(особенно с предварительным просмотром сначала), хорошая привычка, которая поможет Вам избежать ошибок с rm *
это неизбежно укусит Вас однажды.
Обратите внимание, тем не менее, что находка рекурсивно вызовет через все Ваши подкаталоги, таким образом, Вы могли бы хотеть выполнить ее с ограничением глубины подкаталога как это:
find . -maxdepth 1 -name '--help' -delete
который ограничивает находку текущим каталогом.
find
список файлов/директоров для изучения. Так find . -name...
. -delete
и -maxdepth
не стандартные опции также.
– Stéphane Chazelas
17.06.2015, 15:17
Полуночный командующий (mc
) является самым легким, просто укажите на него и поразите F8 ;)
apt-get install mc || yum install mc; mc
различные клавиши со стрелками и F8 легче, чем rm ./--help
?
– Josh
11.12.2014, 18:33
Если Вы хотите переименовать файл, -.bar
, (mv не будет работать), попробуйте это:
cat >foo.bar <-.bar
перед использованием команды:
rm -- -.bar
Необходимо смочь исследовать содержание исходного файла в foo.bar
Жестокое решение:
perl -e "unlink '--help' or die 'Could not unlink.';"
perl -e "rmdir '-d' or die 'Could not rmdir.';"
Linux Пошаговое руководство по созданию файла с дефисами и пробелами, а затем его удалению .
БУДЬТЕ ОСТОРОЖНЫ! Не запускайте случайно команду rm -rf /
или аналогичную команду каскадного удаления.
Если ваш файл, который вы пытаетесь удалить, содержит звездочки или косые черты, не вставляйте случайно .
или / *
или *
или какой-либо другой подстановочный знак, который может каскадно удалить вашу операционную систему.
Создайте файл с именем "--yo yo"
eric@dev ~ $ touch -- "--yo yo"
eric@dev ~ $ ls
bin --yo yo
Сначала найдите его с помощью find:
eric@dev ~ $ find . -name "*--yo yo*"
./--yo yo
Убедитесь, что команда find находит ТОЛЬКО ОДИН файл, который вы хотите удалить:
Затем передайте параметр -delete найти, удалить их:
eric@dev ~ $ find . -name "*--yo yo*" -delete
eric@dev ~ $ ls
bin
Аааа и его больше нет.
вот решение, которое я использовал до того, как нашел эту тему.
используйте vim
для "редактирования" каталога:
vim .
затем (в vim) выберите ваш файл, нажмите del и подтвердите удаление.
когда вы закончите, выйдите из vim с помощью :q
Вы пытались добавить имя каталога в качестве префикса:
$ rm./-filename.txt dirname/-filename2.txt
$ mv./-filename.txt filename.txt
$ cp teste./-teste
Использование каталога в качестве префикса файла в целом помогает избежать неправильной интерпретации символа «минус» как опции команды функцией парсера.
rm
управляйте поддерживают--
аргумент? – Keith Thompson 06.12.2011, 09:18--
предшествуйте GNU (SysIII, 1980), и стандарт/POSIX. Стандартные утилиты за исключением нескольких исключений (какecho
) понять--
. YMMV для других команд, если они не используют getopt () API для парсинга опций. – Stéphane Chazelas 17.06.2015, 15:08