
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'
что не смогу написать три строчки, но надеюсь, вы поняли, что я имею в виду.
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) Некоторые оболочки автоматически создают все элементы массива с меньшими номерами.
zsh -c 'a[33]=1; printf "%.0s\n" "${a[@]}"'
(7) Получить несколько нулевых байтов
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)'