Wie kann ich ein vi-Befehl in shell-Skript?
Ich bin mit CentOS 6.7
Will ich öffnen test.txt vi und text einfügen "hihi"
dann speichern und beenden von vi.
#! /bin/bash
vi test.txt << 'END'
i
hihi
press ESC
w
q
END
Ergebnis wie dieses
Vim: Warning: Input is not from a terminal
Vim: Error reading input, exiting...
Vim: preserving files...
Vim: Finished.
Wie kann ich es beheben?
Ich schlage vor, die Lösung für Ihre Anwendungsfall ist die Verwendung von cat-Befehl im append-Modus
Was ist der Punkt, der mit
Was ist der Punkt, der mit
vi
für das, was Sie wollen?InformationsquelleAutor | 2016-06-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es viele Möglichkeiten zum erstellen oder ändern von text-Dateien, angefangen von
cat
zused
zuawk
zued
. Ich gehe davon aus, obwohl, dass Sie einen guten Grund für den Wunsch zu verwendenvi
.Diesen Befehl ausprobieren:
In Betrieb, diese sieht wie folgt aus:
Fand ich dieses Konzept als brüchig: wenn
vi
Erfahrungen ein Fehler, keine Meldung zu sehen sein wird., Wie es funktioniert
Müssen wir
vi
zu sehen, ein escape-Zeichen. Es gibt viele Möglichkeiten, das zu tun. Bleibe ich bei den bash ' s$'...'
Zeichenfolgen als es entweichen kann eingegeben werden als eine einfache zwei-Zeichen-string:\E
. Die Schritte, die wir verwenden, sind:i
führt einfügen - Modus.Den vier Zeichen
hihi
eingetragen sind, in den Puffer.Flucht
\E
exits einfügen - Modus.:x\n
beendet mit speichern.InformationsquelleAutor John1024
Brauchen Sie nicht, um mit vi für etwas so einfach. Sie können
echo
. Zum Beispiel:Wenn Sie wirklich versuchen, zu tun, etwas komplexer, poste mehr details.
InformationsquelleAutor Tigger
Aufruf von vim aus bash:
Können Sie auch prüfen wollen, "ed". Das ist ein editor mit ähnlichen Befehlen für den vi, aber es ist eigentlich entwickelt, um aus Skripten aufgerufen.
i
ist nicht, um in den Einfügemodus zu wechseln. Es ist eigentlich ein cmd-line Befehl:i
oder:insert
. Siehe vimhelp.appspot.com/insert.txt.html#%3AinsertInformationsquelleAutor betterworld
vi
ist historicaly die visual Modus einer alten editorex
eine erweiterte version der guten altened
. Sie können immer wieder auf die alte Linie Modus mitex
odervi -e
.So, nur Lesen von der Standardeingabe, also kann es leicht verwendet werden, die in bash-Skripten.
Hier wäre es
(der Punkt wird verwendet, um aus dem Eingabe-Modus in den Online Modus, wie in
ed
)InformationsquelleAutor Serge Ballesta