Протокол SSH определяется какой ssh
и sshd
программы принимают. (Существует стандарт, определенный для него, но это после совершения вещь и главным образом проигнорировано, когда одна из реализаций добавляет новые опции.) С тех пор существует несколько реализаций тех (OpenSSH, F-Secure, PuTTY, и т.д.) иногда Вы будете находить, что один из них не поддерживает тот же протокол как другие. В основном это определяет согласование аутентификации и создание потока мультиплексированных данных. Этот поток может нести один или несколько (с OpenSSH и ControlMaster
) терминальные сеансы и нуль или больше туннелей (передающий сокетные соединения или от локального или от удаленного другой стороне; передача X11 является особым случаем удаленной передачи). Это также определяет "подсистемы", которые могут использоваться по потоку; терминальные сеансы являются основной подсистемой, но другие могут быть определены. sftp
один из них.
ssh
утилита использует протокол SSH, чтобы говорить sshd
на другой машине. То, как это работает, зависит, на какой версии это (см. выше), но суть его - то, что это пытается выяснить который версия протокола SSH использовать, затем это и sshd
согласуйте поддерживаемые методы аутентификации, затем это пытается пройти проверку подлинности, Вы использующий один из тех методов (просьба о пароле удаленного пользователя / фраза paasword/S-Key с закрытым ключом по мере необходимости), и на успешной аутентификации создаете мультиплексированный поток с sshd
.
sshd
, как сказано выше, реализует сторону сервера протокола SSH.
sftp
(в настоящее время, единственный стандарт) подсистема, определенная в большинстве sshd
реализации. Когда подсистему SFTP требуют, sshd
подключения sftp-server
к сессии подсистемы; sftp
программа затем говорит с ним, так же к ftp
но с передачами файлов, мультиплексированными на потоке вместо того, чтобы использовать отдельные соединения в качестве с ftp
.
su
не имеет никакого отношения ssh
, sshd
, или sftp
, кроме того, поскольку могут быть модули PAM, чтобы принять меры, чтобы мультиплексированный поток был доступен в оболочке или прогоне программы ею.
Если я понимаю Ваше описание правильно, Вы хотите удалить .htaccess
от подкаталогов текущего каталога, но не от их подкаталогов. Другими словами, Вы хотите удалить foo/.htaccess
но нет foo/bar/.htaccess
. Затем это просто:
rm */.htaccess
Вы, возможно, обошлись без find
для Вашей начальной команды. find
главным образом полезно, когда Вы хотите пересечь каталог рекурсивно, т.е. относиться к подкаталогам и подподкаталогам и так далее.
for d in */; do cp -p .htaccess "$d"; done
-maxdepth 1
в вопросе существует не подразумеваемый recursivity).
– Gilles 'SO- stop being evil'
04.11.2011, 22:12
Следующее предполагает, что Вы ранее работаете find -type d -maxdepth 1 -print0 | xargs -0 -n1 cp .htaccess
из того же каталога Вы выполните этого:
find . -maxdepth 2 -type f -name .htaccess -exec rm -v {} \;
(Подробная) опция-v является дополнительной, но она помогает видеть, какие файлы на самом деле удалены.
*/
является новым для меня, Спасибо! BTW, я совершенно уверен, автор просто хочет откатывать начальную буквуfind
. Возможно, мы должны спросить? – ztank1013 04.11.2011, 22:46