Jak používat „Zde Dokumenty“ v Bash na Linuxu

Mar 31, 2025
Linux
FATMAWATI ACHMAD ZAENURI / Shutterstock

Podivně pojmenované „tady dokumenty“ umožňují používat vstup / výstup přesměrováním uvnitř Bash skripty na Linux. Jsou to skvělý způsob, jak automatizovat příkazy je třeba spustit na vzdáleném počítači.

zde Dokumenty

Mnoho příkazů v Linuxu mají dva nebo tři jména dopis. Částečně je to, co vede k představě, že Linux je těžké se naučit a plný tajemných příkazů. Ale jeden z nejdivnějších jmen v Linuxu není jeden z těch krátkých záhadně. „Tady dokumenty“ nejsou dokumenty, a to ve skutečnosti není jasné, co je „tady“ se rozumí, a to buď.

Jsou relativně temný konstrukt, ale jsou užitečné. Samozřejmě, je to Linux, takže je tu více než jeden způsob, jak kůže kočku. Některé z funkcí poskytovaných zde dokumenty lze reprodukovat i jinými způsoby. Tyto alternativní metody jsou obvykle složité. V programování a skriptování, „více komplikuje“ také znamená „více náchylný k chybám,“ a že váš kód je těžší udržet.

Kde tady dokumenty opravdu vynikat v automatizaci příkazů, které chcete odeslat do vzdáleného počítače od navázáno spojení zevnitř skriptu. Takže spojení je snadné, ale jakmile bylo dosaženo spojení, jak si „pumpa“ své příkazy ze skriptu do pláště na vzdáleném počítači? Zde dokumenty umožňují udělat velmi jednoduše.

Základní principy Zde Dokumenty

Idiomatická reprezentace tady dokument vypadá takto:

 Příkaz & lt; & lt; limit_string
 .
 .
text
data
proměnné
.
.
limit_string 
  • PŘÍKAZ : To může být jakýkoli povel, Linux, který přijímá přesměrovanou vstup. Všimněte si, že echo příkaz nepřijímá přesměrovanou vstup . Pokud potřebujete psát na obrazovku, můžete použít kočka příkaz, který dělá .
  • & Lt; & lt; : Operátor přesměrování.
  • limit_string : Toto je štítek. Může to být cokoli chcete tak dlouho, dokud se neobjeví v seznamu údajů přesměrováváte do příkazu. To se používá k označení konce textu, dat a seznam proměnných.
  • Seznam dat : Seznam údajů, které mají být přiváděny do příkazu. Může obsahovat příkazy, text a proměnné. Obsah seznamu dat jsou přiváděny do příkazového řádku jeden v okamžiku, dokud se nenarazí na _limit_string.

Budete pravděpodobně vidět ukázky zde dokumenty, které používají „OSZ“ jako mezní řetězce. tento přístup Nechceme preferovat. Funguje to, ale „OSZ“ znamená „konec souboru“. Kromě výjimečných případech, kdy domácí dokument je poslední věc, kterou v souboru skriptu, „EOF“ je používán nesprávně.

To bude vaše skripty mnohem čitelnější, pokud použijete limitní řetězec, který odkazuje na to, co děláte. Pokud posíláte sérii příkazů ke vzdálenému počítači přes Secure Shell (SSH), limit řetězec s názvem něco jako „_remote_commands“ by perfektní smysl. Nemusíte se jim začínají podtržítkem „ _ “Charakter. Děláme to proto, že označí je jako něco neobvyklého ve vašem skriptu.

Jednoduché příklady

Můžete zde používat dokumenty na příkazovém řádku a ve skriptech. Pokud zadáte následující v okně terminálu, uvidíte „ & Gt; “Pokračování řádku výzvu pokaždé, když hit‚Enter.‘ Při zadání „_end_of_text“ mezní řetězec a stiskněte „Enter“, seznam webových stránek je předán kočka, a jsou zobrazeny v okně terminálu.

 cat & lt; & lt; _end_of_text
Jak-k geek
Recenze Geek.
LifeSavvy
CloudSavvy IT
MindBounce
_end_of_text 

