10 commandes Unix que chaque utilisateur Mac et Linux devrait connaître

Les interfaces graphiques sont excellentes - nous ne voudrions pas vivre sans elles. Mais si vous êtes un utilisateur Mac ou Linux et que vous souhaitez tirer le meilleur parti de votre système d'exploitation (et de vos frappes), vous vous devez de vous familiariser avec la ligne de commande Unix. Le pointer-cliquer est merveilleux chaque fois que vous devez faire quelque chose une ou deux fois. Mais si vous devez répéter cette tâche plusieurs fois, la ligne de commande est votre sauveur.

La ligne de commande est une fenêtre sur la puissance totale et impressionnante de votre ordinateur. Si vous avez envie de vous libérer des contraintes de l'interface graphique ou si vous pensez que la programmation ou l'administration de machines distantes est dans votre avenir, alors apprendre la ligne de commande Unix est définitivement pour vous.

Ne vous inquiétez pas si les commandes Unix semblent être des incantations magiques ou si les mystérieux éléments internes du système semblent hors de votre portée. Ils ne sont pas si difficiles à apprendre et cet article vous donnera les 10 commandes essentielles dont vous avez besoin pour commencer. Avant longtemps, ces chaînes cryptiques deviendront une seconde nature.

Principes de base de Shell

Le shell de ligne de commande Unix est à peu près équivalent à la fenêtre de commande dans Microsoft Windows (cmd ou PowerShell). Les commandes que nous parcourons ci-dessous fonctionneront sur n'importe quel système de type Unix, y compris Linux, Darwin (la base de MacOS), FreeBSD et même Windows avec quelque chose comme Git Bash ou le nouveau shell Bash dans Windows 10. Les options et la sortie varient légèrement, mais vous ne devriez avoir aucun mal à les comprendre.

Tout d'abord, vous devez ouvrir un shell, parfois appelé fenêtre de terminal. Souvent, les distributions Unix placent cela sous les menus Administration ou Système. Sous MacOS, vous trouverez le terminal dans Applications> Utilitaires> Terminal. Lorsque vous le lancez, vous verrez quelque chose comme ceci:

Cet écran, à partir de MacOS 10.11, est typique de la plupart des shells dans une interface graphique. En haut de la fenêtre, nous voyons le type de shell, dans ce cas Bash (Bourne Again Shell, qui est le shell par défaut dans MacOS et la plupart des distributions Linux), et la taille de la fenêtre. À l'intérieur de la fenêtre se trouve l'invite, dans ce cas configuré pour afficher le nom de la machine ( Mercury), le nom du répertoire de travail courant (ici le tilde ~, qui est un raccourci pour le répertoire personnel de l'utilisateur), le nom de l'utilisateur, et enfin le symbole d'invite (le$). Notez que votre invite changera au fur et à mesure que vous vous déplacerez dans le système de fichiers ou si vous devenez un utilisateur différent sur votre machine (tel que le root ou le super-utilisateur pour exécuter des commandes d'administration). L'invite affiche ces informations afin que vous puissiez facilement savoir où et qui vous êtes sur n'importe quelle machine.

Cela vaut la peine de savoir qu'il existe deux versions principales du shell Unix: Bourne et C shell. Bourne et compagnie sont dérivés de l'original AT&T Unix, tandis que le shell C provient de l'Université de Californie à Berkeley et de BSD Unix. En général, les dérivés Bourne et C shell sont bons pour le travail interactif sur le terminal. Le shell standard POSIX, le shell Korn, est celui que vous voudriez utiliser pour écrire vos propres programmes dans le shell, appelés scripts. Nous utilisons le shell Bash pour les exemples de ce tutoriel.

L'environnement shell

L'un des premiers faits à comprendre sur le travail sur la ligne de commande Unix est que le shell fonctionne dans son propre environnement. Comprendre comment contrôler l'environnement shell est un élément important pour devenir efficace en ligne de commande. Jetons un coup d'œil à l'environnement en utilisant la envcommande:

Ne vous inquiétez pas de comprendre toutes les variables d'environnement maintenant, mais sachez qu'elles sont là. Vous devriez déjà reconnaître quelques variables. Par exemple, SHELL=/bin/bashnous dit que nous utilisons le shell Bash. HOME=/Users/nunezspécifie l'emplacement du répertoire personnel de l'utilisateur. Vous pouvez modifier ou créer des variables d'environnement, et vous le ferez souvent. Voici un exemple de définition d'une variable d'environnement appelée FOOet d'affichage de sa valeur:

Comme vous le voyez, par convention, nous mettons les variables en majuscules. Notez en particulier comment nous référençons les variables d'environnement lorsque nous les utilisons dans les commandes, avec les précédentes $. Le $dit à l'interpréteur de commandes d'utiliser la valeur de la variable. Sans la $, la echocommande ci - dessus il suffit d' imprimer le nom de la variable, FOO.

Commandes Unix

