Notez qu'il n'y a rien de tel que la commande shell de ligne . Il existe un certain nombre d'applications shell disponibles pour Linux.
Stéphane Chazelas
Réponses:
21
C'est très similaire aux backticks ''.
Cela s'appelle la substitution de commandes ( spécification posix ) et il appelle un sous-shell. La commande entre les accolades $()ou entre les pointes (``) est exécutée dans un sous-shell et la sortie est ensuite placée dans la commande d'origine.
Contrairement aux backticks, le $(...)formulaire peut être imbriqué. Vous pouvez donc utiliser la substitution de commandes dans une autre substitution.
Il existe également des différences dans les caractères d'échappement au sein de la substitution. Je préfère la $(...)forme.
Dans Posix ou POSIX comme des coquilles ( ksh, bash, ash, zsh, yash...), il est comme ``: la commande à l' intérieur $()est exécuté et remplacé par sa sortie standard. Le fractionnement de mots et la génération de noms de fichiers sont effectués, sauf s'ils $()se trouvent entre guillemets. Donc
chmod 777 $(pwd)
devrait être remplacé par:
chmod 777"$(pwd)"
pour éviter le fractionnement de mots et la génération de noms de fichiers sur le chemin du répertoire de travail actuel.
Ou encore mieux (sauf sous certains shells, comme zsh, au cas où le répertoire a été renommé):
chmod 777"$PWD"
Depuis $PWDest une variable spéciale qui contient le chemin d'accès au répertoire de travail actuel dans les shells POSIX.
Ou encore mieux:
chmod 777.
Étant donné que l' .entrée dans le répertoire actuel est un lien dur vers ce répertoire lui-même.
Ceci $()est utilisé pour exécuter une commande principalement dans une autre commande.
chmod 777 $(pwd)
pwddonne le répertoire de travail actuel. Ainsi, lorsque tout est exécuté, la sortie de pwd remplacera sa position et servira d'argument à chmod, et le résultat est que tout votre répertoire de travail actuel obtient l'autorisation 777qui, je suppose, ne devrait jamais être utilisée dans un environnement de production;).
Réponses:
C'est très similaire aux backticks ''.
Cela s'appelle la substitution de commandes ( spécification posix ) et il appelle un sous-shell. La commande entre les accolades
$()
ou entre les pointes (``) est exécutée dans un sous-shell et la sortie est ensuite placée dans la commande d'origine.Contrairement aux backticks, le
$(...)
formulaire peut être imbriqué. Vous pouvez donc utiliser la substitution de commandes dans une autre substitution.Il existe également des différences dans les caractères d'échappement au sein de la substitution. Je préfère la
$(...)
forme.la source
echo `echo \`echo foo\`` bar
Dans Posix ou POSIX comme des coquilles (
ksh
,bash
,ash
,zsh
,yash
...), il est comme``
: la commande à l' intérieur$()
est exécuté et remplacé par sa sortie standard. Le fractionnement de mots et la génération de noms de fichiers sont effectués, sauf s'ils$()
se trouvent entre guillemets. Doncdevrait être remplacé par:
pour éviter le fractionnement de mots et la génération de noms de fichiers sur le chemin du répertoire de travail actuel.
Ou encore mieux (sauf sous certains shells, comme zsh, au cas où le répertoire a été renommé):
Depuis
$PWD
est une variable spéciale qui contient le chemin d'accès au répertoire de travail actuel dans les shells POSIX.Ou encore mieux:
Étant donné que l'
.
entrée dans le répertoire actuel est un lien dur vers ce répertoire lui-même.la source
Ceci
$()
est utilisé pour exécuter une commande principalement dans une autre commande.pwd
donne le répertoire de travail actuel. Ainsi, lorsque tout est exécuté, la sortie de pwd remplacera sa position et servira d'argument àchmod
, et le résultat est que tout votre répertoire de travail actuel obtient l'autorisation777
qui, je suppose, ne devrait jamais être utilisée dans un environnement de production;).la source