То, почему делает вход к xargs, является 1 строкой, но без строки в отдельной строке?

Вам нужно удалить . После Найти , как это означает, что сначала ищет ваш текущий каталог, а затем все, что находится в $ ScriptPath .

-121--229970-

Bash-завершение (который доступен в Cygwin, Debian, Ubuntu и, без сомнения, многие другие распределения) поддерживает SCP Auto-завершение, до тех пор, пока оболочка Может получить доступ к требуемому серверу без подсказки (он использует SSH в пакетном режиме, см. Ручной страницу SSH_CONFIG (5) .

Самый простой способ включить это использовать SSH-Agent . Вероятно, это включено по умолчанию вашей рабочей средой; Просто попробуйте

ssh-add

, чтобы добавить ключ по умолчанию на текущий запущенный агент (если есть). Если агент не работает, вы можете начать один, запустив

eval $(ssh-agent)

после того, как ваша клавиша будет известна агенту, вы сможете автоматически завершить SCP команды, включающие серверы, которые вы можете получить доступ к ключу.

Я почти уверен ZSH также поддерживает SCP автоматическое завершение с одинаковыми оговорками; Необходимая поддержка находится в ZSH-Common пакет в Debian. Он должен быть включен в вашем .zshrc , хотя и с чем-то вроде

autoload -U compinit && compinit

(который загружает все поддерживаемые завершения).

0
27.02.2015, 23:50
1 ответ

Вы делаете свою жизнь более сложными, чем необходимо; -)

Если команда Subshell (выражение внутри вашего $ () ) уже содержит список файлов имени файлов и «целевая команда» (RM -RF в вашем случае) уже принимает список имена файлов, почему бы не просто использовать

git status --porcelain| sed 's/^??//g' | xargs rm -rf

или, если вы хотите практиковать «для цикла» в Bash, вам не нужны Xargs:

for f in $(git status --porcelain| sed 's/^??//g') ; do
    rm -rf $f
done

BTW .. , Вдвойне проверяйте ваши команды «RM -RF» (добавляя «эхо» перед «RM -RF»), прежде чем выполнять их, случаются глупые ошибки, и вы будете сожалеть об этом !!

1
28.01.2020, 02:51

Теги

Похожие вопросы