Miért ad echo -e “ \ n ” nekem két üres sort egy helyett?
On február 1, 2021 by admin Mondjuk “s”, hogy “aaaa” sor van a file.txt fájlban, és CSAK EGY üres sort szeretnék hozzáadni utána, majd szöveg sor az üres sor után.
Megtettem:
echo -e “\ n” >> file.txt
echo “bbbb” >> file.txt
És akkor KÉT üreset láttam vonalak az aaaa és a bbbb között
Ha csak az echo “bbbb” >> file.txt fájlt használom, akkor a két szövegsor között nincs üres sor.
Miért történik ez, és hogyan szabadulok meg tőle ?
Megjegyzések
- OK, hadd foglaljam össze a helyes választ: \ n azt jelenti, hogy a kurzort a következő sorra helyezem, és nem ' nem üres sort jelent.
Válasz
echo
adja ki az argumentumként használt karakterláncot, majd egy új sor karaktert ad hozzá a kiadott karakterlánc végéhez a sor befejezéséhez.
With
echo "string"
string
és egy új sort kap a végén.
Ezért A
echo -e "\n"
paranccsal megkapja az új sort, a végén pedig egy új sort (azaz két üres sort).
Ha nem akarja az extra új sort (azaz egy befejezetlen sort adna ki), használja a echo
-t annak -n
opciót, vagy ebben az esetben, ha csak egy üres sort szeretne beszúrni, egyszerűen használja a echo ""
vagy a echo
egyáltalán érv nélkül.
A (z) help echo
címről a bash
-ben:
Options: -n do not append a newline -e enable interpretation of the following backslash escapes
Ha olyasmit szeretne, amely a bash
mellett más héjakra is hordozható, használja a printf
-t:
printf "\n" >>file.txt printf "bbbb\n" >>file.txt
Vagy másik módja annak, hogy ezt a két állítást egyetlen átirányítással hajtsa végre:
{ printf "\n" printf "bbbb\n" } >>file.txt
Vagy egyszerűen
printf "\nbbbb\n" >>file.txt
Kapcsolódó:
Megjegyzések
- Ha ' valóban új sor automatikusan hozzáadódik az első sorhoz, amikor I használt visszhangot, akkor miért nem kaptam üres sort a szöveg között a második kísérletem során (a kérdésem alatt leírtam)?
- @OhLook Első próbálkozásakor két új sort ad hozzá (az egyik a
\n
, a másik az új sorból származik, amelyetecho
mindig hozzáad). Második próbálkozásakor egyszerűen hozzáadja abbbb
karakterláncot, amelynek végén új sor található. Nem igazán látom ', hogy honnan ered a zavartságod. - @OhLook Miért lenne üres sor? A fájl tartalmazza a következőt:
aaaa\nbbbb\n
, ahol aaaaa\n
a kezdetektől fogva ott volt, abbbb\n
pedig hozzáadta:echo 'bbbb'
. Azecho -e '\n'
művelet hozzáadná a\n\n
fájlt a fájl meglévő tartalmához. Ha már tartalmazaaaa\n
-et, akkor ' llaaaa\n\n\n
. - @OhLook
\n
egy újsoros karakter . A kurzort a következő sor elejére mozgatja. Ha aaaaa
végén a kezdetektől fogva nem lett volna új sor, akkor a iv id = = csatolásakor egyetlen sorra kerülne aaaaabbbb
. “14c35d2735″>
.
echo -e '\n'
két új sort ad hozzá. Lásd az előző megjegyzést. Három újsoros karakter futna a fájlban. Ez azt jelenti, hogy az új sor, amely a aaaa
sor vége (ami ott volt a kezdetektől fogva), majd kettő hozzáadva echo -e '\n'
. Ez két üres sort eredményez.
Vélemény, hozzászólás?