Wie kann ich eine Datei bearbeiten, wenn es kein vi, vim, joe usw. gibt?

35

Gibt es eine Möglichkeit, eine Datei zu bearbeiten, wenn es keine vi, vim, joe, mcedit gibt? Mit anderen Worten, gibt es eine Möglichkeit, eine Datei nur mit den Shell-Befehlen zu bearbeiten?

Eduard Florinescu
quelle
1
Ich habe auch keinen Nano!
Eduard Florinescu
1
Es ist ein Router, aber ich habe in dieser Situation auch ein benutzerdefiniertes Gateway gesehen :)
Eduard Florinescu
3
Erstellen Sie eine Kopie der Datei, die Sie bearbeiten möchten. Dann machen Sie cat file, gefolgt von cat >fileund ordnen Sie die Teile mit Ausschneiden + Einfügen und / oder Tippen an, beenden Sie mit ctrl-d.
ott--
7
Das ist mir auch im Hafen passiert. Es ist sehr minimalistisch. Wie zum Teufel mache ich so etwas? Die VM ist kurzlebig, ich kann weder ssh noch ftp, ich muss Redirection und Hacks wie sed verwenden, um einige Dateien zu ändern. Es war eine große Herausforderung. Sehen Sie, wie angewiesen sind wir auf die Redaktion: P
Code ninja
3
Wenn dies ein Container ist oder über einen anderen Host zugegriffen werden kann echo <<EOF > new.file [paste here] EOF. Bearbeiten Sie den Inhalt der Datei auf dem Host-PC.
pztrick

Antworten:

18

In diesem Fall würde ich versuchen, Dateien zu übertragen und sie auf einem anderen Computer zu bearbeiten und sie dann zurück zu übertragen. Wenn du ssh hast, solltest du scp haben (hoffe ich), damit du Dateien rein und raus schieben kannst. Wenn nicht, können Sie auch nach ftp suchen, um Dateien zu übertragen.

Wenn nicht, ist es meiner Meinung nach die beste Option, cat, grep, sed, echo und die E / A-Umleitung zu verwenden (insbesondere mit anhängen >>). Und viele temporäre Dateien.

Wenn Sie jedoch Zugriff auf Perl (oder etwas Ähnliches) haben, können Sie es ohne Argumente ausführen und eine Skriptquelle über die Standardeingabe eingeben. Sobald Sie Strg + d gedrückt haben, kann das Skript ausgeführt werden. Mit dieser Methode können Sie eine Datei erstellen. Es wäre mächtiger, als etwas auf der Kommandozeile zu hacken, wie ich bereits erwähnt habe.

Ben Richards
quelle
Kein SSHD, aber ich habe Telnetd
Eduard Florinescu
Dann können Sie FTP?
Ben Richards
1
Ich kann cat, grep, echo und I / O-Umleitung verwenden (insbesondere mit >> anhängen), aber keinen sed
Eduard Florinescu
2
FTP funktioniert :) Jetzt muss ich sehen, wo auf diesem Router ich etwas habe, das beschreibbar ist.
Eduard Florinescu
3
Wenn Sie über Telnet mit Ihrem Gerät verbunden sind, würde ich ernsthaft darüber nachdenken, die Datei einfach auf das Terminal zu catten (mit einem ausreichend großen Backscroll-Puffer), das Ganze in einen lokalen Editor zu kopieren / einzufügen, Ihre Änderungen vorzunehmen und dann zu peitschen Up etwas, das das in eine Reihe von Echo-Befehlen verwandelt, die eine Ersatzdatei schreiben.
afrazier
4

Ich stelle mir vor, Sie könnten tun, was Sie brauchen, grepund perl- suchen Sie nach der Zeile, mit der Sie möchten grep, bearbeiten Sie diese Zeile mit perl(dies perlkann ein großer Ersatz für sein sed), und bestätigen Sie dann, dass Sie nicht mehr Änderungen vorgenommen haben, als Sie beabsichtigt hatten diff filename filename.new. Wenn ja, machen Sie die Änderungen dauerhaft -mv filename.new filename

AlexWebr
quelle
3

Angenommen, Sie verwenden SSH in Ihrem Router, können Sie auch verschiedene Dienstprogramme verwenden, um die Datei zurück und viertens auf Ihren Computer / Router zu übertragen. Sie können eine Kopie auf Ihren PC herunterladen, sie ändern und dann über SFTP auf den Router zurücksenden (siehe Putty oder WinSCP, wenn Sie ein Windows-Benutzer sind).

Wenn Sie jedoch eine benutzerdefinierte Firmware auf dem Router / Gateway verwenden, haben Sie möglicherweise Glück. Es gibt verschiedene Optware-Pakete, die einfache (und kleine) Texteditoren enthalten. Abhängig von Ihren Bedürfnissen können Sie das nanoPaket erhalten oder einfach loslegenbusybox welches es enthält vi.

Durchbruch
quelle
2

Eine Möglichkeit wäre, das Ergebnis eines Echos auszugeben.

echo "foo" > bar.txt

Dadurch wird eine Datei mit dem Titel "bar.yxy" mit dem enthaltenen Text "foo" erstellt.

Landon
quelle
3
Das ist eigentlich keine Bearbeitung.
DavidPostill
2
Erledigt die Arbeit, bis Sie einen Editor dafür haben.
Landon
1

Haben Sie / bin oder etwas ausgelöscht? Ansonsten könnten Sie vielleicht zusammen mit den Text-Dienstprogrammen in den GNU Coreutils etwas hacken , das auf einem Linux-System Standard sein sollte.

Bobmagoo
quelle