2 votes

désactiver l'expansion des globes ZSH dans les arguments de fonctions dans le shell interactif

Lorsque je suis confronté à des problèmes arithmétiques¹, j'aime bien calculer sur ma coquille.

> echo $(( 3**4 - 2/7*5 ))

ce qui, bien entendu, fonctionne à merveille. Cependant, je trouve que c'est trop fastidieux à taper, alors j'ai défini

function §()
    echo $(( $@ ))

qui me permet de

> § '3**4 - 2/7*5'

mais pas

> § 3**4 - 2/7*5

Parce que zsh me dit qu'il n'a trouvé aucune correspondance (ou pire, qu'il développe les noms de fichiers s'il y a des correspondances).

Comment puis-je indiquer à l'interpréteur de commandes zsh que je veux qu'il no interpréter les éléments entrés en tant qu'arguments d'une fonction comme des globs ?

Je ne veux pas faire quelque chose comme

> enter_non_glob_mode
> 3**4 - 2/7*5
> back_to_normal_mode

parce qu'au lieu de cela, je pourrais tout aussi bien commencer dc , python


Mère Euler me parle, me murmure des mots de sagesse, de pouvoir d'e... SCNR.

4voto

chepner Points 54078

Utiliser le noglob modificateur.

% noglob § 3**4 - 2/7*5
81

Pour éviter d'avoir à taper noglob à chaque fois, utiliser un alias pour insérer le modificateur. (Vous ne pouvez pas mettre noglob à l'intérieur de la fonction, car l'expansion du nom de chemin aura déjà eu lieu avant que le corps ne soit évalué).

% alias §='noglob §'
% § 3**4 - 2/7*5
81

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X