По-видимому, $ENV
расширен до $HOME/.kshrc
в
send "export OLD=10.10.10.10 ; export NEW=1.1.1.1 ; perl -i -pe 's/\Q$HOME/.kshrc{OLD}\E/$HOME/.kshrc{NEW}/' /etc/hosts\r
Вы могли
канава ожидает в пользу плоскости ssh: ssh root@12.219.102.43 -- sed -i s/$OLD/$NEW/ /etc/hosts
С надлежащей установкой ключей Вам не нужен пароль также.
Несколько вещей, которые вы можете попробовать:
Попробуйте заполнить файл с помощью автозавершения вкладок. Например
rm .[TAB].
Переместите все остальные файлы из этого каталога в другое место, а затем удалите этот каталог. Это должно избавиться от файла.Переместить все другие файлы и просто запустить (предполагая, что GNU [11915]find[11916]) это:
find . -тип f -delete
Удалить все файлы в директории, которые начинаются с точки:
rm -r .*.Получите код файла и удалите его, используя это. [11921]ls -i
should[11924] should[11924] show you inode. В качестве альтернативы, запуститеfind . -printf "%i %f\n".
После того, как вы получили код, попробуйте удалить, используя [11927]find[11928] again:
find . -inum XXX -delete
Попробуй этот сценарий на Perl. Измените имя [11931]dirname[11932] для каталога, содержащего файл, и запустите его из родительского каталога. Итак, если ваш файл [11933]~/foo/file[11934] запустите его в [11935]~/[11936] и измените [11937]dirname[11938] на [11939]foo[11940].
perl -e 'use File::Path qw(remove_tree); remove_tree("dirname")'.
Возможно, вы не сможете удалить его из-за символа CR (\r
). Вы можете попробовать следующее:
stty sane < /dev/whatever
stty intr ^c < /dev/whatever
И посмотреть, удалит ли он его.
.Когда у меня были подобные проблемы, я мог удалять файлы по inode
первая колонка inode
Чтобы удалить его
Такие симптомы обычно связаны с невозможностью дать правильное имя файлу rm(1)
. Одно из решений - сделать что-то вроде:
(т.е. попросить удалить все файлы с именем *
, но попросить каждый из них).
Чтобы узнать точное имя, может помочь ls -ba
(дать C escapes для "странных" символов, перечислить все файлы). Есть и другие (GNU) ls-флаги, которые могут быть полезны