coquille de poisson: analogique "shopt -s dotglob"

9

J'essaie de migrer de bashvers fish.

À quoi est fishanalogue l ' shopt? J'essaie d'imiter cette ligne de mon .bashrc:

shopt -s dotglob # for mv * see hidden files
netimen
la source
Je suis sûr qu'il n'y en a pas. la documentation indique que les fichiers dot ne sont pas inclus sans aucune mention d'un mécanisme de configuration. Vous devrez probablement glob avec {,.}*manuellement.
glenn jackman
1
Remarque, vous voudrez peut-être demander sur stackoverflow.com, certains des responsables de la pêche y traînent.
glenn jackman

Réponses:

8

C'est intentionnel. La plupart du temps, les utilisateurs ne veulent pas faire correspondre accidentellement les fichiers cachés qui sont invisibles pour ls(sans -a). Habituellement, les fichiers sont cachés pour une raison, pas seulement pour vous troller. De plus, si *cela correspondait à des fichiers cachés, faire correspondre des fichiers non cachés serait trop délicat.

Cependant, contrairement à bash, il shopt -s dotglobn'est pas nécessaire de faire correspondre les fichiers cachés. En bash, shopt -s dotglobest le seul moyen de faire correspondre tous les fichiers du répertoire sans faire correspondre accidentellement .ou ... Cependant, la coquille de poisson ne peut jamais correspondre .ou ..avec des globes, donc ce n'est pas un problème (si vous avez vraiment besoin de faire correspondre .ou ..pour une raison stupide, dites-les simplement explicitement). De plus, le poisson essaie d'éviter d'avoir des options par conception, donc il n'en a pas dotglob.

Pour faire correspondre chaque fichier du répertoire, vous pouvez utiliser l'extension du support pour détecter les fichiers commençant par des points et ceux qui ne le sont pas. {.,}est une extension de parenthèse qui correspond à un point qui peut ou non exister. L'étoile après tout correspond à tout. Parce que les globes dans fish ne peuvent pas correspondre à .ou .., le code suivant correspond à tout sauf à ces deux répertoires (qui correspondent malheureusement à bash, si vous utilisez le code ci-dessous)

cat {.,}*
Konrad Borowski
la source