Quel que soit le shell que vous utilisez, chaque fois que vous tapez une commande dans le shell, vous provoquerez l'exécution d'un programme Unix. La philosophie de conception Unix est de créer des programmes qui font bien une chose et de les enchaîner (ou «canaliser») entre eux pour faire un travail utile. Regardons un exemple simple pour compter le nombre de fichiers dans le répertoire / etc (nous verrons comment se déplacer vers le répertoire / etc plus tard):

Cette séquence de commandes illustre deux concepts importants: la tuyauterie et les options. La lscommande (équivalente à la dircommande sous Windows) affiche le contenu d'un répertoire et  wc(nombre de mots) le nombre de mots. Remarquez la barre verticale entre eux? C'est le caractère de la pipe. Le tube prend la sortie de la première commande et la dirige comme entrée vers la deuxième commande. Vous pouvez enchaîner n'importe quel nombre de commandes sous Unix en les connectant les unes aux autres avec des tubes.

La deuxième chose à noter est les options données à chaque commande. Sous Unix, les options sont traditionnellement préfixées par un seul tableau de bord, -. Ces options de ligne de commande modifient le comportement de la commande. Dans cet exemple, l' -l option de lssignifie de sortir le contenu du répertoire au format «long», tandis que l' –loption de wcsignifie de compter les «lignes» au lieu des mots. En anglais, cette commande peut être lue:

Répertoriez le nombre de lignes dans le répertoire actuel, puis envoyez-les au programme de comptage de mots pour compter le nombre de lignes.

Souvent, ces options de ligne de commande remplacent les valeurs par défaut définies dans l'environnement. Si vous souhaitez modifier le comportement de la commande de manière permanente, vous pouvez définir la variable d'environnement automatiquement lorsque vous vous connectez. De nombreuses commandes vous permettent de combiner des options en une seule chaîne, par exemple, ls -lamais d'autres non. Vous pouvez en savoir plus sur toutes les options d'une commande en consultant son manuel ou ses «pages de manuel» (dont nous parlerons ci-dessous).

Apprendre et utiliser les options de ligne de commande est une grande partie de l'efficacité de la ligne de commande Unix. Certaines commandes ont tellement d'options que la documentation s'exécute sur des dizaines de pages. Ne laissez pas cela vous inquiéter maintenant. Vous n'avez souvent besoin que de quelques options pour effectuer une tâche donnée, et de nombreuses options ne sont utilisées que lors de l'écriture de programmes dans le langage shell.

Le manuel

Une fois que vous avez compris les bases de la ligne de commande et de l'environnement, nous pouvons commencer à plonger plus profondément dans le système. Le premier point de départ est le manuel.

L'un des aspects intéressants d'Unix est la haute qualité de la documentation. Il existe une documentation pour les utilisateurs, les administrateurs système et les développeurs de logiciels. Vous accédez à la documentation avec la mancommande. Commençons par lire le manuel du manuel (entrez man mansur la ligne de commande):

Les manuels sont divisés en huit sections, qui varient légèrement selon que vous êtes sur un type BSD / Linux / Mac ou System V d'Unix. Il est utile de commencer par lire l'introduction de chaque section, et vous pouvez le faire avec une incantation comme man -s 1 intro, ce qui signifie regarder dans la section 1 pour trouver une page de manuel appelée «intro»:

