Az itt található dokumentumok használata a Bash-ban Linux alatt
[ad_1]

A furcsa nevű „itt dokumentumok” segítségével a bemeneti / kimeneti átirányítást használhatja a Linux Bash szkriptjeiben. Remek módszer a távoli számítógépen futtatni kívánt parancsok automatizálására.
Itt Dokumentumok
A Linux számos parancsának két vagy három betűje van. Részben ez adja azt a gondolatot, hogy a Linux nehezen megtanulható és tele van arcán parancsokkal. De a Linux egyik legfurcsább neve nem tartozik a rejtélyesen rövidek közé. Az „itt dokumentumok” nem dokumentumok, és az sem igazán világos, hogy mire is utal az „itt”.
Ezek egy viszonylag homályos konstrukció, de hasznosak. Természetesen ez Linux, tehát többféle módon lehet megnyúzni egy macskát. Az itt található dokumentumok bizonyos funkciói más módon is reprodukálhatók. Ezek az alternatív módszerek általában bonyolultabbak. A programozásban és a szkriptelésben a „bonyolultabb” azt is jelenti, hogy „hajlamosabb a hibákra”, és hogy a kódját nehezebb fenntartani.
Itt a dokumentumok valóban kiemelkednek a parancsok automatizálásában, amelyeket távoli számítógépre szeretne küldeni egy szkripten belül létrehozott kapcsolatról. A kapcsolat létrehozása egyszerű, de miután a kapcsolat létrejött, hogyan „pumpálja” a parancsokat a parancsfájlból a távoli számítógép shelljébe? Itt a dokumentumok segítségével ezt nagyon egyszerűen megteheti.
Az itt található dokumentumok alapelvei
Az itt található dokumentum idiomatikus ábrázolása így néz ki:
COMMAND << limit_string . . text data variables . . limit_string
- PARANCS: Ez lehet bármely Linux parancs, amely elfogadja az átirányított bemenetet. Megjegyzés: a
echo
parancs nem fogadja el az átirányított bevitelt. Ha írnia kell a képernyőre, használhatja acat
parancs, ami igen. - <<: Az átirányítási operátor.
- limit_string: Ez egy címke. Bármi lehet, amíg csak nem jelenik meg a parancsba átirányított adatok listájában. A szöveg, az adatok és a változók lista végének jelölésére szolgál.
- Adatlista: A parancshoz betáplálandó adatok listája. Tartalmazhat parancsokat, szöveget és változókat. Az adatlista tartalmát egyenként adják be a parancsba, amíg a _limit_string fel nem kerül.
Valószínűleg itt talál példákat olyan dokumentumokra, amelyek „EOF” -t használnak korlátozási karaktersorozatként. Nem támogatjuk ezt a megközelítést. Működik, de az „EOF” a fájl végét jelenti. Azon ritka eseten kívül, amikor a szkriptfájlban az otthoni dokumentum az utolsó dolog, az „EOF” tévesen kerül felhasználásra.
Sokkal jobban olvashatóvá teszi a szkripteket, ha egy korlátozási karakterláncot használ, amely utal arra, amit csinál. Ha parancssorozatot küld egy távoli számítógépre Biztonságos héj (SSH), a „_remote_commands” nevű limit karakterlánc tökéletesen értelmezhető lenne. Nem kell őket aláhúzással kezdeni “_
” karakter. Azért tesszük, mert ez a szkriptedben valami rendkívülinek jelöli őket.
Egyszerű példák
Itt használhatja a parancssorban és a szkriptekben található dokumentumokat. Amikor beírja a következőket a terminál ablakába, megjelenik egy>
”Sor folytatására figyelmeztető üzenet minden alkalommal, amikor az„ Enter ”gombra kattint. Amikor beírja a „_end_of_text” korlátozási karaktersorozatot, és megnyomja az „Enter” gombot, a webhelyek listája átkerül cat,
és megjelennek a terminál ablakában.
cat << _end_of_text How-To Geek Review Geek LifeSavvy CloudSavvy IT MindBounce _end_of_text
Ez nem a legérdemesebb gyakorlat, de azt bizonyítja, hogy a parancsnak semmi sem kerül elküldésre, amíg a teljes adatlista össze nem kerül és a limit karakterlánccal nem találkozunk. Az cat
parancs nem kap bemenetet, amíg meg nem adja az „_end_of_text” korlátozási karakterláncot, és el nem nyomja az „Enter” gombot.
Ugyanezt megtehetjük egy szkriptben is. Írja be vagy másolja be ezt a példát egy szerkesztőbe, mentse a fájlt “heredoc-1.sh” néven, és zárja be a szerkesztőt.
#!/bin/bash cat << "_end_of_text" Your user name is: $(whoami) Your current working directory is: $PWD Your Bash version is: $BASH_VERSION _end_of_text
A cikk követése során minden alkalommal, amikor szkriptet készít, meg kell tennie tegye futtathatóvá mielőtt fut. Minden egyes esetben, használja a chmod
parancs. Az egyes példákban cserélje le a szkript nevét az itt használt szkript nevére.
chmod +x heredoc-1.sh
Ez a szkript két környezeti változót tartalmaz, $PWD
és $BASH_VERSION
. A szkript végrehajtásakor a környezeti változó nevét az adatértékük – az aktuális munkakönyvtár és a Bash verziója – váltják fel.
A szkript is használja parancscsere tovább az whoami
parancs. A parancs nevét a saját kimenete váltja fel. A teljes szkript kimenetét a cat parancs írja be a terminál ablakába. Futtatjuk a szkriptet úgy, hogy név szerint hívjuk:
./heredoc-1.sh
Ha módosítja a szkriptet, és a limit sztringet idézőjelekbe tekeri az itt található dokumentum első sorába ” "
“, Az adatlista szó szerint átkerül az itt található dokumentum parancshoz. A változó nevek a változó értékek helyett jelennek meg, és a parancsok cseréje nem fog megtörténni.
#!/bin/bash cat <<- "_end_of_text" Your user name is: $(whoami) Your current working directory is: $PWD Your Bash version is: $BASH_VERSION _end_of_text
Tab karakterek kezelése
Alapértelmezés szerint az adatlista tabulátor karakterei megmaradnak és a terminál ablakába kerülnek. Másolja és mentse ezt a példát „heredoc-2.sh” néven. Tegye futtathatóvá a chmod
parancs. Szerkessze a behúzott sorokat, hogy megbizonyosodjon arról, hogy a sor elején egy vagy két tabulátor van, nem szóköz.
#!/bin/bash cat << _end_of_text Your user name is: $(whoami) Your current working directory is: $PWD Your Bash version is: $BASH_VERSION _end_of_text
./heredoc-2.sh
A füleket a terminál ablakába írják.
Kötőjel hozzáadásával-
”Átirányítási operátornak, az itt található dokumentum figyelmen kívül hagyja a vezető fül karaktereket. Mentse el ezt a példát „heredoc-3.sh” néven, és futtathatóvá tegye.
#!/bin/bash cat <<- _end_of_text Your user name is: $(whoami) Your current working directory is: $PWD Your Bash version is: $BASH_VERSION _end_of_text
./heredoc-3.sh
A füleket figyelmen kívül hagyja. Lehet, hogy ez triviálisnak tűnik, de a szkriptek behúzott szakaszai miatt ügyes módja a fülek vezetésének.
A hurkok és más logikai konstrukciók általában behúzódnak. Ha az itt található dokumentum egy szkript behúzott szakaszában található, kötőjel-
”Az átirányítás operátorral eltávolítja a vezető fül karakterek által okozott formázási problémákat.
#!/bin/bash if true; then cat <<- _limit_string Line 1 with a leading tab. Line 2 with a leading tab. Line 3 with a leading tab. _limit_string fi
Átirányítás egy fájlba
Az itt a dokumentumhoz használt parancs kimenete átirányítható egy fájlba. Használja a „>
”(Hozza létre a fájlt) vagy„>>
”(Hozza létre a fájlt, ha nem létezik, csatolja a fájlhoz, ha van) átirányítási operátorok utána a limit szöveg az itt található dokumentum első sorában.
Ez a szkript „heredoc-4.sh”. Kimenetét átirányítja egy „session.txt” nevű szövegfájlba.
#!/bin/bash cat << _end_of_text > session.txt Your user name is: $(whoami) Your current working directory is: $PWD Your Bash version is: $BASH_VERSION _end_of_text
./heredoc-4.sh
cat session.text
A kimenet átadása egy másik parancsra
Az itt dokumentumban használt parancs kimenete egy másik parancs bemeneteként továbbítható. Használat a cső|
” operátor utána a limit szöveg az itt található dokumentum első sorában. Az itt található dokumentum parancs kimenetét fogjuk átadni, cat
, be sed
. Szeretnénk helyettesítsen minden előfordulást az „a” betűből az „e” betűvel.
Nevezze el ezt a szkriptet: heredoc-5.sh.
#!/bin/bash cat << _end_of_text | sed 's/a/e/g' How To Gaak _end_of_text
./heredoc-5.sh
A „Gaak” szót „Geek” -re javítják.
Paraméterek küldése egy funkcióhoz
Az itt dokumentummal használt parancs a szkript függvénye lehet.
Ez a szkript néhány járműadatot átad egy funkciónak. A függvény úgy olvassa az adatokat, mintha egy felhasználó gépelte volna be. Ezután kinyomtatják a változók értékeit. Mentse el ezt a szkriptet „heredoc-6.sh” néven.
#!/bin/bash # the set_car_details() function set_car_details () { read make read model read new_used read delivery_collect read location read price } # The here document that passes the data to set_car_details() set_car_details << _mars_rover_data NASA Perseverance Rover Used Collect Mars (long,lat) 77.451865,18.445161 2.2 billion _mars_rover_data # Retrieve the vehicle details echo "Make: $make" echo "Model: $model" echo "New or Used: $new_used" echo "Delivery or Collection: $delivery_collect" echo "Location: $location" echo "Price $: $price"
./heredoc-6.sh
A jármű részleteit a terminál ablakába írják.
E-mail létrehozása és küldése
Használhatunk egy itt található dokumentumot e-mail összeállításához és elküldéséhez. Ne feledje, hogy paramétereket adhatunk át az átirányítási operátor előtti parancsnak. Mi vagyunk a Linux használatával mail
parancs nak nek küldjön e-mailt a helyi levelező rendszeren keresztül a „dave” nevű felhasználói fiókba. Az -s
(tárgy) opció lehetővé teszi számunkra az e-mail tárgyának megadását.
Ez a példa a „heredoc-7.sh” szkriptet alkotja.
#!/bin/bash article="Here Documents" mail -s 'Workload status' dave << _project_report User name: $(whoami) Has completed assignment: Article: $article _project_report
./heredoc-7.sh
Nincs látható kimenet ebből a szkriptből. De amikor ellenőrizzük a leveleinket, látjuk, hogy az e-mailt összeállították, elküldték és kézbesítették.
Dokumentumok használata itt SSH-val
Itt a dokumentumok hatékony és kényelmes módja néhány parancs végrehajtásának egy távoli számítógépen, miután SSH kapcsolat létrejött. Ha SSH-kulcsokat állított be a két számítógép között, a bejelentkezési folyamat teljesen automatikus lesz. Ebben a gyors és piszkos példában a rendszer kéri a távoli számítógép felhasználói fiókjának jelszavát.
Ez a szkript „heredoc-8.sh”. Csatlakozni fogunk egy „remote-pc” nevű távoli számítógéphez. A felhasználói fiók neve „dave”. Használjuk a -T
(letiltani az álterminális allokációt) opciót, mert nincs szükségünk interaktív álterminálra a hozzárendeléshez.
A szkript „végezzen itt némi munkát” részben átadhatjuk a parancsok listáját, ezeket a távoli számítógépen hajtják végre. Természetesen egyszerűen felhívhat egy szkriptet, amely a távoli számítógépen volt. A távoli parancsfájl tartalmazhatja az összes végrehajtani kívánt parancsot és rutint.
A szkriptünk – a heredoc-8.sh – mindössze annyit fog tenni, hogy frissíti a távoli számítógép kapcsolati naplóját. A felhasználói fiók, valamint az idő- és dátumbélyegző naplózásra kerül egy szöveges fájlba.
#!/bin/bash ssh -T dave@remote-pc.local << _remote_commands # do some work in here # update connection log echo $USER "-" $(date) >> /home/dave/conn_log/script.log _remote_commands
Amikor futtatjuk a parancsot, a rendszer kéri a jelszó megadását a távoli számítógép.
./heredoc-8.sh
Megjelenik néhány információ a távoli számítógépről, és visszatérünk a parancssorba.
A távoli számítógépet használhatjuk cat
a csatlakozási napló ellenőrzéséhez:
cat conn_log/script.log
Minden kapcsolat fel van sorolva számunkra.
ÖSSZEFÜGGŐ: SSH-kulcsok létrehozása és telepítése a Linux Shellből
Furcsa név, ügyes tulajdonságok
Itt a dokumentumok furcsaak, de hatékonyak, különösen akkor, ha parancsokat küldenek egy távoli számítógépre. Egyszerű kérdés lenne egy biztonsági másolat készítése a parancsfájl használatával rsync
. Ezután a parancsfájl csatlakozhat a távoli számítógéphez, ellenőrizheti a fennmaradó tárhelyet, és figyelmeztető e-mailt küldhet, ha a hely kevés.
ÖSSZEFÜGGŐ: Hogyan készítsünk biztonsági másolatot a Linux rendszerről
[ad_2]
Forrás link