To není zrovna užitečné cvičení, ale to prokázat, že nic je odeslán příkaz, dokud není tříděny celý seznam dat a limit řetězec se setkal. . \ T kočka Příkaz neobdrží žádný vstup, dokud nezadáte limit řetězec „_end_of_text“ a stiskněte klávesu „Enter“.

Můžeme to udělat totéž ve skriptu. Typ nebo kopírovat tento příklad do editoru, uložte soubor jako „heredoc-1.sh“ a zavřete editor.

 #! / Bin / bash

kat & lt; & lt; "_End_of_text"
Vaše uživatelské jméno je: $ (whoami)
Váš současný pracovní adresář: $ PWD
Váš Bash verze je: $ BASH_VERSION
_end_of_text 

Jak budete postupovat podle tohoto článku se při každém vytvoření skript, budete muset aby byl spustitelný před tím, než se spustí. V každém případě, použijte chmod příkaz . Nahraďte název skriptu v každém příkladu pro název skriptu zde použité.

 chmod + x heredoc-1.sh 

Tento skript obsahuje dvě proměnné prostředí, $ PWD a $ BASH_VERSION . Jména proměnných prostředí jsou nahrazeny jejich datových hodnot-aktuálního pracovního adresáře a verzi Bash-když skript je vykonán.

Skript také používá příkaz substituce na . \ t kdo jsem příkaz . Název příkazu je nahrazen svým vlastním výkonem. Výstupem z celého skriptu je zapsána do okna terminálu příkazem cat. My spuštění skriptu voláním jej podle jména:

 ./ heredoc-1.sh 

Máte-li upravit skript a zabalit limit řetězec v prvním řádku tady dokumentovat v uvozovkách“ " „Seznam dat je předán zde dokumentu příkaz doslovně. Názvy proměnných jsou zobrazeny namísto hodnot proměnných, a příkaz nahrazení nebude konat.

 #! / Bin / bash

kat & lt; & lt; - "_end_of_text"
Vaše uživatelské jméno je: $ (whoami)
Váš současný pracovní adresář: $ PWD
Váš Bash verze je: $ BASH_VERSION
_end_of_text 

Manipulace s tabulátory

Ve výchozím nastavení bude na kartě postavy v seznamu dat být zachován a zapsán do okna terminálu. Kopírování a uložení tohoto příkladu „heredoc-2.sh.“ Ať je to spustitelný pomocí chmod příkaz. Upravte členité linie, aby se ujistil, že mají jeden nebo dva znaky tabulátoru na začátku řádku, spíše než řada mezer.

 #! / Bin / bash

kat & lt; & lt; _end_of_text
Vaše uživatelské jméno je: $ (whoami)
  Váš současný pracovní adresář: $ PWD
    Váš Bash verze je: $ BASH_VERSION
_end_of_text 
 ./ heredoc-2.sh 

Tyto karty jsou zapisovány do okna terminálu.

Přidáním pomlčky „ - “Provozovateli přesměrování je zde dokument bude ignorovat hlavní postavy kartu. Uložit tento příklad jako „heredoc-3.sh“ a učinit z něj spustitelný.

 #! / Bin / bash

kat & lt; & lt; - _end_of_text
Vaše uživatelské jméno je: $ (whoami)
  Váš současný pracovní adresář: $ PWD
    Váš Bash verze je: $ BASH_VERSION
_end_of_text 
 ./ heredoc-3.sh 

Karty jsou ignorovány. To se může zdát triviální, ale je to elegantní způsob, jak se vypořádat s předními záložkami kvůli členité úseky skriptů.

Smyčky a další logické konstrukty jsou obvykle odsazeny. Pokud váš zde je dokument obsažen v členité části skriptu, pomocí pomlčky „ - “Se odstraní provozovatele přesměrování formátování problémy způsobené předních postav kartě.

 #! / Bin / bash

pokud je to pravda; pak
  kat & lt; & lt; - _limit_string
  Linka 1 s předním kartě.
  2. řádek s předním kartě.
  Linka 3 s předním kartě.
  _limit_string
fi 

Přesměrování do souboru

Výstup z příkazu použit s dokumentem zde lze přesměrovat do souboru. Použijte „ & Gt; “(Vytvořit soubor) nebo„ & Gt; & gt; “(Vytvořit soubor, pokud neexistuje, přidejte do souboru, pokud to dělá) operátorů přesměrování po limitu řetězec v prvním řádku zde dokumentu.

