Je suis un ingénieur électricien et informaticien qui a récemment commencé à utiliser Ubuntu 16.04 pour modifier un module COM (Android) basé sur Android afin de répondre aux besoins d'un nouveau produit sur lequel je travaille pour la société pour laquelle je travaille.
Naturellement, Android le développement au niveau sur lequel je travaille (HAL, kernel, etc ... pas tellement 'applications' à ce stade) ne semble pas être approprié sur la plate-forme avec laquelle je suis le plus à l'aise (Windows), il était donc logique de passer à Ubuntu, une plate-forme très largement prise en charge en termes de développement Android.
Passons maintenant à la partie la plus pertinente.
Je n'ai aucun problème à "utiliser" Ubuntu (l'installation et la configuration était un jeu d'enfant), et je ne suis pas étranger aux interfaces de ligne de commande comme le Terminal, que je préfère utiliser et "maîtriser".
Cependant, mon plus gros obstacle à la "maîtrise" du terminal n’est pas la syntaxe ni même les divers fichiers binaires/packages eux-mêmes, mais trouver ces fichiers binaires/packages!
J'ai beaucoup utilisé man et info, mais ces commandes ne m'aident que si vous connaissez la commande/fonction que vous recherchez à l'avance, et même si les capacités de recherche de man et d'informations sont excellentes, je me sens toujours comme moi. Il me manque un index de ce qui m’est disponible.
Pour résumer et énumérer clairement mes questions:
Existe-t-il une "liste" de tout ce que je peux appeler sur le terminal, qui est dynamique et s’adapte à l’ensemble actuel de paquets/binaires/fonctions actuellement installés?
Où sont stockés les différents packages installés? J'ai regardé dans/bin /, mais cela ne semble être qu'une fraction de ce qui est disponible pour moi./bin/semble avoir beaucoup de fichiers binaires principaux, mais d’autres fichiers binaires apparemment fondamentaux comme info et whatis semblent être absents. De même, aucun de mes paquets installés obtenus via apt, ni apt lui-même, n'est présent.
Extra Credit Quels processus de pensée devraient être différents dans un environnement Linux par opposition à un environnement Windows? Par exemple, où existe-t-il/existe-t-il une variable d'environnement de chemin spécifiant où le système recherchera les fichiers binaires? Existe-t-il un équivalent à un "Program Files" ou à un "Ajout/Suppression de programmes" (juste pour énumérer ce qui est installé!)? Toute autre "astuce professionnelle" pour un développeur/développeur Windows expérimenté, mais complet étranger à Linux?
C’est mon premier article sur un site Web Stack Exchange, alors veuillez me pardonner si j’ai enfreint une règle ou accepté le décorum. J'ai lu les directives et je ne pense pas en violer aucune! En tout cas, toute aide serait grandement appréciée!
Je vous remercie.
Existe-t-il une "liste" de tout ce que je peux appeler sur le terminal, qui est dynamique et s’adapte à l’ensemble actuel de paquets/binaires/fonctions actuellement installés?
Oui! Si vous utilisez bash
comme shell (ce qui, je suppose, est le shell standard), vous pouvez appuyer deux fois sur TAB
, ce qui vous donnera une liste complète des commandes que vous pouvez exécuter (attention être assez long).
Edit: j'ai appris qu'appuyer deux fois sur tab sans aucun caractère ne fonctionne que lorsque bash utilise sa configuration par défaut - pas celle d'Ubuntu. Donc, vous voudrez peut-être exécuter bash --norc
. Appuyer deux fois sur TAB
devrait alors fonctionner.
Une autre alternative serait d'installer et de configurer zsh
ou fish
, qui sont de bons remplaçants de bash et offrent plus de fonctionnalités. (Je préfère poisson car il fournit un autocomplétion de Nice lorsque vous tapez.)
Où sont stockés les différents packages installés? J'ai regardé dans/bin /, mais cela ne semble être qu'une fraction de ce qui est disponible pour moi./bin/semble avoir beaucoup de fichiers binaires principaux, mais d’autres fichiers binaires apparemment fondamentaux comme info et whatis semblent être absents. De même, aucun de mes paquets installés obtenus via apt, ni apt lui-même, n'est présent.
Vous pouvez voir où votre shell recherche les programmes installés:
$ echo $PATH
/home/niklas/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/niklas/.gopath/bin:/home/niklas/.gopath/bin
(Notez que cela peut sembler un peu différent pour vous.)
Aujourd'hui, la plupart des exécutables sont situés dans /usr/bin
selon FHS .
Si vous voulez savoir où se trouve un programme particulier, utilisez which
:
$ which apt
/usr/bin/apt
Comme je n'ai pas une grande expérience de Windows, je ne pense pas pouvoir répondre à la dernière partie de la question, mais:
$PATH
est la "variable d'environnement de chemin spécifiant où le système recherchera les fichiers binaires"./usr
. (Ceci est divisé en exécutables (/usr/bin
), en bibliothèques (/usr/lib
) et en fichiers partagés (/usr/share
). La documentation est en /usr/share/doc
.)Pour répertorier toutes les fonctions, vous pouvez utiliser compgen -A function
, mais bon nombre d'entre elles sont des fonctions de saisie semi-automatique que les programmes utilisent en interne et qu'un utilisateur n'utiliserait jamais. Ils commencent tous par un tiret bas, alors pour les ignorer, faites:
compgen -A function | grep -v "^_"
Pour voir la définition de la fonction, utilisez type $function_name
. type
peut également vous indiquer où un binaire/script donné est stocké et si la commande est un binaire, un script, un alias, une fonction, etc.
Également utile: type -a
indiquera si une commande existe à différents endroits ou sous différentes formes. Par exemple, exécutez type -a [
et vous obtiendrez ceci:
[ is a Shell builtin
[ is /usr/bin/[