Мне приходится печатать повторяющиеся символы на выходе терминала в моих сценариях, поэтому я получаю такие строки, как: =========================
*************************
+++++++++++++++++++++++++
Как мне легко получить этот вывод в Fish Shell?
Мне приходится печатать повторяющиеся символы на выходе терминала в моих сценариях, поэтому я получаю такие строки, как: =========================
*************************
+++++++++++++++++++++++++
Как мне легко получить этот вывод в Fish Shell?
function underline -a char -a length
printf '%*s\n' $length "" | tr ' ' $char
end
underline = 8
========
Это использует форматирование переменной длины printf и заполнение полей пробелами по умолчанию.
Мне это нужно так часто, что я написал очень простую функцию do_str
, которая повторяет заданную строку заданное количество раз.
Достаточно вставить приведенный ниже код в файл config.fish (и перезагрузить оболочку):
function do_str #defines the function, you can use any other name for it
for i in (seq $argv[2]) #starts a for loop that will repeat as many times as second argument given
printf $argv[1] #prints the first argument given (the string)
end
end
Выполнение do_str = 4
дает ====
, do_str "?.!" 4
дает ?.!?.!?.!?.!?.!
NB Если вам нужно напечатать знаки процента, вы должны экранировать двойные знаки процента И экранировать первый знак процента, поэтому, чтобы получить %%%%%%
, вы должны вызвать do_str \%% 6
printf "%s" $argv[1]
, вам не нужно удваивать процент (хотя вам все равно нужно избегать его от рыбы или цитировать: do_str '%' 6
)
- person glenn jackman; 21.07.2014
Команда seq
создана для таких вещей:
$ seq -f '' -s= 20
====================
$ seq -f '' -s+ 20
++++++++++++++++++++
$ seq -f '' -s+ 5
+++++
Но внимание:
После строки нет символа новой строки. Вы можете использовать флаг -t
, чтобы добавить его:
$ seq -f '' -s+ -t\n 5
+++++
-f
не имеет %s
: seq: формат «%s» имеет неизвестную директиву %s
- person kolypto; 24.04.2020
В Рыбе 3:
string repeat -n80 +
Где -n
— количество повторений, а +
— повторяемая строка.