Android

Bash heredoc

What is a heredoc? Here Documents Explained | Linux Terminal 201 - HakTip 179

What is a heredoc? Here Documents Explained | Linux Terminal 201 - HakTip 179

Sisällysluettelo:

Anonim

Kirjoitettaessa komentosarjoja voi olla tilanteessa, jossa joudut siirtämään monirivisen teksti- tai koodilohkon interaktiiviselle komennolle, kuten tee , cat tai sftp .

Bashissa ja muissa kuorissa, kuten Zsh, Here-asiakirja (Heredoc) on uudentyyppinen uudelleenohjaus, jonka avulla voit siirtää useita syöttöriviä komentoon.

HereDocin kirjoittamisen syntaksi on seuraavassa muodossa:

<< 'DELIMITER' HERE-DOCUMENT DELIMITER

  • Ensimmäinen rivi alkaa valinnaisella komennolla, jota seuraa erityinen uudelleenohjausoperaattori << ja rajaava tunniste.
    • Voit käyttää mitä tahansa merkkijonoa rajaavana tunnisteena. Yleisimmin käytettyjä ovat EOF tai END.Jos rajaava tunniste on lainaamaton, kuori korvaa kaikki muuttujat, komennot ja erikoismerkit ennen kuin siirrät here-document -rivit komentoon.A miinusmerkki uudelleenohjausoperaattorille <<- , aiheuttaa kaikkien johtavien välilehtimerkkien huomioimisen. Tämän avulla voit käyttää sisennystä kirjoitettaessa here-asiakirjoja komentosarjoihin. Johtavat välilyönnit eivät ole sallittuja, vain välilehti.
    Tässä-asiakirjalohko voi sisältää merkkijonoja, muuttujia, komentoja ja mitä tahansa muuta tulotyyppiä. Viimeinen rivi päättyy rajaavalle tunnisteelle. Valkoinen tila erottimen edessä ei ole sallittua.

Perusheredoc-esimerkkejä

Tässä osassa tarkastellaan joitain perus esimerkkejä siitä, kuinka heredocia käytetään.

Heredocia käytetään useimmiten yhdessä kissakomennon kanssa.

Seuraavassa esimerkissä lähetämme kaksi tekstiriviä, jotka sisältävät ympäristömuuttujan ja komennon cat käyttämällä tätä asiakirjaa.

cat << EOF The current working directory is: $PWD You are logged in as: $(whoami) EOF

Kuten alla olevasta tuotosta voidaan nähdä, sekä muuttuja että komento ulostulo korvataan:

The current working directory is: /home/linuxize You are logged in as: linuxize

Katsotaan mitä tapahtuu, jos suljemme erottimen yksittäisissä tai kaksinkertaisissa lainausmerkeissä.

cat <<- "EOF" The current working directory is: $PWD You are logged in as: $(whoami) EOF

Voit huomata, että kun rajaajaa lainataan, parametri ei laajennu ja komento korvataan kuorella.

The current working directory is: $PWD You are logged in as: $(whoami)

if true; then cat <<- EOF Line with a leading tab. EOF fi

Line with a leading tab.

Sen sijaan, että tuotos näytetään näytöllä, voit ohjata sen tiedostoon > , >> -operaattoreilla.

cat << EOF > file.txt The current working directory is: $PWD You are logged in as: $(whoami) EOF

Jos tiedosto.txt ei ole olemassa, se luodaan. Kun käytät > tiedosto korvataan, kun taas >> lisää tulosteen tiedostoon.

Heredoc-tulo voidaan myös piippata. Seuraavassa esimerkissä sed komento korvaa kaikki l merkin esiintymät e : llä:

cat <<'EOF' | sed 's/l/e/g' Hello World EOF

Heeeo Wored

Piped-datan kirjoittaminen tiedostoon:

cat <<'EOF' | sed 's/l/e/g' > file.txt Hello World EOF

Heredocin käyttö SSH: n kanssa

Heredocin käyttö on yksi kätevimmistä ja helpoimmista tavoista suorittaa useita komentoja etäjärjestelmässä SSH: n kautta.

Kun käytät noteeraamattomia rajaajia, varmista, että vältät kaikki muuttujat, komennot ja erikoismerkit, muuten ne interpoloidaan paikallisesti:

ssh -T [email protected] << EOF echo "The current local working directory is: $PWD" echo "The current remote working directory is: \$PWD" EOF

The current local working directory is: /home/linuxize The current remote working directory is: /home/user

Voit myös määrittää SSH-avainpohjaisen todennuksen ja muodostaa yhteyden Linux-palvelimiin antamatta salasanaa.

johtopäätös

Tässä oppaassa olet oppinut, mikä on heredoc ja kuinka sitä voidaan käyttää komentosarjoissa.

bash-terminaali