Bash
如何重複命令 bash 程式碼/腳本等效鍵入 Alt n
如何在 bash 程式碼/腳本中重複命令以將輸入 Alt n 表示為重複次數,後跟一個鍵,然後按 Enter?
例如有行程式碼/腳本
(typing Alt 7) f (Enter)
如果你的意思是,重複一個字元n次,你可以這樣做:
printf -v string X%.0s {1..12}
將儲存 12
X
秒的序列$string
。或者:
$ echo "$(printf X%.0s {1..12})" XXXXXXXXXXXX
雖然這意味著分叉一個額外的過程。
您還可以使用輔助函式,例如:
repeat_string() { awk -- 'BEGIN{for (i = 0; i < ARGV[1]; i++) printf "%s", ARGV[2]}' "$@" }
接著:
echo "$(repeat_string 12 X)"
在
zsh
中,您可以使用其填充運算符:$ echo ${(l[12][X])} XXXXXXXXXXXX
l
這是一個用 s 填充到 12 長度的空擴展eftX
。有一個類似的r
ight padding 參數擴展標誌。對於儲存在變數中的計數和字元:
n=12 c=X echo ${(pl[$n][$c])}
zsh
還有一個repeat
關鍵字(靈感來自tcsh
‘s):$ echo "$(repeat 12 printf %s X)" XXXXXXXXXXXX
使用
bash
,您總是可以編寫一個repeat
可以重複簡單命令的函式:repeat() { local n="$1" shift while ((n-- > 0)); do "$@" done }
然後
echo "$(repeat 12 printf %s X)"
像上面一樣。您可以模擬
repeat
關鍵字以使用別名重複複合命令:alias repeat='i=0; while test "$((i++))" -lt'
然後做
echo "$(repeat 12; do printf %s X; done)"
例如。