GNU/Linux >> Znalost Linux >  >> Linux

Jak používat heredoc jako textový editor

V prostředí Linux a Unix existuje poněkud obskurní funkce, která vám umožňuje otevřít určitou smyčku do-while pro příkaz cat. Jmenuje se heredoc a umožňuje vám mít víceméně textový editor bez ohledu na to, jaký shell používáte. Syntaxe je:

$ cat << EOF >> example.txt

Řetězec uprostřed je v podstatě podmínkou, která zastaví smyčku. To znamená, že pokud napíšete samostatně na řádek, smyčka skončí. Během cyklu je vše, co zadáte do terminálu, přeneseno do cílového souboru (v tomto případě).

Instalace

Další zdroje pro Linux

  • Cheat pro příkazy Linuxu
  • Cheat sheet pro pokročilé příkazy systému Linux
  • Bezplatný online kurz:Technický přehled RHEL
  • Síťový cheat pro Linux
  • Cheat sheet SELinux
  • Cheat pro běžné příkazy pro Linux
  • Co jsou kontejnery systému Linux?
  • Naše nejnovější články o Linuxu

Dokud máte terminál, již máte možnost iniciovat heredoc. Tento syntaktický trik jsem použil v Bash, tsch a Korn shell.

Použití heredoc

Chcete-li otevřít "relaci" heredoc, použijte příkaz cat s přesměrováním, který nejprve ukazuje na cat s ukončovacím řetězcem (běžná konvence je EOF pro "End Of File", ale ve skutečnosti to může být cokoliv). Po ukončení klíčového slova přesměrujete výstup do cílového souboru. Poté můžete psát přímo do svého terminálu pomocí nejběžnějších klávesových zkratek shellu k procházení vaší práce. Vaše relace skončí, když napíšete určený ukončovací řetězec na samotný řádek. Že jste ve smyčce heredoc, poznáte podle jedinečné výzvy (obvykle > postava).

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

Vše, co zadáte, zatímco váš terminál čeká na EOF je umístěn do cílového souboru. Výzvové znaky jsou vynechány a samotný EOF není součástí souboru.

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.

Realisticky pravděpodobně nebudete používat syntaxi heredoc jako náhradu za dobrý textový editor. Je to skvělý rychlý hack zadat více než jeden řádek, ale více než 10 řádků začíná napínat jeho užitečnost. Například nemůžete přejít nahoru a upravit předchozí řádky, aniž byste spustili funkci historie vašeho shellu. V závislosti na vašem shellu a na tom, jak je nakonfigurován, můžete být schopni přejít nahoru, pak dolů, abyste si vybavili svůj text, a poté se v textu pohybovat zpět pomocí Ctrl+B .

Většina funkcí vašeho shellu funguje podle očekávání, ale pravděpodobně nebude možné vrátit zpět a obnovit chyby je velmi málo.

A kromě toho i ty nejmenší instalace budou mít pravděpodobně nainstalované alespoň Vi nebo ed.

A přesto je heredoc stále užitečný! Je flexibilnější než echo a když pracujete na skriptu shellu, je to nepostradatelné. Představte si například, že píšete instalační skript, abyste mohli automatizovat instalaci sady vlastních aplikací. Jedna z aplikací není distribuována s .dekstop soubor, takže se nezobrazí v nabídce Aplikace. Chcete-li tento problém vyřešit, rozhodnete se vygenerovat .desktop soubor v době instalace.

Místo psaní .desktop soubor a jeho přenášení jako externí závislost pro váš instalační skript, můžete použít heredoc v samotném instalačním skriptu:

#!/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...

Máte automatické zadávání textu do souboru, bez použití textového editoru (samozřejmě kromě toho, který používáte k psaní skriptu). Zde je výsledek .desktop soubor vypadá takto:

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

Jak vidíte, v heredoc můžete použít proměnné a jsou správně vyřešeny. EOF řetězec se v souboru neobjeví; pouze signalizuje konec heredoc.

Lepší než echo

Technika heredoc je obecně považována za jednodušší než echo nebo printf , protože jakmile jste „v“ dokumentu, můžete si dělat, co chcete. V tomto smyslu je to osvobozující, ale ve srovnání se správným textovým editorem je to omezené.

Použijte heredoc pro rychlé poznámky a pro shell skripty a už si nikdy nelámejte hlavu s tím, jak dynamicky generovat konfigurační soubory.


Linux
  1. Naučte se používat textový editor Sed

  2. Jak používat příkaz Grep k vyhledání textu v souborech

  3. Jak používat textový editor na InstantSite.

  1. Jak nainstalovat a používat příkazy Nano Text Editoru v Linuxu

  2. Jak nainstalovat Atom Text Editor na Ubuntu 18.04

  3. Jak nainstalovat Atom Text Editor na CentOS 7

  1. Jak používat Nano, textový editor příkazového řádku Linuxu

  2. Jak nainstalovat Vim Text Editor na Ubuntu

  3. Jak používat editor Vim k zadávání textu kdekoli v Linuxu