为 Mac 编写脚本(带有默认参数的 scp 别名)

为 Mac 编写脚本(带有默认参数的 scp 别名)

我经常会写这样的话:

# from project1 dir
scp app/models/user.rb [email protected]:/var/www/project1/app/models
# from project2 dir
scp app/views/posts/index.html.erb [email protected]:/var/www/project2/app/views/posts
scp -r app/mailers [email protected]:/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 并将第一个参数作为服务器/var/www/路径上的目录名。

所以问题是:在 macos 上编写终端脚本的常用方法是什么?还有一些链接可以阅读。Bash?也许我可以用 Ruby 写?:)

答案1

这些都可以。Bash、ruby、python、perl,它们都随系统提供。用你知道的任何方法去做。

答案2

这是一个 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" "[email protected]:/var/www/$proj/$remote_dir"
}

您可以将其粘贴到您的 ~/.bashrc 中

相关内容