
echo
Linux で新しい行を生成するために使用されます。
echo -e '\n'
2行
echo -e '\n\n'
3行など。
例えば
user@linux:~$ echo
user@linux:~$ echo -e '\n'
user@linux:~$ echo -e '\n\n'
user@linux:~$
と入力する代わりに\n\n
、 のようなものを使用することもできますか\n * 3
。
望ましい出力
3 行は生成されないことはわかっていますecho -e '\n * 3'
が、私の言っている意味は伝わると思います。
user@linux:~$ echo -e '\n * 3' # <== I hope you get what I mean
user@linux:~$
答え1
bash、ksh93、zshを使用している場合は
printf '%.0s\n' {1..3}
3 つの改行を生成します。{1..3}
は に展開され1 2 3
、その後 はprintf
これらを改行が続くゼロ幅の文字列として出力します。
答え2
POSIX ソリューションが必要な場合は、以下を使用します。
ループ
明らかな(そして見苦しい)POSIX ループの他に、
i=0; while [ "$((i+=1))" -le 7 ]; do echo; done
POSIX (ポータブル)
他にも(より短い、必ずしも速いわけではない)解決策があります。
(1)スペースを出力し、改行に変換します。
printf '%*s' 30 | tr ' ' '\n'
(2)あるいは、23行を取得するには
seq 23 | tr -dc '\n'
(3)awkを使う:
seq 23 | awk '{printf "\n"}'
(4)IFSがデフォルトであると仮定
printf '%.0s\n' $(seq 23)
(5)sed
改行を1つ追加します。改行が23行の場合は22を使用します。
printf '%0*d' 22 | sed 'y/0/\n/'
(6)シェルによっては、番号の小さい配列要素をすべて自動的に作成するものもあります。
zsh -c 'a[33]=1; printf "%.0s\n" "${a[@]}"'
(7)NULバイトを取得する
head -c 5 /dev/zero | tr '\0' '\n'
広く知られている
これらは、より広く知られている(そして使用されている)ソリューションの他に、次のものがあります。
(8)head
カウントを使用する:
yes '' | head -n 23
(9)ないPOSIX。一部のシェル(少なくともksh、bash、zsh)の場合:
printf '%.0s\n' {1..23}
他の言語
そしてもちろん、(非POSIX)高水準言語:
(10)パール
perl -e 'print "\n" x 23'
perl -E 'say "\n" x 22'
(11)PHP
php -r 'echo str_repeat( "\n" , 3 );'
(12) パイソン
python -c 'print("\n" * 3)'
答え3
$ yes "" | head -30
30 個の改行を取得します。
答え4
Python の使用がオプションである場合、次のコマンドは希望どおりに動作します。
python -c 'print("\n" * 3)'