Как я могу отредактировать файл, если нет vi, vim, joe и т. Д.?


35

Есть ли способ отредактировать файл, если нет vi, vim, joe, mcedit? Другими словами, есть ли способ отредактировать файл, используя только команды оболочки?


1
У меня тоже нет нано!
Эдуард Флоринеску

1
Это маршрутизатор, но я также видел в этой ситуации собственный шлюз :)
Эдуард Флоринеску

3
Сделайте копию файла, который вы хотите редактировать. Затем сделайте cat file, а затем cat >fileи расположите части с помощью cut + paste и / или напечатайте, затем закончите ctrl-d.
ot--

7
Это также случилось со мной, в докере. Это очень минималистично. Теперь, черт возьми, я делаю что-то подобное. Виртуальная машина эфемерна, я не могу использовать ssh или ftp, мне нужно использовать перенаправление и такие хаки, как sed, чтобы изменить некоторые файлы. Это был большой вызов. Посмотрите, насколько мы зависимы от редакторов: P
код ниндзя

3
Если это контейнер или доступ через другой хост, вы можете использовать echo <<EOF > new.file [paste here] EOF. Отредактируйте содержимое файла на главном ПК.
pztrick

Ответы:


18

В этом случае я бы попытался перенести файлы и отредактировать их на другом компьютере, а затем перенести обратно. Если у вас есть ssh, у вас должен быть scp (я надеюсь), чтобы вы могли загружать и выводить файлы. Если нет, вы также можете искать ftp для передачи файлов внутрь и наружу.

Если нет, то я думаю, что ваш лучший вариант - попытаться использовать перенаправление cat, grep, sed, echo и I / O (особенно при добавлении >>). И много временных файлов.

Хотя, если у вас есть доступ к perl (или к чему-то подобному), вы можете запустить его без аргументов, и он позволит вам вводить источник скрипта из стандартного ввода. Как только вы нажмете Ctrl + D, он сможет запустить скрипт. Вы можете использовать этот метод для создания файла. Это было бы более мощно, чем взламывание чего-либо в командной строке, как я упоминал ранее.


нет sshd но у меня есть telnetd
Эдуард Флоринеску

Тогда вы можете ftp?
Бен Ричардс

1
Я могу использовать перенаправление cat, grep, echo и I / O (особенно добавить с >>), но без sed
Эдуард Флоринеску

2
FTP работает :) теперь мне нужно посмотреть, где на этом маршрутизаторе у меня есть что-то, что доступно для записи.
Эдуард Флоринеску

3
Если вы подключены к своему устройству через telnet, я бы серьезно подумал о том, чтобы просто перегрузить файл в терминал (с достаточно большим буфером обратной прокрутки), скопировать / вставить все это в локальный редактор, внести изменения, а затем выполнить взбивание. что-то, что превратит это в серию эхо-команд, которые напишут файл замены.
afrazier

4

Я полагаю, что вы могли бы делать то, что вам нужно, grepи perl- искать нужную строку grep, редактировать эту строку perl( perlможет действовать как большая замена sed) и затем подтверждать, что вы не внесли больше изменений, чем предполагали diff filename filename.new. Если так, сделайте изменения постоянными -mv filename.new filename


3

Предполагая, что вы используете SSH в своем маршрутизаторе, вы также можете использовать различные утилиты для передачи файла обратно и четвертого на ваш компьютер / маршрутизатор. Вы можете загрузить копию на свой ПК, изменить ее, а затем отправить по SSH обратно на маршрутизатор через SFTP (см. Putty или WinSCP, если вы пользователь Windows).

Если вы используете специальную прошивку на маршрутизаторе / шлюзе, вам может повезти. Существуют различные пакеты Optware, содержащие простые (и небольшие) текстовые редакторы. В зависимости от ваших потребностей, вы можете получить nanoпакет или просто пойти на busyboxкоторый содержит vi.


2

Одним из способов будет вывод результата эха.

echo "foo" > bar.txt

Это создаст файл с именем bar.yxy с текстом «foo».


3
Это не совсем редактирование.
ДэвидПостилл

2
Получает работу, пока вы не можете получить редактор на нем.
Лэндон

1

Вы уничтожили / bin или что-то? В противном случае, возможно, вы могли бы взломать что-нибудь вместе с текстовыми утилитами в GNU Coreutils, которые должны быть стандартными в системе Linux.

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