Pisanie skryptu dla systemu Mac (alias scp z domyślnymi parametrami)

0

Często muszę pisać te linie:

# 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/

więc chcę to zawinąć jako skrypt

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

więc scpdprzekaże wszystkie opcje do scp i przyjmie pierwszy argument jako nazwę katalogu na /var/www/ścieżce serwera .

Pytanie brzmi: jaki jest typowy sposób pisania skryptów terminalowych na komputerach Mac? I kilka linków do przeczytania o tym. Grzmotnąć? A może mogę to napisać na Ruby? :)

fl00r
źródło

Odpowiedzi:

2

Każda z tych prac. Bash, ruby, python, perl, wszystkie one pochodzą z systemem. Zrób to w dowolny sposób.

Daniel Beck
źródło
Warto wspomnieć, że OS X zawiera konkretne wersje tych, nie zawsze najnowsze (szczególnie Ruby w 1.8.7, Python do 2.6 itp.)
slhck
Czy istnieją wytyczne dotyczące pisania takich skryptów? I jak zdefiniować własny skrypt o nazwie (np. scpd)?
fl00r
@ fl00r Po prostu napisz skrypty. Z twojego pytania wynika, że ​​wiesz, jak to zrobić. W przeciwnym razie polecam najpierw przeczytać Advanced Bash-Scripting Guide .
slhck
@ fl00r Zakładałem również, że znasz już technologie, o których wspomniałeś. Przepraszam za to. Ale każdy przewodnik i samouczek, który działa z wersjami tych środowisk, które masz, powinny działać dla Ciebie, z wyjątkiem kilku wyjątków specyficznych dla systemu (np. Skrypty bash wywołujące programy specyficzne dla systemu Linux)
Daniel Beck
@Daniel Beck, mogę pisać na Python / Ruby / Php / C #, ale myślałem, że unix to tutaj użyć bash :) więc chciałem zobaczyć kilka przewodników dla moich pierwszych kroków
fl00r
1

Oto funkcja bash dla Ciebie:

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"
}

Możesz wkleić go do swojego ~ / .bashrc

Glenn Jackman
źródło