Tento skript je „heredoc-4.sh.“ Bude přesměrovat svůj výstup do textového souboru s názvem „session.txt.“

 #! / Bin / bash

kat & lt; & lt; _end_of_text & gt; session.txt
Vaše uživatelské jméno je: $ (whoami)
Váš současný pracovní adresář: $ PWD
Váš Bash verze je: $ BASH_VERSION
_end_of_text 
 ./ heredoc-4.sh 
 kočka session.text 

Potrubí na výstup k jinému příkazu

Výstup z příkazu použité ve zde dokumentu lze umístit jako vstup do jiného příkazu. Použití trubka „ |. “provozovatelem po limitu řetězec v prvním řádku zde dokumentu. Jedeme do potrubí výstupu z příkazu zde dokumentu, kočka do sed . Chceme nahradit všechny výskyty písmene "A" s písmenem "E".

Název tohoto skriptu "heredoc-5.sh."

 #! / Bin / bash

kočka & lt; _end_of_text | sed 's / a / e / g'
Jak
Na
Gaak.
_end_of_text 
 ./ Heredoc-5.sh 

"Gaak" je opraven na "Geek".

Odesílání parametrů do funkce

Příkaz, který se používá s dokumentem, může být funkce ve skriptu.

Tento skript prochází některá data vozidla do funkce. Funkce přečte data, jako by byla zadána uživatelem. Hodnoty proměnných jsou pak vytištěny. Uložte tento skript jako "heredoc-6.sh".

 #! / Bin / bash

Funkce SET_CAR_DETAILS ()
set_car_details ()
{
číst
číst model
Přečtěte si New_used.
Přečtěte si doručování_collect.
Číst umístění
číst cenu
}

# ZDE Dokument, který projde data na set_car_details ()
set_car_details & lt; _mars_rover_data.
NASA.
Vytrvalost Rover.
Použitý
Sbírat
Mars (dlouhá, lat) 77.451865,18.445161
2,2 miliardy
_mars_rover_data.

# Načíst detaily vozidla
echo "Make: $ make"
ECHO "Model: $ Model"
echo "nové nebo použité: $ new_used"
echo "Dodávka nebo sbírka: $ doručení_collect"
ECHO "Umístění: $ Location"
ECHO "cena $: $ Cena" 
 ./ Heredoc-6.sh 

Podrobnosti o vozidle jsou zapsány do okna terminálu.

Vytváření a odeslání e-mailu

Můžeme použít dokument zde vytvořit a odeslat e-mail. Všimněte si, že můžeme projít parametry příkazu před operátorem přesměrování. Jsme pomocí Linuxu pošta příkaz na Napište e-mail prostřednictvím místního poštovního systému uživatelského účtu s názvem "Dave". . \ T -s. (Předmět) Volba nám umožňuje určit předmět e-mailu.

Tento příklad tvoří skript "heredoc-7.sh."

 #! / Bin / bash

Článek = "zde dokumenty"

Mail -s 'Stav pracovního zatížení' Dave & Lt; _zpráva o projektu
Uživatelské jméno: $ (whoami)
Dokončil přiřazení:
Článek: $ článek
_project_report 
 ./ Heredoc-7.sh 

Z tohoto skriptu není vidět žádný viditelný výstup. Ale když zkontrolujeme naši poštu, vidíme, že e-mail byl složen, odeslán a dodán.

 Mail 

Použití dokumentů s SSH

Zde dokumenty jsou výkonný a pohodlný způsob, jak provést některé příkazy ve vzdáleném počítači, jakmile bylo vytvořeno připojení SSH. Pokud nastavíte klávesy SSH mezi dvěma počítači, proces přihlášení bude plně automatický. V tomto rychlém a špinavém příkladu budete vyzváni k zadání hesla pro uživatelský účet ve vzdáleném počítači.

Tento skript je "heredoc-8.sh". Připojujeme se ke vzdálenému počítači s názvem "Remote-PC". Uživatelský účet se nazývá "Dave". Používáme -T. (Zakažte pseudo-terminální alokaci) možnost, protože nám nepotřebujeme interaktivní pseudo-terminál, který by nám byl přidělen.

