Je veux un moyen de lancer rapidement des programmes pendant que je suis dans un terminal SSH. Mais je ne veux pas avoir à me souvenir de la commande exacte. Par exemple, si je tape « fox » dans kupfer/synapse/quicksilver ou unity search, cela fera apparaître firefox. De même, si je tape "navigateur", Firefox apparaîtra.
Quel est l'équivalent de la ligne de commande ? De sorte que je puisse taper browser
et il liste firefox
dans l'aérogare
Bien sûr, je suis familier avec la tabulation, mais cela suppose que j'ai les premières lettres correctes et ne me laisse pas taper "navigateur". Je connais findutils locate
commande, mais encore une fois, même problème. Je veux une expérience de bureau fluide via le texte, un peu comme lynx
navigateur offre une expérience Web via la console.
Réponse acceptée :
Il existe plusieurs shells de ligne de commande. Les principaux pour une utilisation interactive sont :
- Bash, qui est le shell par défaut sur la plupart des distributions Linux. Son principal argument de vente est qu'il s'agit de la valeur par défaut.
- Zsh est extrêmement puissant et configurable.
- Fish propose des fonctionnalités intéressantes prêtes à l'emploi, mais très peu de possibilités de personnalisation.
Vous êtes plus susceptible de trouver de telles fonctionnalités avancées intégrées dans fish ou fournies dans zsh via un code de personnalisation (soit livré avec zsh, soit via un plugin tiers). Malheureusement pour vous, je ne pense pas que fish ait quoi que ce soit de similaire à ce que vous recherchez, et je ne suis au courant de rien de vraiment intéressant pour zsh non plus.
À la recherche de fox
Dans zsh, vous pouvez avoir une complétion basée sur la saisie d'une partie du nom. Le fonctionnement dépend de la configuration. Avec la configuration suivante, vous pouvez taper *fox
et appuyez sur Tab pour obtenir la complétion firefox
:
autoload -U compinit; compinit
zstyle ':completion:*' completer _expand _complete _match _prefix
Vous pouvez obtenir cette configuration à partir de l'écran de configuration qui s'affiche lorsque vous démarrez zsh sans fichier de configuration. Vous voudrez peut-être jouer un peu avec les options de configuration liées à l'achèvement.
Recherche de browser
Recherche browser
est un problème très différent car les informations ne sont pas stockées au même endroit. Obtenir firefox
de fox
nécessite uniquement de regarder les noms des fichiers exécutables, alors que les informations que firefox
est un browser
doit venir d'ailleurs.
Vous pouvez utiliser la commande apropos pour rechercher des programmes en fonction de la description en une ligne en haut de leur documentation.
apropos browser
D'une certaine manière, c'est la réponse officielle à votre question :c'est la ligne de commande permettant de rechercher un programme en fonction de sa description. Mais vous ne le trouverez probablement pas aussi pratique pour deux raisons :
-
Il y a beaucoup plus de programmes en ligne de commande que de programmes qui peuvent être exécutés utilement à partir d'une interface graphique, il y a donc beaucoup plus de bruit dans le
apropos
production. Leapropos
La commande vous montre également les interfaces de programmation ; vous pouvez couper ça avecapropos -s 1,8 browser
ou
apropos -s 1 browser
pour exclure les commandes d'administration système. Les numéros sont des sections de page de manuel. -
La description d'une ligne en haut de la page de manuel est maintenue par les développeurs de chaque application et ils n'utilisent pas toujours la même terminologie. Ainsi, parfois, vous manquerez une application parce que son développeur a utilisé une manière différente de décrire l'application. Par exemple, si vous souhaitez rechercher uniquement web navigateur, vous pouvez exécuter
apropos -a web browser
et vous trouveriez
lynx
etfirefox
, mais pas leslinks
car il est décrit comme un "navigateur WWW".
L'interface graphique pour rechercher des applications est basée sur .desktop
des dossiers. Vous pouvez explorer ces fichiers avec des commandes telles que
grep browser /usr/share/applications/*
Il serait possible de créer une interface utilisateur en plus de cela, mais je n'en ai pas à proposer.