Я должен часто писать эти строки:

# from project1 dir
scp app/models/user.rb root@mydomain.com:/var/www/project1/app/models
# from project2 dir
scp app/views/posts/index.html.erb root@mydomain.com:/var/www/project2/app/views/posts
scp -r app/mailers root@mydomain.com:/var/www/project2/app/

поэтому я хочу обернуть его как скрипт

scpd project1 app/models/user.rb
scpd project2 app/views/posts/index.html.erb
scpd project2 -r app/mailers

поэтому scpd передаст все параметры в scp и примет первый аргумент в качестве dirname в /var/www/ path сервера.

Вопрос в том, что является обычным способом написания терминальных скриптов на macos? И некоторые ссылки, чтобы прочитать об этом. Bash? А может я смогу написать это на Ruby? :)

2 ответа2

2

Любая из этих работ. Bash, Ruby, Python, Perl, все они поставляются с системой. Делай это так, как ты умеешь.

1

Вот функция bash для вас:

scpd () {
    # the first argument is the project
    # the last argument is the file/dir to send
    # any arguments in the middle are scp options

    args=( "$@" )

    proj="${args[0]}"
    file="${args[@]: -1}"
    scp_args=( "${args[@]): 1: $(( ${#args[@]} - 2 ))}" )
    remote_dir="${file%/*}"

    scp "${scp_args[@]}" "$file" "root@mydomain.com:/var/www/$proj/$remote_dir"
}

Вы можете вставить его в ваш ~/.bashrc

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .