Como posso editar um arquivo se não houver vi, vim, joe, etc?


35

Existe uma maneira de editar um arquivo se não houver vi, vim, joe, mcedit? Em outras palavras, existe uma maneira de editar um arquivo usando apenas os comandos do shell?


11
Também não tenho nano!
Eduard Florinescu

11
Seu roteador um, mas também eu vi também um gateway personalizado nesta situação :)
Eduard Florinescu

3
Faça uma cópia do arquivo que você deseja editar. Em seguida cat file, siga cat >filee organize as peças com recortar + colar e / ou digitar, finalize com ctrl-d.
#

7
Isso também aconteceu comigo, no docker .. É muito minimalista. Agora, como diabos eu faço algo assim. A VM é efêmera, não posso ssh nem ftp, tenho que usar o redirecionamento e hacks como o sed para alterar alguns arquivos. Foi um grande desafio. Veja como somos dependentes de editores: P
code ninja

3
Se este for um contêiner ou acessado através de outro host, você poderá usar echo <<EOF > new.file [paste here] EOF. Edite o conteúdo do arquivo no PC host.
Pztrick 22/08/17

Respostas:


18

Nesse caso, eu tentaria transferir arquivos e editá-los em outro computador e depois transferi-los de volta. Se você possui ssh, deve ter scp (espero), para poder enviar e receber arquivos. Caso contrário, você também pode procurar por ftp para transferir arquivos para dentro e para fora.

Caso contrário, acho que sua melhor opção é tentar usar o redirecionamento cat, grep, sed, echo e E / S (especialmente anexado a >>). E muitos arquivos temporários.

Embora se você tiver acesso ao perl (ou algo semelhante), poderá executá-lo sem argumentos e permitirá inserir uma fonte de script a partir da entrada padrão. Depois de pressionar ctrl + d, ele pode executar o script. Você pode usar esse método para criar um arquivo. Seria mais poderoso do que invadir algo na linha de comando, como mencionei antes.


não sshd mas eu telnetd
Eduard Florinescu

Então você pode ftp?
Ben Richards

11
Eu posso usar cat, grep, eco, e I / O redirecionamento (especialmente de acréscimo com >>), mas nenhum sed
Eduard Florinescu

2
FTP funciona :) agora eu preciso ver onde neste roteador eu tenho algo que é gravável.
Eduard Florinescu

3
Se você estiver conectado ao seu dispositivo via telnet, eu seriamente pensaria em transferir o arquivo para o terminal (com um buffer backscroll suficientemente grande), copiar / colar a coisa toda em um editor local, fazer suas alterações e depois chicotear criar algo que transformará isso em uma série de comandos de eco que gravarão um arquivo de substituição.
precisa saber é o seguinte

4

Eu imagino que você possa fazer o que precisa grepe perl- procure a linha com a qual deseja grep, edite essa linha perl( perlpode atuar como um grande substituto sed) e depois confirme que não fez mais alterações do que pretendia diff filename filename.new. Nesse caso, torne as alterações permanentes -mv filename.new filename


3

Supondo que você esteja fazendo o SSH no seu roteador, você também pode usar vários utilitários para transferir o arquivo de volta para o seu computador / roteador. Você pode baixar uma cópia no seu PC, modificá-la e enviá-la novamente ao roteador via SFTP (consulte Putty ou WinSCP se você for um usuário do Windows).

Se você estiver usando um firmware personalizado no roteador / gateway, no entanto, pode estar com sorte. Existem vários pacotes Optware que contêm editores de texto simples (e pequenos). Dependendo das suas necessidades, você pode obter o nanopacote ou apenas ir para o busyboxque contém vi.


2

Uma maneira seria produzir o resultado de um eco.

echo "foo" > bar.txt

Isso criará um arquivo chamado bar.yxy com o texto que contém "foo".


3
Isso não é realmente edição.
DavidPostill

2
Faz o trabalho, até você conseguir um editor.
Landon

1

Você apagou / bin ou algo assim? Caso contrário, talvez você possa hackear algo junto com os utilitários de texto no GNU Coreutils, que devem ser padrão em um sistema Linux.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.