我经常会写这样的话:
# 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 中