Скрипты Python не следует избегать как нечистые:
#!/usr/bin/python3
import shutil
path_for_deletion = input( 'path of dir for deletion> ' )
print( 'about to remove ' + path_for_deletion + '...' )
shutil.rmtree( path_for_deletion, ignore_errors=True )
print( '... done' )
Я попросил парня, который сделал полезный бенчмаркинг различных методов здесь , может ли он попробовать бенчмаркинг этого. Судя по моим экспериментам, неплохо.
Ошибки NB могут быть обработаны, чтобы хотя бы распечатать их... но может быть проще запустить trash myDirectoryForDeletion
или rm -rfv myDirectoryForDeletion
после этого.
zsh -c 'set -xv'
указывает zsh
запустить встроенный скрипт, содержащий set -xv
. После запуска set -xv
сценарий завершается, и zsh
завершает работу (с кодом выхода set
). Точно так же, как zsh -c uname
запускается uname
и завершается.
exec zsh ; set -xv
указать текущей оболочке выполнить zsh
в текущем процессе, поэтому любая команда, которая находится после, никогда не будет выполнена (и в любом случае это может быть только после того, как exec
вернет ), поскольку оболочка больше не будет рядом, чтобы их казнить.
Если вы хотите запустить zsh
интерактивную оболочку с включенными опциями -v
и -x
,это было бы:
zsh -xv
или
zsh -o verbose -o xtrace
Если вы хотите запустить set -xv
, когда zsh
запускается в интерактивном режиме с DEBUGCLI=YES
в вашей среде, например, как ответ, который вы связали , предполагает, что вы хотите это сделать, тогда вы можете просто добавить:
if [[ $DEBUGCLI = YES ]]; then
set -o xtrace -o verbose
fi
К вашим ~/.zshrc
, (в самой последней строке, если вы не хотите, чтобы остальные ваши ~/.zshrc
отслеживались и регистрировались ).
В любом случае вы можете запустить set -xv
иset +xv
(или set -o xtrace -o verbose
и set +o xtrace +o verbose
), чтобы включить или выключить эту отладку без необходимости каждый раз перезапускать оболочку.
И если вы хотите, чтобы xtrace
действовало только во время выполнения кода, который вы вводите (, а не для выполнения команд в хуках или виджетах zle ), вы можете установить его в конце крючок preexec()
и отключите его в начале крючка precmd()
(с помощьюset +x 2> /dev/null
).