2013-07-30 5 views
0

Comment convertir le script shell ci-dessous pour obtenir le même résultat sous Mac OS X?Convertir un script shell Linux pour Mac OS X

# To generate secure SSH deploy key for a github repo to be used from Travis 
# https://gist.github.com/floydpink/4631240 
base64 --wrap=0 ~/.ssh/id_rsa_deploy > ~/.ssh/id_rsa_deploy_base64 
ENCRYPTION_FILTER="echo \$(echo \"- secure: \")\$(travis encrypt \"\$FILE='\`cat $FILE\`'\" -r floydpink/harimenon.com)" 
split --bytes=100 --numeric-suffixes --suffix-length=2 --filter="$ENCRYPTION_FILTER" ~/.ssh/id_rsa_deploy_base64 id_rsa_ 

# To reconstitute the private SSH key once running inside Travis (typically from 'before_script') 
echo -n $id_rsa_{00..30} >> ~/.ssh/id_rsa_base64 
base64 --decode --ignore-garbage ~/.ssh/id_rsa_base64 > ~/.ssh/id_rsa 
chmod 600 ~/.ssh/id_rsa 
echo -e "Host github.com\n\tStrictHostKeyChecking no\n" >> ~/.ssh/config 

je pouvais trouver la commande base64 équivalent à être:

base64 --break=0 id_rsa_deploy > id_rsa_deploy_base64 

Mais il semble que le split command on Mac OS X est un peu différent de Linux/Unix et n'a pas l'option --filter.

EDIT: Ceci est a gist je suis tombé sur de this blog entry qui détaille comment déployer automatiquement un blog de Octopress à l'aide GitHub Travis CI. Je l'avais réussi avec Ubuntu Linux et had blogged about it auparavant, mais je ne pouvais pas le répéter à partir d'un Mac.

+1

Exemple sortie du 'bon' 'diviser --filter .. . »inclus ** dans votre question ** aiderait beaucoup les gens à réfléchir à d'autres solutions. Comme c'est maintenant, je/nous devons deviner. Pouvez-vous utiliser quelque chose comme 'awk '{while length ($ 0)> 100) {printf ("% 100s \ n ", $ 0); sub (/. {100} /, "", $ 0) # ou somesuch; } printf ("% s \ n" $ 0)} ''en remplacement de' split --bytes = 100'? Bonne chance. – shellter

+0

Merci de votre suggestion, @shellter. Ce script est quelque chose que j'ai trouvé en tant que [un objet] (https://gist.github.com/lukewpatterson/4242707) qui aiderait à créer les clés de déploiement GitHub sécurisées pour [Travis CI] (https://travis-ci.org /). Mon n00b-ness au shell scripting et bash commandes sont la raison pour laquelle la question est aussi pauvre que c'est. Je vais essayer la méthode 'awk' et mettre à jour ici. Merci encore une fois ... :) –

Répondre

5

Vous pouvez installer core-utils de brew (Le gestionnaire de paquets manquant pour OS X), puis utilisez GSplit:

$ brew install coreutils 
$ gsplit --help 
Usage: gsplit [OPTION]... [INPUT [PREFIX]] 
Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default 
size is 1000 lines, and default PREFIX is 'x'. With no INPUT, or when INPUT 
is -, read standard input. 

Mandatory arguments to long options are mandatory for short options too. 
    -a, --suffix-length=N generate suffixes of length N (default 2) 
     --additional-suffix=SUFFIX append an additional SUFFIX to file names. 
    -b, --bytes=SIZE  put SIZE bytes per output file 
    -C, --line-bytes=SIZE put at most SIZE bytes of lines per output file 
    -d, --numeric-suffixes[=FROM] use numeric suffixes instead of alphabetic. 
            FROM changes the start value (default 0). 
    -e, --elide-empty-files do not generate empty output files with '-n' 
     --filter=COMMAND write to shell COMMAND; file name is $FILE 
    -l, --lines=NUMBER  put NUMBER lines per output file 
    -n, --number=CHUNKS  generate CHUNKS output files. See below 
    -u, --unbuffered  immediately copy input to output with '-n r/...' 
     --verbose   print a diagnostic just before each 
          output file is opened 
     --help  display this help and exit 
     --version output version information and exit 
+0

J'ai commencé à utiliser Mac seulement récemment, et j'ai utilisé l'infusion pour d'autres commandes! Mais il n'est jamais arrivé de vérifier là-bas. Je vous remercie! –

Questions connexes