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
。
所需输出
我知道echo -e '\n * 3'
不会产生 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
附加一个额外的换行符,对于 23 个换行符,使用 22:
printf '%0*d' 22 | sed 'y/0/\n/'
(6) 某些 shell 自动创建所有编号较低的数组元素。
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。对于某些 shell(至少是 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
python -c 'print("\n" * 3)'
答案3
$ yes "" | head -30
为您提供 30 个换行符。
答案4
如果可以选择使用 python,则以下命令将按照您想要的方式运行:
python -c 'print("\n" * 3)'