GNU/Linux >> Tutoriels Linux >  >> Linux

Le réglage dans Bash pour Globbing, pour contrôler si * correspond aux fichiers de points ?

J'ai été surpris récemment lorsque j'ai fait quelque chose comme
mv ./* ../somedirectory
et trouvé que des fichiers comme .gitignore n'ont pas été déplacés.

Je fais la plupart de mon travail en zsh sur OS X, et cette surprise m'a mordu en bash sur CentOS. J'ai essayé bash sur OS X et j'ai trouvé le même comportement :* ne correspond pas aux fichiers de points. Cela me semble très indésirable, mais apparemment c'est la valeur par défaut de bash. (C'est peut-être aussi le zsh par défaut pour autant que je m'en souvienne, mais je l'ai peut-être changé il y a des années dans mon .zshrc et j'ai oublié que cela fonctionnait différemment.)

Comment puis-je configurer bash pour qu'il se comporte comme prévu :pour que * corresponde à tous les fichiers et n'ignore pas les fichiers de points.

Au cas où cela ne serait pas clair du tout, voici comment le reproduire

cd /tmp
mkdir {t,d}est
touch test/{.,}{1,2,3,4,5,6,7}
ls -hal test
mv test/* dest
ls -hal test     # notice dot files are still there
ls -hal dest     # notice only some files were mv'ed

Réponse acceptée :

Frapper

Comme vous l'avez déjà remarqué, bash ne correspondra pas à un . au début du nom ou d'une barre oblique. Pour changer la correspondance concernant le point, vous devez définir le dotglob option - man bash :

dotglob If set, bash includes filenames beginning with a `.'  in
    the results of pathname expansion.

Pour l'activer/le configurer avec bash, utilisez shopt , par exemple :

shopt -s dotglob

Pour zsh, vous pouvez également utiliser le dotglob option mais mais vous devrez utiliser setopt pour l'activer, par exemple :

setopt dotglob

Linux
  1. Astuces Bash pour tous les jours en ligne de commande

  2. Deux grandes utilisations de la commande cp :Raccourcis Bash

  3. Le but du mot-clé "do" dans Bash For Loops ?

  4. Est-il possible que l'achèvement de Bash parcoure les alternatives ?

  5. Vous tenir au courant - Exemples de boucle Bash For, While, Until

4 outils Markdown pour la ligne de commande Linux

Conseils pour lister les fichiers avec ls sur la ligne de commande Linux

Bash For Loop – Le guide le plus pratique

La boucle Bash FOR expliquée et simplifiée

Comment changer la résolution du Bash pour une VM Debian ?

Comment fonctionnent les autorisations de fichiers pour l'utilisateur root ?