Advertisements

So verwenden Sie Heredoc als Texteditor

Es gibt eine etwas obskure Funktion in Linux- und Unix-Shells, mit der Sie eine Art Do-while-Schleife für den cat-Befehl öffnen können. Es heißt die Heredoc, und es ermöglicht Ihnen, mehr oder weniger einen Texteditor zu haben, egal welche Shell Sie verwenden. Die Syntax lautet:

$ cat << EOF >> example.txt

Die Zeichenfolge in der Mitte ist im Wesentlichen eine Bedingung, die die Schleife stoppt. Das heißt, wenn Sie alleine auf einer Zeile tippen, endet die Schleife. Während der Schleife wird alles, was Sie in Ihr Terminal eingeben, in die Zieldatei geleitet (in diesem Fall).

Installieren

Weitere Linux-Ressourcen

Solange Sie ein Terminal haben, haben Sie bereits die Möglichkeit, ein Heredoc zu initiieren. Ich habe diesen syntaktischen Trick in Bash, tsch und der Korn-Shell verwendet.

Verwendung von Heredoc

Um eine Heredoc-“Sitzung” zu öffnen, verwenden Sie den cat-Befehl mit Umleitung, die zuerst auf cat mit einer abschließenden Zeichenfolge zeigt (übliche Konvention ist EOF für “End Of File”, kann aber eigentlich alles sein). Nach dem abschließenden Schlüsselwort leiten Sie Ihre Ausgabe in eine Zieldatei um. Sie können dann direkt in Ihr Terminal tippen und die gängigsten Shell-Tastaturkürzel verwenden, um durch Ihre Arbeit zu navigieren. Ihre Sitzung endet, wenn Sie Ihre festgelegte Abschlusszeichenfolge in einer eigenen Zeile eingeben. Sie wissen, dass Sie sich in einer Heredoc-Schleife befinden, an der eindeutigen Eingabeaufforderung (normalerweise die > Charakter).

$ cat << EOF >> example.txt
> Everything you type here will be placed into example.txt when I type EOF on a line by itself. Until then, you can type...
>
> whatever...
>
> you want to type.
>
> EOF
$  

Alles, was Sie eingeben, während Ihr Terminal darauf wartet EOF wird in der Zieldatei abgelegt. Eingabeaufforderungszeichen werden weggelassen, und EOF selbst ist nicht Teil der Datei.

Everything you type here will be placed into example.txt when I type EOF on a line by itself. Until then, you can type...

whatever...

you want to type.

Realistisch gesehen werden Sie die Heredoc-Syntax wahrscheinlich nicht als Ersatz für einen guten Texteditor verwenden. Es ist ein großartiger schneller Trick, mehr als eine Zeile einzugeben, aber mehr als 10 Zeilen oder so beginnen, seine Nützlichkeit zu strapazieren. Sie können beispielsweise nicht nach oben gehen, um vorherige Zeilen zu bearbeiten, ohne die Verlaufsfunktion Ihrer Shell auszulösen. Abhängig von Ihrer Shell und ihrer Konfiguration können Sie möglicherweise nach oben und dann nach unten gehen, um Ihren Text abzurufen, und sich dann mit durch Ihren Text zurückbewegen Strg+B.

Die meisten Funktionen Ihrer Shell funktionieren wie erwartet, aber es gibt wahrscheinlich kein Rückgängigmachen und nur sehr wenig Fehlerbehebung.

Und außerdem ist selbst bei den minimalsten Installationen wahrscheinlich mindestens Vi oder ed installiert.

Und doch ist Heredoc immer noch nützlich! Es ist flexibler als Echo, und wenn Sie an einem Shell-Skript arbeiten, ist es unverzichtbar. Stellen Sie sich beispielsweise vor, Sie schreiben ein Installationsskript, um die Installation einer Reihe benutzerdefinierter Anwendungen zu automatisieren. Eine der Anwendungen wird nicht mit a verteilt .dekstop Datei, sodass sie nicht in Ihrem Anwendungsmenü angezeigt wird. Um dies zu beheben, entscheiden Sie sich, eine zu generieren .desktop Datei zum Zeitpunkt der Installation.

Anstatt a zu schreiben .desktop Datei und als externe Abhängigkeit für Ihr Installationsskript herumtragen, könnten Sie heredoc in Ihrem Installationsskript selbst verwenden:

#!/bin/sh

VERSION=${VERSION:-x.y.z}
PKGNAM=${VERSION:-example}
PKG="${PKGNAM}"-"${VERSION}"-`arch`.tgz

# download package
wget "${PKG}"
tar txvf "${PKG}"

# use here doc to create missing .desktop file
cat << EOF >> $HOME/.local/share/applications/example.desktop
[Desktop Entry]
Version=1.0
Type=Application
Name="${PKGNAM}"
Comment="${PKGNAM}"
Exec="${PKGNAM}" %F
EOF

# insert the rest of an install script...

Sie haben eine automatisierte Texteingabe in eine Datei, es ist kein Texteditor beteiligt (außer dem, den Sie natürlich zum Schreiben Ihres Skripts verwenden). Hier ist das Ergebnis .desktop Datei sieht so aus:

[Desktop Entry]
Version=1.0
Type=Application
Name=example
Comment=example
Exec=example %F

Wie Sie sehen können, können Sie Variablen im Heredoc verwenden und sie werden korrekt aufgelöst. Der EOF Zeichenfolge erscheint nicht in der Datei; es signalisiert nur das Ende des Heredocs.

Besser als Echo

Die Heredoc-Technik gilt im Allgemeinen als einfacher als echo oder printf, denn sobald Sie sich im Dokument befinden, können Sie tun, was Sie wollen. Es ist in diesem Sinne befreiend, aber im Vergleich zu einem richtigen Texteditor begrenzt.

Verwenden Sie heredoc für schnelle Notizen und für Shell-Skripte, und rätseln Sie nie wieder darüber, wie Sie Konfigurationsdateien dynamisch generieren können.

So verwenden Sie Heredoc als Texteditor

Leave a Reply

Your email address will not be published. Required fields are marked *

Scroll to top