19 votes

Comment trouver tous les outils disponibles dans le terminal Mac ?

J'essaie de mettre en place un certain nombre de projets de développement sur mon Mac. Je dois utiliser divers outils comme Python, ruby, scala, groovy, etc. Pour voir si un outil est disponible, j'utilise des options telles que

ruby --version. 

Au lieu de cela, je voudrais voir toute la liste des outils disponibles dans le terminal Mac via une seule commande. Quelle est la commande/les options pour cela ?

12 votes

La liste sera plus accablante qu'instructive. Sous MacOS 10.14.4, je vois 1 302 exécutables dans /bin, /sbin, /usr/bin et /usr/sbin. La plupart d'entre eux sont obscurs et/ou à usage unique. Par exemple : hpftodit qui convertit les polices du format HP Tagged Font Metric (TFM) en vue de leur utilisation avec une imprimante HP Laser-Jet série 4 (ou plus récente) dotée d'un système de gestion des polices. groff -Tlj4 . Ok, c'est un exemple extrême, je prétends que le point est toujours valable.

26voto

Jose Chavez Points 645

Le plus simple est d'ouvrir le Terminal et d'appuyer deux fois sur la touche TAB. On vous demandera si vous voulez voir toutes les possibilités - répondez "y" et vous obtiendrez la liste complète.

21voto

slm Points 4018

Voir les réponses de ce Q&R de U&L intitulé : Liste de toutes les commandes qu'un shell connaît .

Mon préféré est d'utiliser compgen puisque cela fait partie de la famille d'outils utilisés pour construire tous les compléments de tabulation lorsque vous êtes dans un terminal et que vous tapez sur tab> + tab deux fois.

$ compgen -c

Exemple

$ compgen -c | tail
deepcopy-gen
kube-controller-manager
informer-gen
lister-gen
etcd
gen-apidocs
kube-apiserver
kubectl
kubebuilder
conversion-gen

Par ailleurs, si vous voulez savoir où se trouve l'un de ces exécutables sur votre disque dur, utilisez la fonction suivante type -a <cmd> pour le trouver :

$ type -a ansible
ansible is aliased to `ANSIBLE_CONFIG=~/.ansible.cfg ansible'
ansible is /usr/local/bin/ansible

Cela montre que la commande ansible est un alias et vit également localement sur le disque dur ici : /usr/local/bin/ansible .

Références

5voto

Michael Zhou Points 167

Vous pourriez prendre la variable PATH et tr remplace les deux-points par des espaces puis liste les fichiers dans ces répertoires.

ls  $(tr ':' ' ' <<<"$PATH")

Et comme Peter Cordes l'a fait remarquer, l'opération ci-dessus sera interrompue si les chemins de répertoire contiennent des espaces dans leur nom. Dans un sous-shell, changez le IFS (Internal Field Separator) en un simple saut de ligne et tr remplace les deux-points par des retours à la ligne.

( IFS=$'\n'; ls  $(tr ':' '\n' <<<"$PATH") )

1 votes

Si votre $PATH contient des espaces mais pas de retours à la ligne, vous pouvez remplacer les espaces par des retours à la ligne à l'intérieur d'un fichier de type (IFS=$'\n'; ls $(...)) subshell pour que la séparation des mots ne se fasse que sur les nouvelles lignes.

4voto

David Anderson Points 30783

Lorsqu'une commande est installée, une entrée devrait avoir été placée dans le fichier whatis base de données. Cependant, il n'y a aucune obligation de le faire. Pour obtenir une description en une ligne d'une commande dans la base de données, entrez whatis suivi de la commande. Par exemple, le résultat de la saisie de whatis "ruby" est présenté ci-dessous.

erb(1)                   - Ruby Templating
irb(1)                   - Interactive Ruby Shell
ri(1)                    - Ruby API reference front end
ruby(1)                  - Interpreted object-oriented scripting language

Cette whatis acceptera les expressions régulières. Par conséquent, pour obtenir une liste de toutes les commandes de la base de données, entrez la commande donnée ci-dessous.

whatis "."

La page de manuel de whatis déclare ce qui suit :

whatis recherche des mots-clés dans un ensemble de fichiers de base de données contenant de courtes descriptions de commandes système et affiche le résultat sur la sortie standard. Seules les correspondances de mots complets sont affichées.

Il existe également une commande similaire appelée apropos . La page de manuel de apropos déclare ce qui suit :

apropos recherche des mots-clés dans un ensemble de fichiers de base de données contenant de courtes descriptions de commandes système et affiche le résultat sur la sortie standard.

En gros, la différence est la suivante apropos ne requiert pas de correspondance complète des mots. Par exemple, whatis "string" ne trouve pas de correspondance lorsqu'il rencontre strings mais apropos "string" serait.

1voto

Nimesh Neema Points 44385

En accord avec ce que @jksoegaard a déjà mentionné, le moyen le plus simple est d'utiliser Tab Fonction d'autocomplétion dans Bash. En appuyant sur le bouton Tab liste deux fois toutes les commandes internes du shell, les commandes externes et les alias disponibles. Si vous saisissez les caractères initiaux d'une commande, les commandes correspondantes sont listées lors de la frappe de la touche Tab deux fois.

Il existe des gestionnaires de paquets tiers pour MacOS qui vous permettent d'installer des outils de ligne de commande qui ne sont pas disponibles dans l'installation native de MacOS, ou dont l'ancienne version est installée. Quelques gestionnaires de paquets populaires parmi les développeurs de logiciels sont Homebrew y MacPorts .

Ainsi, si vous êtes intéressé par le large éventail d'outils de développement disponibles sur votre Mac, vous pouvez également répertorier tous les outils en ligne de commande disponibles pour une installation et une exécution faciles en exécutant brew search pour Homebrew et port search pour MacPorts. L'exécution desdites commandes nécessite que les gestionnaires de paquets respectifs soient installés sur votre système.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X