Sur AskUbuntu, j'ai vu quelques commandes qui semblent assez compliquées, avec beaucoup de symboles. Pour mieux comprendre comment ces commandes sont construites, j'aimerais savoir ce que représentent les symboles.
Par exemple:
find ~/ -name \*.c -exec sed -i "s/cybernetnews/cybernet/g" {} \;
ou encore plus compliqué:
echo -e "\e[${i#*=}m$( x=${i%=*}; [ "${!x}" ] && echo "${!x}" || echo "$x" )\e[m"
Je comprends très bien que l' ajout de paramètres comme -c
, --debug
ont certains effets sur le commmand principal. La signification de ceux-ci se trouve dans presque tous les cas dans les man
pages, donc ce n'est pas vraiment ce que je recherche.
S'il vous plaît, essayez dans votre réponse de définir ce que font spécifiquement les symboles, au lieu d'expliquer les exemples que j'ai donnés. Cela pourrait ressembler à ceci:
" means 'argument': the main command uses anything within these symbols as its source
^ is used for ...
# is used for ...
Merci d'avance
la source
-c -D
pourrait signifier quelque chose dans la commande 1 et une chose complètement différente dans la commande 2.Réponses:
Reportez-vous à la section du manuel de référence Bash intitulée Shell-Operation et au guide avancé de script Bash, chapitre 3 (caractères spéciaux) .
Je fais référence à ceux-ci chaque fois que j'ai besoin d'apprendre quelque chose de nouveau sur les scripts shell dans ubuntu / linux.
Je pense que vous trouverez le chapitre 3 d'ABS le plus facile à naviguer pour vos besoins. Tous les symboles sont visibles à l'extrême gauche de la page avec une description juste en dessous d'eux.
la source
Malheureusement, vous devez vous rendre sur les pages de manuel, car les "symboles" peuvent avoir des significations différentes selon la commande qui les lit.
Par exemple, dans votre première commande, la signification de {} et \; dépendent de la commande find (man find). La signification des guillemets sur un argument de sed dépend de sed ou bash (car c'est un paramètre cité, il peut potentiellement être une chose shell). Le ~ / est définitivement une extension du modèle bash.
Pour la deuxième commande compliquée, il s'agit principalement d'échos, vous trouverez donc la plupart des informations à ce sujet dans la page de manuel de bash.
Pour répondre à votre commentaire, les caractères de redirection> <| sont utilisés pour diriger des trucs depuis et vers des fichiers (les signes plus et moins que), et pour connecter la sortie d'une commande à une autre entrée (le tuyau |). Voir ici pour un joli tutoriel sur la redirection des E / S, il s'agit d'une fonctionnalité de conception très puissante du shell et du jeu d'outils Unix.
la source
>
? C'est aussi un signe que je vois souvent, je pensais que cela signifiait «copie» ou quelque chose. Est-ce que cela dépend aussi de la commande?Le premier recherche les fichiers se terminant à
.c
partir du répertoire~/
etexec
utessed
(éditeur de rationalisation) où sed les
recherchecybernetnews
et le transformecybernet
.Le 2ème m'échappe ... montre un résultat vide lorsqu'il est exécuté.
la source
La meilleure ressource que j'ai trouvée pour apprendre les commandes de terminal est LinuxCommand , elle donne des descriptions détaillées des commandes les plus utilisées disponibles.
la source
Il est difficile de vous donner la pleine signification des symboles lorsque vous collez des commandes complexes.
L'écho en particulier.
Voir l'homme en écho pour le -e, il permet de s'échapper, donc tard \ e est une évasion.
La majorité des autres symboles sont des manipulations de chaînes.
Imaginez donc que vous ayez une variable, i qui contient une chaîne "foo"
Mais cela devient plus complexe si votre variable, $ i, fait également partie d'une chaîne
Maintenant, vous pouvez également manipuler les chaînes, n'imprimer qu'une partie
Dans ton cas
$ {i # * =} = imprimer $ i, Supprimer la correspondance la plus courte entre * et =, mais * lui-même est un caractère générique ..
Voir http://tldp.org/LDP/abs/html/string-manipulation.html
Ensuite, nous avons frappé un sous-shell (x ...)
Bash traitera les commandes dans le sous-shell et retournera la sortie des commandes.
x = (une sous-chaîne de i); continuer
Nous avons maintenant un test, ["$ {! X}"]
Voir: http://tldp.org/LDP/abs/html/testconstructs.html
Et c'est ici que je ne peux pas vous en dire plus.
En bash, $ {! X} va être une chaîne vide. && == logique et || est logique ou
test {chaîne vide} ET écho chaîne vide ou écho x
Vous auriez besoin de donner plus de syntaxe, mais il semble que cet écho envoie sa sortie quelque part.
Encore une fois [] est un test, et nous avons échappé à [au tout début.
Je ne peux donc expliquer qu'une partie de ce que fait l'écho.
La raison pour laquelle il n'y a pas de sortie lorsque vous entrez la commande echo dans un terminal est qu'il s'agit d'un snipit de code, par défaut ni x ni i n'est défini, donc toute la sortie est vide.
la source
Pour des questions sur les symboles dans des langues spécifiques, vous voudrez peut-être essayer SymbolHound. Vous pouvez rechercher sur le Web des caractères que Google ne trouve pas.
la source