Come posso modificare un file se non ci sono vi, vim, joe, ecc?


35

C'è un modo per modificare un file se non ci sono vi, vim, joe, mcedit? In altre parole, c'è un modo per modificare un file usando solo i comandi della shell?


1
Neanche io ho nano!
Eduard Florinescu,

1
È un router, ma ho anche visto un gateway personalizzato in questa situazione :)
Eduard Florinescu,

3
Crea una copia del file che desideri modificare. Quindi fare cat file, seguito da cat >filee disporre le parti con cut + paste e / o digitando, finire con ctrl-d.
ott--

7
Questo è successo anche a me, nella finestra mobile. È molto minimalista. Ora come diamine faccio qualcosa del genere. La VM è effimera, non posso ssh né ftp, devo usare il reindirizzamento e gli hack come sed per cambiare alcuni file. È stata una grande sfida. Guarda come siamo dipendenti dagli editor: P
code ninja

3
Se si tratta di un contenitore o vi si accede tramite un altro host, è possibile utilizzare echo <<EOF > new.file [paste here] EOF. Modifica i contenuti del file sul PC host.
pztrick,

Risposte:


18

In quel caso, proverei a trasferire i file e modificarli su un altro computer, quindi trasferirli di nuovo. Se hai ssh, dovresti avere scp (spero), quindi dovresti essere in grado di spingere dentro e fuori i file. In caso contrario, puoi anche cercare ftp per trasferire i file dentro e fuori.

In caso contrario, penso che la tua migliore opzione sia quella di provare a utilizzare il reindirizzamento di gatto, grep, sed, echo e I / O (in particolare aggiungere >>). E molti file temporanei.

Tuttavia, se hai accesso a perl (o qualcosa di simile), puoi eseguirlo senza argomenti e ti permetterà di inserire una fonte di script dall'input standard. Dopo aver premuto ctrl + d, può quindi eseguire lo script. È possibile utilizzare quel metodo per creare un file. Sarebbe più potente dell'hacking di qualcosa sulla riga di comando, come ho detto prima.


no sshd ma ho telnetd
Eduard Florinescu il

Allora puoi ftp?
Ben Richards,

1
Posso usare il reindirizzamento di gatto, grep, echo e I / O (specialmente append con >>) ma niente sed
Eduard Florinescu

2
Ftp funziona :) ora ho bisogno di vedere dove su questo router ho qualcosa che è scrivibile.
Eduard Florinescu,

3
Se sei connesso al tuo dispositivo tramite telnet, penserei seriamente di catturare il file sul terminale (con un buffer di backscroll sufficientemente grande), copiare / incollare il tutto in un editor locale, apportare le modifiche e quindi montare qualcosa che lo trasformerà in una serie di comandi echo che scriveranno un file sostitutivo.
Afrazier

4

Immagino che potresti fare ciò di cui hai bisogno grepe perl- cercare la linea con cui vuoi grep, modificarla con perl( perlpuò agire come una grande sostituzione per sed) e quindi confermare che non hai apportato più modifiche di quanto volevi fare diff filename filename.new. In tal caso, rendere permanenti le modifiche -mv filename.new filename


3

Supponendo che stai inserendo SSH nel tuo router, puoi anche utilizzare varie utility per trasferire il file indietro e quarto sul tuo computer / router. Puoi scaricare una copia sul tuo PC, modificarla, quindi SSH sul router tramite SFTP (vedi Putty o WinSCP se sei un utente Windows).

Se stai utilizzando un firmware personalizzato sul router / gateway, tuttavia, potresti essere fortunato. Esistono vari pacchetti Optware che contengono editor di testo semplici (e piccoli). A seconda delle esigenze, è possibile ottenere il nanopacchetto o semplicemente cercare busyboxquale contiene vi.


2

Un modo sarebbe quello di produrre il risultato di un'eco.

echo "foo" > bar.txt

Questo renderà un file intitolato bar.yxy con il testo contenente "pippo".


3
Non è proprio il montaggio.
DavidPostill

2
Completa il lavoro, fino a quando non puoi ottenere un editor.
Landon,

1

Hai cancellato / bin o qualcosa del genere? Altrimenti forse potresti hackerare qualcosa insieme alle utility di testo in GNU Coreutils che dovrebbero essere standard su un sistema Linux.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.