¿Cómo puedo editar un archivo si no hay vi, vim, joe, etc.?

35

¿Hay alguna manera de editar un archivo si no hay vi, vim, joe, mcedit? En otras palabras, ¿hay alguna manera de editar un archivo usando solo los comandos de shell?

Eduard Florinescu
fuente
1
¡Yo tampoco tengo nano!
Eduard Florinescu
1
Es un enrutador, pero también he visto una puerta de enlace personalizada en esta situación :)
Eduard Florinescu
3
Haga una copia del archivo que desea editar. Luego haga cat file, seguido cat >filey arregle las partes con cortar + pegar y / o escribir, termine con ctrl-d.
ott--
77
Esto también me sucedió a mí en Docker. Es muy minimalista. Ahora, ¿cómo diablos hago algo así? La VM es efímera, no puedo usar ssh ni ftp, tengo que usar la redirección y los hacks como sed para cambiar algunos archivos. Fue un gran desafío. Vea cuán dependientes somos de los editores: P
code ninja
3
Si se trata de un contenedor o se accede a través de otro host, puede usarlo echo <<EOF > new.file [paste here] EOF. Edite el contenido del archivo en la PC host.
pztrick

Respuestas:

18

En ese caso, intentaría transferir archivos y editarlos en otra computadora, luego los transferiría de nuevo. Si tiene ssh, debería tener scp (espero), por lo que debería poder insertar y extraer archivos. Si no, también puede buscar ftp para transferir archivos dentro y fuera.

Si no es así, creo que su mejor opción es intentar utilizar cat, grep, sed, echo y redirección de E / S (especialmente agregar con >>). Y muchos archivos temporales.

Aunque si tiene acceso a perl (o algo similar), puede ejecutarlo sin argumentos y le permitirá ingresar una fuente de script desde la entrada estándar. Una vez que presione ctrl + d, puede ejecutar el script. Podrías usar ese método para crear un archivo. Sería más poderoso que piratear algo en la línea de comando como mencioné antes.

Ben Richards
fuente
no sshd pero tengo telnetd
Eduard Florinescu
Entonces puedes ftp?
Ben Richards
1
Puedo usar cat, grep, echo y redirección de E / S (especialmente agregar con >>) pero no sed
Eduard Florinescu
2
Ftp funciona :) ahora necesito ver en qué parte de este enrutador tengo algo que se pueda escribir.
Eduard Florinescu
3
Si está conectado a su dispositivo a través de telnet, pensaría seriamente en capturar el archivo en la terminal (con un búfer de desplazamiento suficiente), copiar / pegar todo en un editor local, hacer los cambios y luego azotar arriba algo que lo convertirá en una serie de comandos de eco que escribirán un archivo de reemplazo.
Afrazier
4

Me imagino que podría hacer lo que necesita grepy perl, busque la línea que desea grep, edite esa línea con perl( perlpuede actuar como un gran reemplazo para sed) y luego confirme que no hizo más cambios de los que pretendía diff filename filename.new. Si es así, haga los cambios permanentes:mv filename.new filename

AlexWebr
fuente
3

Suponiendo que está utilizando SSH en su enrutador, también puede usar varias utilidades para transferir el archivo de regreso y cuarto a su computadora / enrutador. Puede descargar una copia en su PC, modificarla y luego volver a enviarla en SSH al enrutador mediante SFTP (consulte Putty o WinSCP si es un usuario de Windows).

Sin embargo, si está utilizando un firmware personalizado en el enrutador / puerta de enlace, es posible que tenga suerte. Hay varios paquetes de Optware que contienen editores de texto simples (y pequeños). Dependiendo de sus necesidades, puede obtener el nanopaquete o simplemente buscar el busyboxque contiene vi.

Penetración
fuente
2

Una forma sería generar el resultado de un eco.

echo "foo" > bar.txt

Esto creará un archivo titulado bar.yxy con el texto que contiene "foo".

Aterrizar
fuente
3
Eso no es realmente editar.
DavidPostill
2
Hace el trabajo, hasta que pueda obtener un editor.
Landon
1

¿Eliminaste / bin o algo? De lo contrario, tal vez podría hackear algo junto con las utilidades de texto en los Coreutils de GNU que deberían ser estándar en un sistema Linux.

bobmagoo
fuente