GNU/Linux >> Linux Esercitazione >  >> Linux

Come usare heredoc come editor di testo

C'è una caratteristica alquanto oscura nelle shell Linux e Unix che ti consente di aprire una sorta di loop per il comando del gatto. Si chiama heredoc e ti consente di avere, più o meno, un editor di testo, indipendentemente dalla shell che stai utilizzando. La sintassi è:

$ cat << EOF >> example.txt

La stringa nel mezzo è, essenzialmente, un condizionale che interrompe il ciclo. Cioè, se digiti da solo su una riga, il ciclo termina. Durante il ciclo, qualunque cosa digiti nel tuo terminale viene reindirizzata al file di destinazione (in questo caso).

Installazione

Più risorse Linux

  • Comandi Linux cheat sheet
  • Cheat sheet sui comandi avanzati di Linux
  • Corso online gratuito:Panoramica tecnica RHEL
  • Cheat sheet della rete Linux
  • Cheat sheet di SELinux
  • Cheat sheet dei comandi comuni di Linux
  • Cosa sono i container Linux?
  • I nostri ultimi articoli su Linux

Finché hai un terminale, hai già la possibilità di avviare un heredoc. Ho usato questo trucco sintattico in Bash, tsch e Korn shell.

Utilizzo di heredoc

Per aprire una "sessione" di heredoc, usi il comando cat con reindirizzamento che punta prima a cat con una stringa di terminazione (la convenzione comune è EOF per "End Of File", ma in realtà può essere qualsiasi cosa). Dopo la parola chiave di terminazione, reindirizza l'output a un file di destinazione. Puoi quindi digitare direttamente nel tuo terminale, utilizzando le scorciatoie da tastiera della shell più comuni per navigare nel tuo lavoro. La tua sessione termina quando digiti la stringa di chiusura designata su una riga da sola. Sai di essere in un ciclo heredoc dal prompt univoco (di solito il > carattere).

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

Tutto ciò che inserisci mentre il tuo terminale è in attesa di EOF viene inserito nel file di destinazione. I caratteri di richiesta vengono omessi e EOF stesso non fa parte del file.

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.

Realisticamente, probabilmente non utilizzerai la sintassi heredoc come sostituto di un buon editor di testo. È un ottimo trucco veloce per inserire più di una riga, ma più di 10 righe o giù di lì iniziano a comprometterne l'utilità. Ad esempio, non puoi salire per modificare le righe precedenti senza attivare la funzione cronologia della shell. A seconda della tua shell e di come è configurata, potresti essere in grado di andare su, poi giù per richiamare il tuo testo, quindi tornare indietro nel testo con Ctrl+B .

La maggior parte delle funzionalità della tua shell funziona come previsto, ma probabilmente non ci sono annullamenti e il ripristino degli errori è minimo.

Inoltre, è probabile che anche la più minima delle installazioni abbia almeno Vi o ed installato.

Eppure heredoc è ancora utile! È più flessibile di echo e quando lavori su uno script di shell, è indispensabile. Ad esempio, immagina di scrivere uno script di installazione in modo da poter automatizzare l'installazione di un insieme di applicazioni personalizzate. Una delle applicazioni non è distribuita con un .dekstop file, quindi non appare nel menu dell'applicazione. Per risolvere questo problema, decidi di generare un .desktop file al momento dell'installazione.

Invece di scrivere un .desktop file e portarlo in giro come una dipendenza esterna per il tuo script di installazione, puoi usare heredoc nel tuo script di installazione stesso:

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

Hai automatizzato l'immissione di testo in un file, nessun editor di testo coinvolto (tranne quello che usi per scrivere il tuo script, ovviamente). Ecco qual è il risultato .desktop il file è simile a:

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

Come puoi vedere, puoi utilizzare variabili all'interno di heredoc e sono state risolte correttamente. Il EOF la stringa non appare nel file; segnala solo la fine dell'heredoc.

Meglio dell'eco

La tecnica heredoc è generalmente considerata più semplice di echo o printf perché una volta che sei "dentro" il documento, sei libero di fare quello che vuoi. È liberatorio in questo senso, ma è limitato rispetto a un vero editor di testo.

Usa heredoc per note rapide e per gli script della shell e non pensare mai più a come generare dinamicamente i file di configurazione.


Linux
  1. Impara a usare l'editor di testo Sed

  2. Come installare e utilizzare i comandi dell'editor di testo Nano in Linux

  3. Come installare Atom Text Editor su Ubuntu 18.04

  4. Come utilizzare il comando Grep per trovare testo nei file

  5. Come utilizzare l'editor di testo in InstantSite.

COME USARE SED EDITOR

Come installare Atom Text Editor su Fedora 35

Come installare Nano Text Editor su AlmaLinux 8

Come installare Atom Text Editor su AlmaLinux 8

Come installare Atom Text Editor su Manjaro 20

Come eliminare il testo selezionato nell'editor vi