Si vous n'êtes pas sûr de la commande que vous recherchez, vous pouvez essayer les options -fet -k. vous indiquera la fonction d'une commande si vous connaissez son nom, tandis que vous listerez les noms des commandes pertinentes basées sur un ou plusieurs mots-clés. Les deux options rechercheront une base de données intégrée (si elle a été configurée; c'est généralement le cas) et renverront toutes les correspondances. Par exemple, affichera les pages de manuel commençant par la chaîne :man –f command man –k hint man –k bzerbz

Le système de fichiers

Il existe de nombreuses commandes liées au système de fichiers Unix, car il est au cœur du système d'exploitation. Nous avons vu l'un d'eux plus tôt ls:, qui répertorie les fichiers dans un répertoire:

La lscommande peut être la commande la plus fréquemment utilisée de toutes, et elle dispose de nombreuses options pour ajuster sa sortie. Une option que vous voudrez connaître tout de suite est ls -a(tout lister). Cela révélera les fichiers «point» (fichiers ou répertoires dont les noms commencent par un point ou un point), qui sont cachés par défaut. Ces fichiers ou répertoires contiennent généralement des informations de configuration ou des fichiers journaux pour le système Unix. Le fichier .bash_history, par exemple, enregistre toutes les commandes que vous entrez sur la ligne de commande.

L'autre commande dont vous aurez besoin tout de suite est la cdcommande que vous utilisez pour changer de répertoire. Cela s'apparente à la même commande sous Windows, mais avec une différence importante. Sous Unix, tous les lecteurs (périphériques) apparaissent comme un seul lecteur. Alors que sous Windows, vous pouvez avoir vos images sur un disque dur externe qui apparaît comme E:, sous Unix, ce lecteur peut être / home / user / pictures. Tous les fichiers sur un système Unix sont accessibles via un chemin qui commence par / (le répertoire racine), et vous pouvez monter différents disques durs à différents points du système de fichiers selon vos besoins.

Avant de commencer à vous promener dans le système de fichiers, laissez-moi vous présenter une autre commande dont vous aurez besoin: pwd(imprimer le répertoire de travail). Comme il y a potentiellement de nombreux endroits où se perdre dans un système de fichiers en croissance, cette commande vous permet de déterminer rapidement où vous vous trouvez. Changeons les répertoires vers l'emplacement où les fichiers de configuration système sont conservés et vérifions notre emplacement:

Notez que vous pouvez utiliser la cdcommande sans argument pour revenir rapidement à votre répertoire personnel. Une autre astuce: Le ~peut être utilisé comme raccourci pour faire référence à votre répertoire personnel dans Bash et C shell. 

À ce stade, vous savez comment vous déplacer dans le système de fichiers et répertorier le contenu des répertoires. Nous avons maintenant besoin d'un moyen de lire les fichiers qui y sont stockés. De nos jours, la plupart des systèmes sont livrés avec la lesscommande pour cela. lessaffichera un fichier page par page et vous permettra de naviguer à l'aide des commandes Vi (appuyez jpour descendre, kpour monter, hpour obtenir de l'aide et qpour quitter le fichier).

Voyons ce qu'il y a dans notre fichier / etc / passwd en entrant less /etc/passwd:

Le fichier passwd répertorie les comptes utilisateurs sur un système Unix, ainsi que leurs numéros d'identifiant d'utilisateur et de groupe, leur répertoire personnel et le chemin vers la commande ou le shell correspondant. Sur MacOS, cependant, vous ne trouverez que des comptes de service système dans passwd. En effet, les utilisateurs humains sont configurés sous Utilisateurs et groupes dans les préférences système de MacOS.

Espace disque

Le manque d'espace disque est un processus graduel qui peut prendre des années, mais qui peut toujours vous surprendre. Il existe deux commandes que vous pouvez utiliser pour vérifier votre espace libre et déterminer quels fichiers monopolisent votre disque: du(utilisation du disque) et df(disque libre). Ils prennent tous les deux une -hoption (lisible par l'homme). Pour avoir une idée de la saturation de votre disque, utilisez la dfcommande:

Pour l'instant, concentrez-vous sur les colonnes %iusedet mounted on. Cela montre que mon répertoire personnel est plein à 92%, donc je devrais probablement le nettoyer. Mais comment savoir où tout l'espace est utilisé? Voilà à quoi ça dusert:

Pour cet exemple, je suis allé avec une incantation qui limite la sortie aux 10 premières lignes. Sinon du, tous les répertoires de la machine seront listés, ce qui pourrait facilement être trop difficile à saisir. À partir de cette liste, vous pouvez voir combien d'espace est consommé par chaque répertoire. Vous pourriez également voir comment, en enchaînant quelques commandes ensemble, nous pourrions facilement créer un script qui répertorierait les 10 principaux répertoires par utilisation de l'espace. La commande dont nous avons besoin pour trier la sortie est bien sûr la sortcommande.

Comme la version MacOS de sortne peut pas gérer dula sortie lisible par l'homme, j'ai utilisé l' -moption pour duafficher l'utilisation du disque en mégaoctets (utilisez l' option -gou -kpour afficher en gigaoctets ou kilo-octets). Les options -net -rpour sorttrier la sortie numériquement et dans l'ordre inverse, de sorte que les plus grands répertoires apparaîtront en haut de la liste.

Super-utilisateurs, su et sudo

Un certain nombre de commandes concernent l'administration du système. Essayez de taper man -s 8 intropour une introduction à eux. Je vais vous donner une commande essentielle pour l' administration du système ici: su. Cela signifie «super utilisateur» et fait référence à l'utilisateur administratif ou au compte root. Tous les fichiers appartenant au système appartiennent à cet utilisateur et vous devrez devenir cet utilisateur pour effectuer l'administration.

Une commande connexe,, sudovous permet de devenir le super utilisateur pour une seule commande. Pourquoi utiliser à la sudoplace de su? Parce que les meilleures pratiques vous obligent à ne pas courir en tant qu'utilisateur root, avec le pouvoir de causer des dommages irréparables par accident. Vous voudrez toujours faire tout ce que vous pouvez en tant qu'utilisateur normal et devenir un super utilisateur uniquement lorsque vous en avez besoin. La manière exacte dont vous obtiendrez les privilèges de super utilisateur dépendra de votre distribution Unix. Voyons comment sufonctionne sur MacOS:

Hein? Je suis sûr que j'ai tapé le mot de passe correctement. Ce qui s'est passé ici, c'est que mon utilisateur actuel nunez, n'a pas l'autorisation de su. Sur certains Unix, cela signifie que l'utilisateur doit être dans le wheelgroupe, et sur d'autres systèmes (y compris MacOS), l'utilisateur doit être dans le sudoersfichier.

Terminons en ajoutant nunezà sudoers, ce qui vous donnera un avant-goût de l'édition de fichiers en ligne de commande. Les utilisateurs expérimentés chantent les louanges des éditeurs Emacs et Vi, et je vous encourage à les essayer, mais nous utiliserons Nano ici. Nano est facile à apprendre et à utiliser, et MacOS et de nombreuses distributions Linux sont déjà installés.