
echo
wird verwendet, um in Linux eine neue Zeile zu erzeugen.
echo -e '\n'
2 Zeilen
echo -e '\n\n'
3 Zeilen und so weiter.
z.B
user@linux:~$ echo
user@linux:~$ echo -e '\n'
user@linux:~$ echo -e '\n\n'
user@linux:~$
\n\n
Wäre es möglich, statt einzugeben , etwas wie zu verwenden \n * 3
?
Gewünschte Ausgabe
Ich weiß, echo -e '\n * 3'
dass das keine drei Zeilen ergeben wird, aber ich hoffe, Sie verstehen, was ich meine.
user@linux:~$ echo -e '\n * 3' # <== I hope you get what I mean
user@linux:~$
Antwort1
Wenn Sie bash oder ksh93 oder zsh verwenden, dann
printf '%.0s\n' {1..3}
erzeugt 3 Zeilenumbrüche. Das {1..3}
wird zu erweitert 1 2 3
und dann printf
gibt das diese als Zeichenfolgen mit der Breite Null gefolgt von einem Zeilenumbruch aus.
Antwort2
Wenn eine POSIX-Lösung erforderlich ist, verwenden Sie:
Schleife
Abgesehen von der offensichtlichen (und hässlich aussehenden) POSIX-Schleife:
i=0; while [ "$((i+=1))" -le 7 ]; do echo; done
POSIX (portabel)
Es gibt andere (kürzere, nicht unbedingt schnellere) Lösungen:
(1) Leerzeichen drucken und in Zeilenumbrüche umwandeln.
printf '%*s' 30 | tr ' ' '\n'
(2) Oder, um 23 Zeilen zu erhalten
seq 23 | tr -dc '\n'
(3) Mit awk:
seq 23 | awk '{printf "\n"}'
(4) Unter der Annahme, dass IFS standardmäßig
printf '%.0s\n' $(seq 23)
(5) sed
fügt eine zusätzliche neue Zeile an. Für 23 neue Zeilen verwenden Sie 22:
printf '%0*d' 22 | sed 'y/0/\n/'
(6) Einige Shells erstellen automatisch alle Array-Elemente mit den niedrigeren Nummern.
zsh -c 'a[33]=1; printf "%.0s\n" "${a[@]}"'
(7) Holen Sie sich einige NUL-Bytes
head -c 5 /dev/zero | tr '\0' '\n'
weithin bekannt
Dies sind neben den bekannteren (und verwendeteren) Lösungen:
(8) head
Zählen verwenden:
yes '' | head -n 23
(9)NichtPOSIX. Für einige Shells (zumindest ksh, bash, zsh):
printf '%.0s\n' {1..23}
andere Sprachen
Und natürlich mit (nichtPOSIX) höhere Sprachen:
(10) Perl
perl -e 'print "\n" x 23'
perl -E 'say "\n" x 22'
(11) PHP
php -r 'echo str_repeat( "\n" , 3 );'
(12) Python
python -c 'print("\n" * 3)'
Antwort3
$ yes "" | head -30
um 30 Zeilenumbrüche zu erhalten.
Antwort4
Falls die Verwendung von Python eine Option ist, verhält sich der folgende Befehl wie gewünscht:
python -c 'print("\n" * 3)'