Як я можу редагувати файл, якщо немає vi, vim, joe тощо?


35

Чи є спосіб редагувати файл, якщо немає vi, vim, joe, mcedit? Іншими словами, чи є спосіб редагувати файл за допомогою лише команд оболонки?


1
У мене також немає нано!
Едуард Флорінеску

1
Це маршрутизатор, але я також бачив також власні шлюзи в цій ситуації :)
Едуард Флорінеску

3
Зробіть копію файлу, який ви бажаєте редагувати. Потім зробіть cat file, а потім cat >fileі розкладіть деталі з вирізом + вставкою та / або набравши, закінчіть ctrl-d.
ott--

7
Це трапилось і зі мною, в докері. Це дуже мінімалістично. Тепер, як чорт, я роблю щось подібне. VM є ефемерним, я не можу ssh ні ftp, мені потрібно використовувати перенаправлення та хакі, як sed, щоб змінити деякі файли. Це був великий виклик. Подивіться, наскільки ми надійні до редакторів: P
код ninja

3
Якщо це контейнер або доступ до якогось іншого хоста ви можете використовувати echo <<EOF > new.file [paste here] EOF. Редагування вмісту файлу на хост-ПК.
pztrick

Відповіді:


18

У цьому випадку я б спробував перенести файли та відредагувати їх на інший комп'ютер, а потім перенести їх назад. Якщо у вас є ssh, у вас повинен бути scp (я сподіваюся), тому ви маєте змогу виштовхувати файли в і виходити. Якщо ні, ви також можете шукати ftp для передачі файлів в і виходу.

Якщо ні, то я вважаю, що найкращим варіантом є спробувати скористатись перенаправленням котів, греп, сед, ехо та вводу / виводу (особливо додається >>). І багато тимчасових файлів.

Хоча якщо у вас є доступ до perl (або чогось подібного), ви можете запустити його без аргументів, і це дозволить вам ввести джерело сценарію зі стандартного введення. Після натискання клавіші ctrl + d він може запустити сценарій. Ви можете використовувати цей метод для створення файлу. Це було б сильніше, ніж зламати щось у командному рядку, як я вже згадував.


немає sshd, але у мене telnetd
Едуард Флорінеску

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

1
Я можу використовувати перенаправлення cat, grep, echo та I / O (особливо додавати >>), але не sed
Eduard Florinescu,

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
Це насправді не редагування.
DavidPostill

2
Виконує роботу, поки ви не зможете отримати редактора.
Ландон

1

Ви витерли / смітник чи щось таке? Інакше, можливо, ви могли б зламати щось разом із текстовими утилітами GNU Coreutils, які мають бути стандартними для системи Linux.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.