Questions marquées «shell»

Le shell est l'interface de ligne de commande d'Unix. Vous pouvez taper des commandes dans un shell de manière interactive ou écrire des scripts pour automatiser les tâches. Utilisez cette balise pour les questions s'appliquant à / bin / sh et aux shells les plus compatibles (ash, bash, ksh, zsh,…). Pour les scripts shell avec des erreurs, veuillez les consulter sur http://shellcheck.net avant de publier ici.


4
dirname et basename vs expansion de paramètres
Y a-t-il une raison objective de préférer une forme à l'autre? Performance, fiabilité, portabilité? filename=/some/long/path/to/a_file parentdir_v1="${filename%/*}" parentdir_v2="$(dirname "$filename")" basename_v1="${filename##*/}" basename_v2="$(basename "$filename")" echo "$parentdir_v1" echo "$parentdir_v2" echo "$basename_v1" echo "$basename_v2" Produit: /some/long/path/to /some/long/path/to a_file a_file (v1 utilise l'expansion des paramètres du shell, v2 utilise des binaires externes.)

3
ls canalisé est-il le même que ls -1?
lsrenvoie la sortie dans plusieurs colonnes, tandis que la ls|catsortie renvoie des octets identiques ls -1pour les répertoires que j'ai essayés. Je vois toujours des ls -1réponses, comme ls -1|wc -l. Y a-t-il jamais une raison de préférer ls -1? Pourquoi ...|catchange la sortie de ls?
19 shell  ls 

1
echo [9876543210] affiche 1 4 5 6… pourquoi?
Veuillez expliquer pourquoi 1 4 5 6 est affiché pour les quatre dernières déclarations d'écho? J'ai frappé cela par accident une fois, mais je suis maintenant curieux de savoir pourquoi ce comportement se produit. Ces déclarations fonctionnent comme prévu (pour moi). $ echo [ 9876543210 ] [ 9876543210 ] $ …











4
Comment attribuer des valeurs contenant de l'espace à des variables dans bash en utilisant eval
Je veux attribuer dynamiquement des valeurs aux variables en utilisant eval. L'exemple factice suivant fonctionne: var_name="fruit" var_value="orange" eval $(echo $var_name=$var_value) echo $fruit orange Cependant, lorsque la valeur de la variable contient des espaces, evalrenvoie une erreur, même si elle $var_valueest placée entre guillemets doubles: var_name="fruit" var_value="blue orange" eval $(echo $var_name="$var_value") …
19 bash  shell  quoting 

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.