Je ne parviens pas à lister les paquets qui utilisent apt dans Ubuntu 18.04 en utilisant zsh ou bash.
Voici le scénario:
Auparavant, je pouvais lister tous les paquets de mon système avec apt list *
, ou un sous-ensemble de ces paquets avec apt list *partial-name*
, etc. apt list
affichera uniquement les packages si j'écris explicitement leurs noms. c'est-à-dire que si je cherche build-essential
et que j'entre apt list build-essen*
, il n'y aura pas de sortie listée. Cependant, si j’écris apt list build-essential
, il n’affiche plus que le paquet (comme prévu).
Si quelqu'un a des conseils sur la façon de résoudre ce problème, ce serait grandement apprécié, merci!
De nombreux shell, comme bash ou zsh, ne transmettent pas simplement l'entrée au programme appelé. Au lieu de cela, plusieurs extensions et substitutions sont effectuées. Pour vous donner une idée, bash effectue huit types d’agrandissements différents .
Par exemple, regardons quelque chose comme ls my_fi*.txt
. Avec cette commande, bash ferait ce qu’on appelle une "extension de chemin". S'il existe un fichier nommé my_file.txt
dans votre répertoire actuel, le shell étend la commande à ls my_file.txt
. Le programme ls
ne voit jamais le paramètre my_fi*.txt
, il n'obtient que la version développée.
Ainsi, lorsque vous tapez apt list *
, le *
sera remplacé par une liste de fichiers de votre répertoire actuel. C’est ce que apt list
obtiendra en entrée. En gros, vous filtrez la liste de paquets en fonction d’arguments que vous n’avez pas l’intention d’utiliser.
Pour garder bash (je crois que zsh fonctionne de manière similaire), vous pouvez masquer les caractères spéciaux qui "déclenchent" le processus. De cette façon, ils sont transférés à apt list
(ou à tout programme que vous appelez) sans aucune modification.
Pour masquer un personnage, vous pouvez mettre une barre oblique inverse devant celui-ci.
apt list \*
ou vous pouvez mettre tout l'argument entre guillemets
apt list '*'
Vous voudrez peut-être noter que la première méthode s'applique à un caractère
apt list my_packa\*
la deuxième méthode s'applique à l'argument entier
apt list "my_packa*"