cherchant à améliorer ma magie bash. aider à déchiffrer cette commande: bash -s stable

18

ok donc je travaille à travers un tutoriel pour installer rvm sur mon mac. la commande bash pour obtenir rvm via curl est

curl -L https://get.rvm.io | bash -s stable

je comprends la commande curl de la première moitié à l'emplacement rvm.io, et que le résultat est canalisé vers la commande bash suivante, mais je ne suis pas sûr de ce que fait cette commande. Mes questions:

-s: je suis toujours confus sur la façon de s'y référer. quel type de chose est-ce: un argument de ligne de commande? un interrupteur? autre chose?

-s: que fait-il? j'ai googlé pendant environ une demi-heure, mais je ne sais pas comment s'y référer, il est difficile.

stable: qu'est-ce que c'est?

tl; dr: aidez-moi à déchiffrer la commande bash -s stable

à ceux qui répondent à ce message, j'aspire à être un jour aussi alphabète que vous. jusque-là, des opposants comme moi vous remercient de l'aide!

Tim
la source

Réponses:

22

La -schose s'appelle une option. Dans votre cas, cela signifie que bashsera exécuté avec le premier jeu de paramètres positionnels. Si vous voulez jouer avec ça:

$ bash -s let us set some positional parameters just for fun
$ # doh? nothing seemed to happen
$ # In fact here we're in a new instance of bash with the parameters set. Look:
$ echo "$3"
set
$ echo "$5"
positional
$ # Get it?
$ printf "%s\n" "$@"
let
us
set
some
positional
parameters
just
for
fun
$ # Amazing!
$ # Let's get out of here!
$ exit
$ # (back to previous bash session)
$

Dans votre cas, le script téléchargé via curl est envoyé à bash(il sera donc exécuté) et le premier paramètre positionnel sera défini sur stable.

Si jamais vous êtes coincé avec des options, vous ne savez pas ce qu'elles font: man bashpuis tapez /-scela vous amènera plus ou moins là où l' -soption est décrite. Ou si vous voulez savoir à quoi -usert l' option sed: man sedpuis tapez /-u.

J'espère que cela t'aides!

gniourf_gniourf
la source
Qu'est-ce qu'un "paramètre positionnel"?
MikeSchinkel
2
@MikeSchinkel: voir la référence . Les paramètres positionnels sont les variables désignées par des chiffres, par exemple $1, $8. Vous ne pouvez pas les définir directement. Ils sont définis automatiquement lorsque vous appelez un programme ou une fonction. Par exemple avec une fonction: fun() { echo "Parameter 2 is $2"; }. Ensuite , essayez fun hello worldet fun "hello gniourf" "how are you?".
gniourf_gniourf
D'accord merci. Mais toujours confus; en quoi est-ce différent de ne pas utiliser l' -soption?
MikeSchinkel
1
@MikeSchinkel Sans l' -soption: bash stablerecherchera le fichier stable et essaiera de l'exécuter. Avec l' -soption:: bash -s stableexécutera ce qui vient sur son stdin, avec stableset as $1.
gniourf_gniourf