GNU/Linux >> LINUX-Kenntnisse >  >> Linux

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 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

  • Spickzettel für Linux-Befehle
  • Spickzettel für fortgeschrittene Linux-Befehle
  • Kostenloser Online-Kurs:RHEL Technical Overview
  • Spickzettel für Linux-Netzwerke
  • SELinux-Spickzettel
  • Spickzettel für allgemeine Linux-Befehle
  • Was sind Linux-Container?
  • Unsere neuesten Linux-Artikel

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.

Hierdokument verwenden

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. An der eindeutigen Eingabeaufforderung (normalerweise > ) erkennen Sie, dass Sie sich in einer Heredoc-Schleife befinden Zeichen).

$ 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 auf EOF wartet 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 Strg+B durch Ihren Text zurückbewegen .

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 zum Beispiel vor, Sie schreiben ein Installationsskript, um die Installation einer Reihe benutzerdefinierter Anwendungen zu automatisieren. Eine der Anwendungen wird nicht mit einem .dekstop verteilt Datei, sodass sie nicht in Ihrem Anwendungsmenü angezeigt wird. Um dies zu beheben, entscheiden Sie sich, eine .desktop zu generieren Datei bei der Installation.

Anstatt eine .desktop zu schreiben 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, was das Ergebnis .desktop ist 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 innerhalb des Heredocs Variablen 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 kurze Notizen und für Shell-Skripte, und rätseln Sie nie wieder darüber, wie Sie Konfigurationsdateien dynamisch generieren können.


Linux
  1. Lernen Sie, den Sed-Texteditor zu verwenden

  2. So installieren und verwenden Sie Nano-Texteditor-Befehle unter Linux

  3. So installieren Sie den Atom-Texteditor unter Ubuntu 18.04

  4. So verwenden Sie den Grep-Befehl, um Text in Dateien zu finden

  5. So verwenden Sie den Texteditor in InstantSite.

BENUTZUNG DES SED-EDITORS

So installieren Sie den Atom Texteditor auf Fedora 35

So installieren Sie den Nano-Texteditor unter AlmaLinux 8

So installieren Sie den Atom-Texteditor unter AlmaLinux 8

So installieren Sie den Atom-Texteditor auf Manjaro 20

So löschen Sie ausgewählten Text im vi-Editor