V části "Proveďte nějakou práci zde" Skript, mohli bychom předat seznam příkazů a tyto by byly provedeny ve vzdáleném počítači. Samozřejmě, můžete jen zavolat skript, který byl ve vzdáleném počítači. Vzdálený skript by mohl držet všechny příkazy a rutiny, které chcete provést.

Vše, že náš Script-Heredoc-8.SH-bude provede aktualizaci protokolu připojení na vzdáleném počítači. Do textového souboru jsou zaznamenány uživatelský účet a razítko času a data.

 #! / Bin / bash

ssh -t [email protected] & lt; _remote_commands.

# nějakou práci tady

# Aktualizovat protokol připojení
echo $ user "-" $ (datum) & gt; & gt; /Home/dave/conn_log/script.log.
_remote_commands 

Když spustíme příkaz, budeme vyzváni k zadání hesla pro účet na adrese dálkový počítač.

 ./ Heredoc-8.sh 

Zobrazí se některé informace o vzdáleném počítači a jsme se vrátili do příkazového řádku.

Na dálkový počítač, můžeme použít kočka Chcete-li zkontrolovat protokol připojení:

 CAT CONN_LOG / SCRIPT.LOG 

Každé spojení je pro nás uvedeno.

PŘÍBUZNÝ: Jak vytvořit a nainstalovat klávesy SSH z Shell Linux

Podivné jméno, elegantní funkce

Zde dokumenty jsou nepředvídatelné, ale silné, zejména při posílání příkazů do vzdáleného počítače. Je to jednoduchá záležitost skriptu zálohování rutiny rsync. . Skript se pak může připojit ke vzdálenému počítači, zkontrolovat zbývající úložný prostor a odeslat upozornění e-mail, pokud se prostor dostane nízký.

PŘÍBUZNÝ: Jak zálohovat systém Linuxu s rsync


Linux - Nejoblíbenější články

Jak nainstalovat Signal Desktop pro Linux

Linux Jan 22, 2025

Eliseu Geisler / Shutterstock.com Signál je soukromí Zaměřené smartphone messaging aplikace každý Zdá se, že používáte . Mů�..


Jak používat jen Shell Limit Jaká Linux Uživatel může

Linux Mar 25, 2025

FATMAWATI ACHMAD ZAENURI / Shutterstock Omezené limity skořápky, co může uživatelský účet udělat na Linuxu. Omezený uživatel nemůže změnit sv�..


Jak používat strace k monitorování linuxového systému požaduje

Linux Jun 23, 2025

FATMAWATI ACHMAD ZAENURI / Shutterstock.com Programy Linuxu se ptají jádro udělat nějaké věci pro ně. . \ T kremný Příkaz odh..


Jak používat fsck příkaz pro Linux

Linux Aug 18, 2025

Pixza Studio / Shutterstock Všechny naše důležitých dat sedí v souborovém systému jednoho druhu nebo jiný, a problémy souborového systému jsou nevy..


Linux Ukázalo 30: Jak hobby Project dobyla svět

Linux Sep 17, 2025

Larry Ewing a GIMP Na 17. září 1991 , Linus Torvalds vydal poprvé Linux Jádro (verze 0.01). Zde je stručný pohled na to, jak malý projekt Ho..


KDE Connect konečně přichází na iPhone

Linux Oct 26, 2025

KDE. Pokud hledáte snadný způsob, jak si svůj iPhone hrát pěkný s vaším Desktop KDE. , dnes je váš šťastný den KDE Connect je konečně k d..


Jak aktualizovat Fedora Linux

Linux Nov 10, 2024

Takže jste se konečně stáhli a nainstalovali Fedora Linux, ale nyní můžete být zvědaví, jak si udržet váš systém aktuální? Naštěstí, Fedora vám několik metod pro aktua..


7 chyb, které noví uživatelé Linuxu dělají (a jak se jim vyhnout)

Linux Nov 11, 2024

Učení Linuxu může být frustrující zážitek, kde se všechno malá věc cítí jako bitva. Vyhýbání se těmto běžným chybám usnadní a přijetí Linuxu bude mnohem snazší a mén..


Kategorie