С zsh
и при условии, что последняя командная строка была только одной командой или конвейером или и -или списком (, то есть, например, echo x
, echo x | tr x y
, echo x && echo y
, даже составными командами, такими как { x; y; }
или for
/while
петли, но неecho x; echo y
):
repeat 30 !!
Чтобы повторить предыдущую командную строку, даже если она содержала несколько команд, используйте:
repeat 30 do !!; done
Или:
repeat 30 {!!}
С bash
и для простых -команд только (среди приведенных выше примеров, только для случая echo x
), вы можете определить вспомогательную функцию, например:
repeat() {
local n="$1"
shift
while ((n-- > 0)); do
"$@"
done
}
(и используйте repeat 30 !!
, как указано выше ). Побочным эффектом является то, что, поскольку код будет выполняться в функции, он увидит разные "$@"
, "$#"
и такие вещи, как typeset
, будут работать по-другому, поэтому вы не сможете делать такие вещи, как:
eval 'echo "$1"'
repeat 30 !!
Другой подход к эмуляции zsh
's repeat 30 {!!}
состоит в том, чтобы объявить псевдоним, например:
alias repeat='for i in $(seq'
(при немодифицированном$IFS
)
Затем используйте:
repeat 30); { !!; }
Если USB-оборудование вашего NAS поддерживает работу в режиме USB-клиента, вы можете использовать Linux -USB Gadget API Framework(или что-то на его основе ).