Лично, я использовал бы -exec
найдите, что действие решает этот вид проблемы. Или, при необходимости, xargs
, который допускает параллельное выполнение.
Однако существует способ добраться find
произвести читаемый ударом список имен файлов. Неудивительно, это использует -exec
и bash
, в особенности расширение printf
команда:
find ... -exec bash -c 'printf "%q " "$@"' printf {} ';'
Однако, в то время как это распечатает правильно оставленные из оболочки слова, это не будет применимо с $(...)
, потому что $(...)
не интерпретирует кавычки или Escape. (resut $(...)
подвергается разделению слова и расширению пути, если не окружено кавычками.), Таким образом, следующее не сделает то, что Вы хотите:
ls $(find ... -exec bash -c 'printf "%q " "$@"' printf {} +)
То, что необходимо было бы сделать:
eval "ls $(find ... -exec bash -c 'printf "%q " "$@"' printf {} +)"
(Обратите внимание, что я не предпринял реальной попытки протестировать вышеупомянутое чудовище.)
Но затем Вы могли бы также сделать:
find ... -exec ls {} +
Вы страдали от следующей ошибки:
Агент признал, что не подписал с помощью ключа.
Это, к сожалению, не диагностическое сообщение. Есть (по крайней мере) два класса проблем, которые он может решить:
Для большинства проблем это означает, что ваш ssh-агент
не загружен никакими ключами ssh, которые были бы приняты для вашей учетной записи на целевом сервере. В этом случае, как отмечено в ответе @Networker's answer на этот вопрос, решение довольно простое: добавьте ключ:
ssh-add
Если ключ находится в месте, не принятом по умолчанию, вам нужно будет сообщить об этом по адресу ssh-add
:
ssh-add /path/to/key
Это был GNOME ошибка 754028 , решенная в Seahorse 3.29.90 (стабильный 3.30 выпущен 2018-09-03 , включённый в Ubuntu 18.10 , Fedora 29 , и, вероятно, Red Hat/CentOS 9). Морской коньок до 3.29.90 (и, следовательно, GNOME Keyring) не смог ни создать, ни добавить новые типы клавиш, как ed25519 и клавиши, сгенерированные с помощью ssh-keygen -o -a 100
(как предложено в учебнике Secure Secure Shell).
Диагностика этой проблемы:
ssh myserver
не работает с "признанным отказом агента ssh"SSH_AUTH_SOCK= ssh myserver
работает просто отличноgnome-keyring
не может справиться со сложными ключамиТак как я только что нашел подходящее решение для этой ошибки, и кажется, что она нигде не опубликована (кроме комментария , который я только что добавил к ошибке Ubuntu), я поставлю его здесь.
Обходной путь: Запуск нового ssh-агента
с использованием того же гнезда, что и у гномовского ключа
:
ssh-agent -a $SSH_AUTH_SOCK
Запуск нового экземпляра ssh-agent
(перезапись менее способного экземпляра GNOME), так что в нем не будет ключей (несмотря на то, что говорит seahorse
, так как он привязан к старому агенту). Вы должны будете добавить их через ssh-add
, как отмечено в разделе Ключ не загружен выше.
Вы должны будете запускать его каждый раз при входе в систему (или вручную добавлять его в скрипты запуска). Если вы хотите сохранить старый сокет, сначала запустите mv $SSH_AUTH_SOCK $SSH_AUTH_SOCK.broken
.
Я добавил:
Host github.com
HostName github.com
User YOURUSERNAME
IdentityFile ~/.ssh/id_rsa.pub
в мой файл ~ / .ssh / config, чтобы обойти эту проблему, и, похоже, он работает.