Comment puis-je modifier un fichier s'il n'y a pas vi, vim, joe, etc.?

35

Existe-t-il un moyen de modifier un fichier s'il n'y a pas vi, vim, joe, mcedit? En d'autres termes, existe-t-il un moyen de modifier un fichier en utilisant uniquement les commandes shell?

Eduard Florinescu
la source
1
Je n'ai pas de nano non plus!
Eduard Florinescu
1
C'est un routeur, mais j'ai aussi vu une passerelle personnalisée dans cette situation :)
Eduard Florinescu
3
Faites une copie du fichier que vous souhaitez modifier. Ensuite , faites cat file, suivi cat >fileet arranger les pièces avec coupe + coller et / ou en tapant, avec finition ctrl-d.
ott--
7
Cela m'est aussi arrivé, en docker .. C'est très minimaliste. Maintenant, comment diable dois-je faire quelque chose comme ça. La VM est éphémère, je ne peux pas ssh ni ftp, je dois utiliser la redirection et des hacks comme sed pour changer certains fichiers. Ce fut un grand défi. Voyez à quel point nous dépendons des éditeurs: P
code ninja
3
S'il s'agit d'un conteneur ou accessible via un autre hôte, vous pouvez utiliser echo <<EOF > new.file [paste here] EOF. Modifiez le contenu du fichier sur le PC hôte.
pztrick

Réponses:

18

Dans ce cas, j'essayais de transférer des fichiers et de les modifier sur un autre ordinateur, puis de les transférer à nouveau. Si vous avez ssh, vous devriez avoir scp (j'espère), vous devriez donc être capable de pousser des fichiers vers l'intérieur et vers l'extérieur. Sinon, vous pouvez également rechercher ftp pour transférer des fichiers vers et depuis.

Sinon, je pense que votre meilleure option est d'essayer d'utiliser la redirection cat, grep, sed, echo et I / O (en particulier avec >>). Et beaucoup de fichiers temporaires.

Bien que si vous avez accès à perl (ou quelque chose de similaire), vous pouvez l'exécuter sans arguments et il vous permettra d'entrer une source de script à partir de l'entrée standard. Une fois que vous appuyez sur ctrl + d, il peut alors exécuter le script. Vous pouvez utiliser cette méthode pour créer un fichier. Ce serait plus puissant que de pirater quelque chose sur la ligne de commande comme je l'ai mentionné précédemment.

Ben Richards
la source
pas de sshd mais j'ai telnetd
Eduard Florinescu
Alors pouvez-vous ftp?
Ben Richards
1
Je peux utiliser la redirection cat, grep, echo et I / O (surtout avec >>) mais pas sed
Eduard Florinescu
2
Ftp fonctionne :) maintenant je dois voir où sur ce routeur j'ai quelque chose qui est accessible en écriture.
Eduard Florinescu
3
Si vous êtes connecté à votre appareil via telnet, je penserais sérieusement à simplement attacher le fichier au terminal (avec un tampon de défilement arrière suffisamment grand), copier / coller le tout dans un éditeur local, apporter vos modifications, puis fouetter quelque chose qui transformera cela en une série de commandes d'écho qui écriront un fichier de remplacement.
afrazier
4

J'imagine que vous pourriez faire ce dont vous avez besoin grepet perl- recherchez la ligne avec laquelle vous voulez grep, modifiez cette ligne avec perl( perlpeut agir comme un grand remplacement pour sed) et confirmez ensuite que vous n'avez pas apporté plus de modifications que vous ne le souhaitiez diff filename filename.new. Si oui, rendez les changements permanents -mv filename.new filename

AlexWebr
la source
3

En supposant que vous êtes SSH sur votre routeur, vous pouvez également utiliser divers utilitaires pour transférer le fichier en arrière et quatrième sur votre ordinateur / routeur. Vous pouvez télécharger une copie sur votre PC, la modifier, puis la renvoyer au routeur via SFTP (voir Putty ou WinSCP si vous êtes un utilisateur Windows).

Cependant, si vous utilisez un firmware personnalisé sur le routeur / la passerelle, vous aurez peut-être de la chance. Il existe différents packages Optware contenant des éditeurs de texte simples (et petits). En fonction de vos besoins, vous pouvez obtenir le nanopackage, ou tout simplement choisir celui busyboxqui contient vi.

Percée
la source
2

Une façon serait de produire le résultat d'un écho.

echo "foo" > bar.txt

Cela fera un fichier intitulé bar.yxy avec le texte contenant, "foo".

Se poser sur
la source
3
Ce n'est pas vraiment du montage.
DavidPostill
2
Obtient le travail, jusqu'à ce que vous puissiez obtenir un éditeur.
Landon
1

Avez-vous effacé / bin ou quelque chose? Sinon, vous pourriez peut-être pirater quelque chose avec les utilitaires de texte de GNU Coreutils qui devraient être standard sur un système Linux.

bobmagoo
la source