Я хочу перейти в подкаталог -, где существует требуемый файл? используя скрипт CSH

Временные сертификаты OpenSSH — это решение, которое я также рекомендую для ваших нужд. Я еще не пробовал это с SFTP.

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

Затем на вашем SFTP-сервере вы сохраняете открытый ключ SSH -CA и ссылаетесь на этот файл с директивой конфигурации TrustedUserCAKeys. С помощью этого открытого ключа SSH -CA сервер проверяет сертификат OpenSSH пользователя во время входа в систему.Больше не нужно раздавать авторизованные ключи серверам и удалять их по истечении срока действия.

-2
12.08.2020, 19:21
1 ответ

Нет веских причин использовать cshв этом столетии.

Здесь, однако, я бы сделал:

find. -name runme -type f -execdir chmod +x '{}' ';' -execdir '{}' ';'

Который будет работать в любой оболочке, даже cshпредполагая, что ваш findподдерживает -execdirрасширение BSD (, очень распространенное в наши дни ).

Что выполняет файлы runme, но не sourceих в текущем экземпляре оболочки. В любом случае, sourceing не требует разрешения на выполнение.

В любом случае нет, ваш код не соответствует синтаксису csh. Но хорошая новость, если вы еще не знаете синтаксиса csh, заключается в том, что вам не нужно его учить, потому что уже как минимум 3 десятка лет известно, что скриптинг в csh вреден и не должен выполняться, поэтому никто не должен ожидая, что вы это сделаете.

Если вам действительно нужно sourcecsh-файл runmeиз скрипта csh, в то время как текущий рабочий каталог временно является родительским для этого файла, код будет больше похож на:

foreach file ("`find. -name runme -type f`")
  cd $file:h:q || continue
  source $file:t:q
  cd - || break
end

Обратите внимание, что это не сработает, если есть runmeфайлы, путь которых содержит символы новой строки.

1
18.03.2021, 23:13

Теги

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