Miksi echo -e “ \ n ” antaa minulle kaksi tyhjää riviä yhden sijasta?
On helmikuu 1, 2021 by admin Sanotaan ”sanotaan” rivi ”aaaa” tiedostossa file.txt ja haluan lisätä VAIN YKSI tyhjää riviä sen jälkeen ja lisätä sitten tekstirivi tyhjän rivin jälkeen.
Tein:
echo -e ”\ n” >> file.txt
echo ”bbbb” >> file.txt
Ja sitten näin KAKSI tyhjää viivat aaaa: n ja bbbb: n välillä
Kun käytän vain echo ”bbbb” >> file.txt-tiedostoa, näiden kahden tekstirivin välillä ei ole tyhjää riviä.
Miksi näin tapahtuu ja miten pääsen eroon siitä ?
Kommentit
- OK, haluan tiivistää oikean vastauksen: \ n tarkoittaa kohdistimen siirtämistä seuraavalle riville ja ei ' ei tarkoita tyhjää riviä.
Vastaa
echo
antaa merkkijonon, jota käytät argumenttina, ja lisää sitten uuden rivin merkin syötetyn merkkijonon loppuun rivin lopettamiseksi.
Kanssa
echo "string"
saat string
ja lopussa uuden rivin.
Siksi kanssa
echo -e "\n"
saat uuden rivin ja uuden rivin loppuun (ts. kaksi tyhjää riviä).
Jos et halua ylimääräistä uutta riviä (ts. loputtoman rivin tuottamista), käytä echo
sen -vaihtoehto tai tässä tapauksessa, jos haluat vain lisätä tyhjän rivin, käytä vain echo ""
tai echo
ilman lainkaan argumenttia.
Lähde: help echo
kohdassa bash
:
Options: -n do not append a newline -e enable interpretation of the following backslash escapes
Jos haluat jotain, joka on siirrettävissä muihin kuoreihin paitsi bash
, käytä sen sijaan printf
:
printf "\n" >>file.txt printf "bbbb\n" >>file.txt
Tai toinen tapa tehdä nämä kaksi lausetta yhdellä uudelleenohjauksella:
{ printf "\n" printf "bbbb\n" } >>file.txt
Tai yksinkertaisesti
printf "\nbbbb\n" >>file.txt
Liittyvät:
Kommentit
- Jos ' todellakin on uusi rivi lisätään automaattisesti ensimmäiselle riville, kun minä käytetty kaiku, niin miksi en saanut tyhjää riviä tekstin välillä toisella yritykselläni (kuvattu kysymyksessäni)?
- @OhLook Ensimmäisessä yrityksessäsi lisätään kaksi uutta riviä (yksi on
\n
, toinen tulee uudesta rivistä, jonkaecho
lisää aina). Toisella yritykselläsi lisätään vain merkkijonobbbb
, jonka lopussa on uusi rivi. En todellakaan näe ' oikeastaan, mistä hämmennyksesi tulee. - @OhLook Miksi siellä olisi tyhjä rivi? Tiedostosi sisältää
aaaa\nbbbb\n
, jossaaaaa\n
oli alusta alkaen jabbbb\n
oli lisäsiecho 'bbbb'
.echo -e '\n'
-toiminnon tekeminen lisäisi tiedoston\n\n
tiedoston olemassa olevaan sisältöön. Jos se sisältää joaaaa\n
, saat ' llaaaa\n\n\n
. - @OhLook
\n
on uuden rivin merkki . Se siirtää kohdistimen seuraavan rivin alkuun. Josaaaa
-kohdan lopussa ei ollut uutta riviä alusta alkaen, saataaaabbbb
yhdelle riville, kun liitätbbbb
. - @OhLook
echo -e '\n'
lisää kaksi uutta riviä. Katso edellinen kommentti. Sinulla olisi tiedostossa kolme uuden rivin merkkiä. Tämä tarkoittaa sitä, että uusi rivi, joka on rivinaaaa
(joka oli alusta alkaen) loppu, ja kaksi sitten lisätäänecho -e '\n'
. Tämä tekee kaksi tyhjää riviä.
Vastaa