Profitez des offres Memoirevive.ch!
Introduction au Terminal

Soyez conscients que la lecture de cet article et notamment l'apprentissage des exemples y étant mentionnés peuvent pousser à l'envie de suicide ou entraîner la mort de manières aussi diverses que variées. Je ne pourrai en aucun cas être tenu comme responsable de vos actes !

Je préfère vous avertir, après les propos tenus il y a de cela deux mois environ dans un commentaire par le maître des lieux: « Mais tu me connais, tu parles de Terminal ici pour créer un lien symbolique. Plutôt crever. »

Alors désolé, François…

Pour vous qui êtes encore là, nous allons parler aujourd'hui du Terminal. Ce mal aimé, haï des adeptes de belles interfaces graphiques et tant redouté ! Mais si les années 80 ont vu l'apparition des interfaces graphiques, forcément plus appréciées du grand public, les interfaces en ligne de commande étaient la meilleure façon jusque-là pour un utilisateur de communiquer avec un ordinateur. Et si j'y consacre un article, c'est qu'aujourd'hui encore elle a du sens.

Lorsque je parle de Terminal, je veux donc parler d'un interface en ligne de commande, ou console (à ne pas confondre avec l'application Console de Mac OS X). Ce mot désigne en fait l'application (située dans /Applications/Utilitaires) permettant de communiquer avec votre ordinateur via des lignes de commande. En effet Mac OS X, dérivé d'UNIX, dispose d'un interpréteur de commande (ou shell) accessible via le Terminal permettant d'utiliser certains logiciels ou commandes. Ceux-ci se trouvent généralement dans des dossiers bin (/bin, /usr/bin, /usr/local/bin, etc…), normalement cachés par le Finder. Mais vous saurez les retrouvez si vous suivez cet article !

UNIX

Il existe de nombreux shells, dont le Bourne shell (abrégé sh) qui est l'interpréteur originel de l'environnement UNIX. A ses débuts, Mac OS X embarquait par défaut tcsh, basé sur le C shell (csh), remplacé dès la version 10.3 Panther par bash, signifiant Bourne-again shell, une amélioration du Bourne shell.

Le Terminal

Je ne vais pas m'étendre sur l'application en elle-même, qui ne comprend rien de bien trop compliqué. Le but est d'ouvrir une ou plusieurs fenêtres (ou onglets depuis Leopard) faisant chacune tourner un shell. Les préférences vous permettront de modifier à votre guise leur apparence, que ce soit la couleur de fond, la couleur du texte ou l'opacité.

Il est possible de changer de shell lancé par défaut en indiquant le chemin de celui que vous voulez dans l'onglet Démarrage des préférences. Mais à moins d'avoir certaines habitudes ou des besoins particuliers, inutile de le modifier.

Si le Terminal est l'application proposée par Apple pour accéder à un interpréteur de commandes, elle n'est pas la seule disponible pour Mac OS X; ainsi certains préféreront par exemple iTerm, offrant notamment un mode plein écran.

Au lancement de l'application, une fenêtre s'ouvre avec le shell par défaut (bash donc ici) et un peu de texte. Par défaut, il s'agit de la date de la dernière ouverture de session via l'interface en ligne de commande suivie de la ligne d'invite. Celle-ci permet à l'utilisateur d'entrer une commande et sera donc affichée après chaque commande. Elle contient le nom de l'ordinateur (que l'on retrouve dans les Préférences Systèmes sous l'onglet Partage) puis votre emplacement dans le système de fichier, qui est par défaut votre dossier de départ (ou votre « maison »), désigné par « ~ ». L'invite se termine par votre nom d'utilisateur et un prompt (« $ »). C'est à partir d'ici que vous pouvez entrer votre texte.

invite

Bizarre, dites-vous, l'image ne correspond pas exactement à ce que je viens de vous raconter ! Vous aurez sans doute remarqué le nombre élevé de « par défaut », sous-entendant qu'il est possible de modifier ces données. Ce qui est le cas chez moi, vous l'aurez deviné. En effet, à chaque lancement d'un shell, différents scripts de démarrage sont exécutés. Je ne vais pas détailler leur contenu, mais sachez simplement qu'il existe le script /etc/profile, commun à tous les utilisateurs, et quatre autres scripts propres à chaque utilisateur, disponibles directement depuis le dossier utilisateur: .bash_profile, .bash_login, .profile et .bashrc. Ceux-ci vous permettent notamment de modifier votre invite de commandes.

La base

Intéressons-nous maintenant au vif du sujet, à savoir l'interaction avec le système au travers de commandes spécifiques. La syntaxe générale des commandes est la suivante:

commande options données

La commande est un fichier exécutable qui peut être une commande du système d'exploitation ou un logiciel tiers, permettant d'envoyer un ordre ou réaliser une tâche. A titre d'exemple, la commande « ls », signifiant list, listera tous les éléments (visibles) du répertoire courant.

La plupart des commandes possèdent une liste d'options, modifiant son comportant par défaut. Ces options sont le plus souvent de simples lettres, qu'il convient d'ajouter après la commande en les précédant d'un tiret. Notre commande de liste peut ainsi nous donner plus d'informations, sous un format long, en ajoutant l'option « -l »: « ls -l ». L'ajout de l'option « -a » permet quant à elle d'afficher tous les fichiers, y compris les fichiers cachés, commençant avec un point (« . ») sous UNIX. En combinant les deux, nous obtenons « ls -la ».

Il est également possible (voire requis) d'entrer le nom d'un fichier ou répertoire que la commande devra utiliser. Pour continuer sur le même exemple, nous pouvons par exemple lister dans un format long tous les éléments (y compris cachés) du répertoire Desktop (bureau): « ls -la Desktop/ ».

Le chemin du fichier ou répertoire (ici Desktop) se fait toujours depuis l'emplacement courant. Il faut donc dans notre cas veiller à bien se trouver à la racine du dossier utilisateur, sans quoi ce répertoire sera introuvable. Il est tout à fait possible d'indiquer un fichier qui n'est pas directement contenu dans le répertoire courant, soit en indiquant un chemin absolu, c'est-à-dire en commençant depuis la racine et indiquant tout le chemin (ce qui donnerait ici /Users/utilisateur/Desktop/), soit en parcourant la hiérarchie jusqu'au fichier voulu. Ceci se fait à l'aide de la syntaxe « ../ » permettant de remonter d'un niveau dans la hiérarchie. Nous pouvons par exemple afficher le dossier d'applications principal en tapant « ../../Applications », ce qui signifie « remonter d'un niveau dans Users puis d'un autre vers la racine / puis aller dans le répertoire Applications ».

Si vous désirez simplement vous déplacer dans l'arborescence des fichiers, vous pouvez utiliser la commande « cd ». « cd /usr/bin » vous enverra par exemple dans le dossier bin cité en début d'article. A vous d'en lister le contenu pour voir ce qu'il s'y trouve ! Et si vous ne savez plus du tout où vous êtes, pas de panique, la commande « pwd » (print working directory) vous renseignera (tout comme la ligne d'invite).

path
L'utilisateur nicolas est connecté sur la machine Nicolas, à la racine du compte utilisateur (~), puis on se déplace dans ~/Desktop.

Pour gagner du temps, la complétion des commandes est très utile: commencez à rentrer votre texte (par exemple « /Us ») puis tapez sur la touche TAB: boom, « /Users » s'affichera directement à l'écran !

Pour gagner du temps, la complétion des commandes est très utile: commencez à rentrer votre texte (par exemple « /Us ») puis tapez sur la touche TAB: boom, « /Users » s'affichera directement à l'écran !

Si vous vous demandez quel est l'emplacement d'une commande (puisqu'il s'agit d'un fichier exécutable), utilisez la commande « whereis » ou « which ». « whereis ls » vous affichera par exemple /bin/ls. Si rien n'est affiché, c'est que cette commande n'est pas disponible sur votre système, ou, dans le cas de l'utilisation de « which », que le répertoire contenant cette commande n'est pas spécifié dans la variable d'environnement PATH, définissant où rechercher une commande lorsque celle-ci est appelée. Les variables d'environnement stockent certaines données propres à l'utilisateur, mais je ne m'y attarderai pas.

Pour terminer l'explication sur les bases du shell, je me dois de vous parler de la commande « man ». Non, cette commande n'est pas là pour satisfaire l'ego masculin, elle signifie simplement manual. A chaque fois que vous ne serez pas sûr de l'utilisation d'une commande, c'est vers « man  » qu'il faudra se tourner. Vous n'êtes plus certain de l'option pour ne lister que des dossiers? « man ls » ! Vous ne savez plus ce que fait la commande « which » ? « man which » ! Vous n'en pouvez plus de lire cet article et êtes à deux doigts d'une catastrophe ? « super man » ! Bon ok là ce n'est pas certain que ça fonctionne, désolé ! Tapez sur espace pour passer à la page suivante du manuel et sur q pour le quitter.

Quelques commandes

A ce stade de la lecture, vous savez à peu près comment vous débrouiller avec un shell et avez déjà eu un aperçu de quelques commandes. Mais avant d'en découvrir de nouvelles, revenons un instant sur la commande de liste et son mode long qui nous apprend passablement de choses, un peu à la manière de la fenêtre d'informations du Finder. Allons-y par l'exemple:

list
La liste du contenu de mon dossier utilisateur.

Les noms tout à droite sont bien sûr les éléments du répertoire; ils sont ici en bleu car ce sont des dossiers (grâce à une version de « ls » affichant des couleurs). A leur gauche, la date de leur dernière modification, puis leur taille en octets (dans le cas d'un dossier, la taille n'équivaut pas à celle de son contenu, mais à celle du fichier décrivant son contenu). La mention staff est le groupe possédant certains droits sur l'élément, avec à sa gauche le nom du propriétaire.

Finalement la suite de lettre sur la gauche indique les différents droits pour chaque élément (si ce n'est le premier « d » qui informe qu'un élément est un dossier). Ces lettre peuvent être regroupées par trois, à chaque fois de la forme « rwx » pour read-write-execute (lire-écrire-exécuter). Pourquoi trois? Le premier est valable pour le propriétaire, le second pour le groupe et le dernier pour tous les autres. « rwx------ » indique donc que l'élément est lisible, modifiable et exécutable pour le propriétaire, mais tous les autres n'ont absolument aucun droit. Si je me connecte donc avec un autre compte, je verrai bien ce dossier, mais ne pourrai ni le parcourir (lire) ni le modifier (écrire).

A partir de là, apprenons quelques nouvelles commandes.

Nous allons d'abord créer un nouveau dossier nommé Toto à l'emplacement actuel avec la commande « mkdir » (make directory = créer un dossier), puis le déplacer dans le dossier Documents avec la commande « mv » (move = déplacer):

mkdir

Si vous listez le contenu de vos documents avec « ls -l Documents » vous devriez voir le nouveau venu. Copions maintenant ce dossier en appelant la duplication Tata à l'aide de la commande « cp » (copy) (l'option « r » indique de copier récursivement les dossiers):

cp

Si tout s'est bien déroulé, voilà le résultat que vous devriez obtenir en listant le dossier Documents:

toto

Comme nous avons une mémoire de poisson, impossible de nous souvenir de l'emplacement de notre dossier Toto ! Heureusement, la commande « find » traîne dans le coin, autant le lui demander:

find

Ici, nous demandons à « find » de rechercher depuis le répertoire courant (« . ») un élément dont le nom est Toto. Une seconde après la recherche se termine, avec le chemin de notre dossier perdu. Notez bien que si vous spécifiez de rechercher sur tout le disque (en mettant donc un slash « / » au lieu du point), la recherche sera beaucoup plus longue ! Si vous le faites et que vous décider d'arrêter la recherche, tapez sur CTRL-C. Ceci marche pour n'importe quel programme lancé dans le shell, le raccourci envoyant un signal d'interruption au processus.

Revenons un instant sur le propriétaire et les droits d'un élément. Il serait en effet fort utile de pouvoir modifier ces données. Et c'est tout à fait possible grâce aux commandes « chown » (change owner) et « chmod » (change mode).

Comme le dossier Toto a été créé par moi-même, il m'appartient et j'en suis donc le propriétaire. Mais pour une raison ou une autre, je (ou un administrateur généralement) peux vouloir nommer un autre utilisateur (existant bien sûr) en tant que propriétaire, à ma place. Nous pourrions donc simplement envisager de taper « chown autre_utilisateur Toto ». Cependant, si vous essayez, vous ne verrez que cela ne fonctionne pas, l'opération vous est interdite. Pas que la commande soit fausse, mais il y a un problème: je ne peux pas prendre des décisions de la sorte pour un autre utilisateur. C'est d'ailleurs pour cela que la commande « chown » n'est utilisable que par le super-utilisateur (ou « root »), celui qui possède tous les droits sur le système.

Pour lancer une commande en tant que super-administrateur, pour autant que vos soyez vous-même administrateur, il faut placer le mot « sudo » au début de la commande: « sudo chown autre_utilisateur Toto ». Votre mot de passe vous est alors demandé, sans toutefois que la frappe soit affichée. Plutôt que d'entrer une seule commande en tant qu'autre utilisateur, il peut être préférable de basculer complètement vers un autre compte. Il s'agit à ce moment-là d'entrer la commande « su » suivie du nom d'utilisateur, puis de rentrer le mot de passe de celui-ci. Il convient toutefois de savoir exactement ce que l'on fait en utilisant cette fonctionnalité très puissante.

chown
Changement de propriétaire en passant par un compte Admin, administrateur, depuis un compte standard.

Dans sa manière la plus simple, « chmod » fonctionne comme ceci: on indique sur qui le changement s'effectue (« u » pour l'utilisateur, « g » pour le groupe du propriétaire, « o » pour les autres (others) et « a » pour tout le monde (all), équivalent à « ugo », les combinaisons étant possibles), si l'on ajoute (« + ») ou retire (« - ») les droits et quels droit sont modifiés (« r » pour la lecture, « w » pour l'écriture et « x » pour l'exécution). Pour enlever le droit de lecture à tout le monde sur le dossier Toto, nous ferons donc « chmod a-x Toto ». Pour lui rétablir tous les droits uniquement sur le propriétaire, nous devons entrer « chmod u+rwx Toto ».

chmod

Nous voulons maintenant définir un lien symbolique pointant vers notre répertoire Toto. Un lien symbolique est une sorte « d'alias » d'un fichier ou de répertoire (je dis « sorte » car un lien symbolique est une fonction UNIX et est quelque peu différente de la notion d'alias que l'on connaît sur Mac OS). Nous allons pour cela utiliser la commande « ln » (link) avec l'option -s (symbolic), la commande link pouvant créer plusieurs types de liens.

ln

En listant les fichiers, on constate l'apparition de notre lien symbolique TotoSymlink pointant vers le dossier Toto.

Pour finir, supprimons ces deux dossiers et notre lien symbolique, totalement inutiles, grâce à la commande « rm » (remove):

rm

Les options « -f » et « -r » permettent de forcer (sans demander « êtes-vous sûr ? » à chaque fichier) l'effacement de manière récursive. Par contre, et il s'agit là d'un des dangers du Terminal, faites très attention en utilisant cette commande ! En effet, les données supprimées le sont pour de bon, sans passer par la case corbeille. Et une mauvaise manipulation peut vite devenir catastrophique. Exemple: « rm / mon_fichier » (notez l'espace entre le slash et le nom du fichier) n'effacera pas comme on s'y attend notre fichier, mais effacera la racine, c'est-à-dire… tout le disque ! J'avoue que je m'enflamme un peu avec cet exemple puisque si vous essayez de le faire, vous verrez que vous n'en avez pas les droits. Il faut effectivement utiliser d'abord la commande « sudo » pour passer en super administrateur et s'arroger tous les droits. Reste qu'il faut donc faire très attention lorsque vous utilisez ces commandes.

Pour aller plus loin

Ce petit scénario en compagnie de nos amis Toto et Tata nous auront permis de découvrir quelques nouvelles commandes de base. Mais il faut bien dire qu'elles ne sont pas des plus intéressantes, bien que parfois très pratiques. Essayons donc d'aller un peu plus loin.

Une commande que l'on rencontre souvent si l'on aime bien modifier le comportement par défaut des applications de son système et la commande « defaults ». Cette commande est propre à Mac OS X est permet de traiter une fichier plist (property list), fichier au format XML utilisé pour enregistrer les préférences des utilisateurs. Si vous êtes curieux et que vous consultez le manuel de la commande, vous verrez qu'elle permet entre autres de lire et de modifier un fichier de préférences, ce que nous allons voir ici.

Le but de l'exemple est de modifier une préférence du Dock qui permet de rendre semi-transparente l'icône d'une application masquée (pour masquer une application, cliquez sur son nom dans le menu puis Masquer, ou ⌘H). Pour cela, nous devons modifier le fichier com.apple.Dock qui se trouve dans le dossier Bibliothèque/Preferences de votre compte, et plus précisément changer la valeur de la clé « showhidden », qui peut être soit vraie, soit fausse (par défaut).

Dans un premier temps, nous affichons la valeur actuelle de la propriété « showhidden » qui vaut 0, c'est-à-dire « faux ». En d'autres termes, les applications masquées n'ont pas d'icône transparente. Pour que cela soit le cas, nous allons devoir passer cette valeur à « vrai », grâce à la commande « defaults write com.apple.Dock showhidden -bool YES ». « write » indique que nous voulons écrire dans le fichier qui suit, à savoir « com.apple.Dock », et « showhidden » est la propriété à modifier. Il faut ensuite spécifier le type de la valeur, qui peut être une date, une chaîne de caractères, un tableau d'éléments, etc… ou, dans ce cas, un booléen, c'est-à-dire vrai ou faux. Dans notre cas, nous faisons passer cette valeur à « YES », autrement dit « vrai ».

La lecture du même fichier indique bien que la valeur est désormais 1. Finalement, pour que la modification prenne effet, il faut relancer le Dock, ce que nos faisons avec « killall Dock », qui permet de tuer le processus donné en argument. Le Dock se relancera automatiquement.

defaults

S'il y a de nombreux éditeurs de textes sur Mac, à tous les prix et pour tous les formats, il peut être pratique de lire ou même d'éditer un fichier directement dans le Terminal. Il sera par exemple facile de jeter un oeil à un fichier en utilisant « cat », qui imprime le contenu d'un fichier en paramètre, « tail » qui affiche le contenu depuis la fin du fichier ou encore avec « more » ou « less ». Bien entendu, ces commandes permettent plus que ça. Si vous désirez carrément bénéficier d'un éditeur de texte, jetez un oeil du côté de « nano » ou de « vim », la Rolls des éditeurs de texte en ligne de commande. Mirko en avait d'ailleurs parlé (ou plutôt de « vi », « vim » étant une version améliorée de celui-ci) dans cet article.

Les ventilateurs de votre Mac s'affolent sans raison ? Jetez un oeil du côté de la commande « ps -ef » histoire de voir qui en est le responsable. Vous l'avez trouvé ? Retenez bien son PID et abattez-le sans plus attendre à coup de « kill -9 mechant_PID » !

Vous vous demandez quel chemin (par quels routeurs) transitent les données du site Cuk pour arriver jusque chez vous ? Entrez « traceroute www.cuk.ch » et vous le saurez ! Et si votre connexion vous pose problème, regardez peut-être du côté de la configuration avec « ifconfig »: vous y trouverez adresse IP (v4 et v6), adresse MAC ou encore masque du sous-réseau pour chacune de vos interfaces.

Et j'en passe et des meilleures…

Pour terminer, car je laisserai les plus aventuriers se pencher eux-mêmes sur l'utilisation des redirections d'entrée et de sorties ainsi que sur l'utilisation des « pipes » (rien de fumeux, il s'agit du mot anglais signifiant « tuyau »), un petit mot concernant les métacaractères du shell. Un métacaractère est un caractère qui possède une autre signification que sa signification littérale. Il en existe plusieurs et je ne vous en mentionnerai que deux, qui permettent de gagner du temps: « * » et « ? ». Lorsque vous placez l'un de ces caractères au sein d'un argument d'une commande, il ne sera pas lu en temps que tel mais remplacé:

  • « * » : correspond à n'importe quel caractère ou ensemble de caractères
  • « ? » : est équivalent à un caractère quelconque

star

De la sorte, lorsque vous entrez « ls -l t* », vous obtiendrez la liste de tous les fichiers commençant par « t ». Inutile donc de se souvenir du nom exact, et pratique si vous vous retrouvez face à des centaines de fichiers, ou pour traiter d'un seul coup un lot de fichier en commun.

Conclusion

Si vous êtes toujours vivant et que vous n'avez pas encore démoli votre Mac, gardez en tête que le Terminal peut s'avérer parfois utile. Bien sûr, les interfaces graphiques n'existent pas que pour les beaux yeux de Steve Jobs, le raccourci ⌘N du Finder est bien plus rapide. Mais certaines fonctions n'ont pas de réel équivalent sous forme graphique, ou souvent moins puissant. De plus, si l'on s'habitue au Terminal, cela évite d'avoir plétore de petits logiciels qui ne font que donner une interface à des commandes relativement accessibles (typiquement pour les modifications via la commande « defaults »).

Sans doutes certains d'entre vous en auront largement assez vu, d'autres se diront qu'il ne s'agit là que d'un survol (je ne prétends en effet pas du tout faire le tour de la question, mais uniquement une mise en bouche), mais j'espère que si le sujet vous intéressait, vous avez désormais de quoi vous lancer sans être trop effrayé !

27 commentaires
1)
François Cuneo
, le 25.06.2009 à 05:54
[modifier]

Si le Terminal est l’application proposée par Apple pour accéder à un interpréteur de commandes, elle n’est pas la seule disponible pour Mac OS X; ainsi certains préféreront par exemple iTerm, offrant notamment un mode plein écran.

Aaaaah ouuiii… Avec un mode plein écran, c’est beaucoup mieux!:-)

Dites: un article sur Latex hier, un sur Terminal aujourd’hui, c’est un complot ou quoi?:-)

Cela dit, merci pour ces bases. J’ai parcouru assez en détail, ça m’a l’air bien progressif, même moi j’arrive à comprendre.

Je n’hésiterai pas à revenir au besoin chercher une référence, au cas où… mais faudra vraiment que le cas soit désespéré pour que je m’y mette, à ce Terminal.

Au fait, vous savez quoi? Depuis tout ce temps qu’on est sur OSX, jamais eu besoin de lui!

Dingue non?:-)

2)
Inconnu
, le 25.06.2009 à 07:23
[modifier]

Hé ben, je pensais pas que tu mettrais un commentaire, François… T’es à l’hosto ? T’as fait une syncope ? :-)

Merci 6ix, pas le temps de tout lire maintenant (j’ai mon dernier oral dans pile deux heures), mais je le lirai cet après-midi. ;-)

(Et y a déjà certaines choses que je connais… Ce qui me rassure.)

3)
Franck Pastor
, le 25.06.2009 à 07:31
[modifier]

Moi je l’utilise quasiment tous les jours, le Terminal (presque jamais pour LaTeX, même si François ne me croira pas), et je ne pourrais plus m’en passer. Merci pour ce très bon article d’introduction, 6ix, j’espère qu’il incitera certains Cukiens à franchir le pas eux aussi !

Si vous désirez carrément bénéficier d’un éditeur de texte, jetez un oeil du côté de « nano » ou de « vim », la Rolls des éditeurs de texte en ligne de commande. Mirko en avait d’ailleurs parlé (ou plutôt de « vi », « vim » étant une version améliorée de celui-ci) dans cet article.

Miam, un début de recommencement de la guerre des éditeurs en ligne de commande ? :-b Moi c’est Emacs, l’étendard de la Free Software Foundation, que j’utilise dans le Terminal, et il fait absolument tout, celui-là, même le psychanalyste !

4)
Le Corbeau
, le 25.06.2009 à 08:44
[modifier]

merci pour ton article qui démontre la faillite de l’informatique
-soit parce qu’elle est incapable de faire une interface graphique,
– soit parce qu’elle est trop prétentieuse pour donner à tous les moyens simples pour fouiller dans son PC

y a qu’à voir sur sourceforge les kilomètres de pages d’explications et de lignes de commande pour installer un simple logiciel comme webmin et écrire deux lignes dans un fichier de config :
Tant que les informaticiens n’auront pas compris une bonne fois pour toute qu’un mécano ne forge pas lui même les pièces de rechange des voitures qu’il modifie ou répare et que ce n’est pas parce qu’on installe des serveurs qu’on doit fabriquer soit même les logiciels à partir de pièces de puzzles, ils continueront à perdre la guerre du logiciel libre.

Bon, je vais soigner mon allergie au terminal :-))

5)
Mout
, le 25.06.2009 à 09:30
[modifier]

Bonjour,

Puis-je me permettre d’apporter une petite rectification concernant les trois lettres “rwx”? il ne s’agit pas de right-write-execute, qui ne signifie pas Ecrire-Lire-exécuter, mais plutôt Read-Write-Execute, signifiant du coup (dans l’ordre) Lire-Ecrire-Exécuter ;)

Je pinaille un peu, mais face à un article aussi abordable, je me suis dit que ca ne pouvait rester ainsi ;) des utilisateurs pourraient conserver cette erreur en mémoire…

Longue vie à Cuk.ch que j’ai découvert il y a peu et que je suis depuis tous les jours ;)

6)
KeKeSeB
, le 25.06.2009 à 09:38
[modifier]

merci pour ton article qui démontre la faillite de l’informatique -soit parce qu’elle est incapable de faire une interface graphique, – soit parce qu’elle est trop prétentieuse pour donner à tous les moyens simples pour fouiller dans son PC

Alors la, je suis pas d’accord. Au delà de l’informatique grand public, le terminal est indispensable et permet de faire des choses beaucoup plus puissantes que n’importe quelle interface graphique. Sans lui, on ne connaitrait sans doute pas Internet (Le serveur sur lequel est hébergé cuk.ch n’a surement pas d’interface graphique, tout comme les équipements réseau qui le connecte au reste du monde), pas de bancomat (Seveurs de DB derrière qui sont sans doutes pas sous Windows), etc… Tout se fait par SSH, qui permet d’ouvrir un terminal sur un hôte distant.

7)
Kotek
, le 25.06.2009 à 09:42
[modifier]

J’ai décroché au “chmod”, malheureusement. Néanmoins, j’ai eu le temps de remarquer une répétition dans l’article.

Sauras-tu la retrouver ? Sauras-tu la retrouver ?

8)
fap76
, le 25.06.2009 à 10:11
[modifier]

Super intéressant comme article, j’ai l’impression de me retrouver en enfance, quand on avait pas le choix, quand les interfaces graphiques n’étaient qu’un rêve…

Bon, je vais sérieusement le lire ce soir cet article :-)

9)
AdMem
, le 25.06.2009 à 10:39
[modifier]

Difficile de se mettre dans le bain avec ce Terminal. Faudra que je m’y penche une fois quand même !

Excellent article en tout cas, même pour les débutants comme moi…

10)
Le Corbeau
, le 25.06.2009 à 10:50
[modifier]

permet de faire des choses beaucoup plus puissantes que n’importe quelle interface graphique

donc tu confirmerais ma première remarque

Sans lui, on ne connaitrait sans doute pas Internet

Sans le bois, on ne connaitrait sans doute pas la roue, combien de roues en bois aujourd’hui?
Et même si on en fait encore pour les charettes, il existe des scies électriques, des tours à bois et autre matos pour remplacer les mauvaises scies forgées à la main en mauvais métal que seul un spécialiste est à même d’utiliser (avoyage et affutage obligatoire en permanence…)

11)
soizic
, le 25.06.2009 à 11:30
[modifier]

Je pense que le Terminal est passionnant pour ceux qui connaissent le système Unix car on retrouve tout ce qui en fait la puissance. MAIS si tu as abandonné Unix depuis quelques années, ce qui est mon cas, il est très difficile de s’y remettre tellement les commandes sont riches (ou compliquées pour des débutants).

Donc j’absous à l’avance toute personne allergique au Terminal !

12)
Filou53
, le 25.06.2009 à 12:54
[modifier]

Merci pour cette saine lecture.

Etant un ancien du monde PC (et hélas, toujours dedans au bureau), ce n’est pas trop dépaysant !

Et effectivement, cela peut aider.

Il y aura une suite, j’espère ?

Le tout, c’est de doser correctement ;-)

13)
Matkinson
, le 25.06.2009 à 12:59
[modifier]

Aaaah… Le terminal. C’est un vrai virus. Rien que pour le fait de pouvoir tout faire ou presque à distance par ssh… :-)

Je me permets un petit apport pour trouver les PID qui font ramer la machine : la commande “top” (sic). Les processus sont là, triés, avec le PID et tout, avec rafraichissement (toutes les secondes si je ne me trompe).

Et pour les dingues du terminal, y a aussi Mutt (client mail), irssi (IRC), et j’en passe. Ah oui et puis le petit programme qui me fait tripper : screen (multiplexeur de terminal).

Bref c’est un peu barbare au premier abord effectivement, mais c’est tellement efficace au final que c’est dur de s’en passer, même sur Mac.

14)
Théodore Besson
, le 25.06.2009 à 13:48
[modifier]

Arggh!

Je ne suis pas arrivé au bout malgré toute ma bonne volonté.

Je crois que je fais un blocage avec toute ligne de commande…

Je m’y replongerai plus tard.

Théo

16)
Blues
, le 25.06.2009 à 14:36
[modifier]

Depuis tout ce temps qu’on est sur OSX, jamais eu besoin de lui! Dingue non?:-)

Perso sans avoir jamais mis les mains dans le cambouis non-plus, je n’ai jamais été étonné, puisque que cela a toujours été le but premier d’Apple lors de l’intégration de Next-Darwin Unix à devenir Mac X : un système hyper simple au premier plan (hérité du look&feel Classic) pour tout users lambda y compris familles, avec en arrière-plan des fonctionnalités pour les plus pointus / bidouilleurs / Unixiens. Avec le recul on a la preuve qu’ils ne se sont pas plantés et que le but est atteint.

Y’en a pour tout le monde, chapeau bas ! (sans parler du triple boot /Mac/Win/Linux/ facilité par le passage au processeur Intel) Reste plus que les prix à revoir pour ceux dont ça reste l’argument pour “switcher” définitivement

17)
Diego
, le 25.06.2009 à 14:38
[modifier]

Ah oui et puis le petit programme qui me fait tripper : screen (multiplexeur de terminal).

Voilà quelque chose d’intéressant … je “trippe” pour screen depuis un moment aussi, mais c’est tellement puissant que j’ai du mal a en saisir l’essence … Si tu as un bon tuto je suis preneur.

18)
Kermorvan
, le 25.06.2009 à 15:07
[modifier]

C’est bien que cuk fasse un peu d’instruction. Vive la technique ! Latex, le terminal, bravo ! Ce n’est pas parce que l’on peut s’en passer que l’on ne doit pas savoir ce que nos machines ont dans leurs tripes. Je viens de la CAB500 et de l’IBM 1620. Quelle évolution !

19)
Blues
, le 25.06.2009 à 17:28
[modifier]

Justement à bas la nostalgie 8-) l’évolution c’est pour la masse/le commun des mortels (non versé dans le bidouillage) l’avantage de ne plus mettre les mains dans le cambouis est qu’un ordi fonctionne comme un outil accessible à tous (perceuse, tv, etc..)… Ok, c’est pas toujours le cas, mais effectivement y’a eu une sacré progression depuis le CAB500 et l’IBM 1620 ;-)

Et pour la minorité bidouilleuse-technophile, heureusement MacOsX contient ce qu’il faut pour eux (mais en arrière-plan bien planqué)

20)
6ix
, le 25.06.2009 à 19:53
[modifier]

Désolé de n’arriver que maintenant, j’ai été occupé toute la journée…

Puis-je me permettre d’apporter une petite rectification concernant les trois lettres “rwx”? il ne s’agit pas de right-write-execute, qui ne signifie pas Ecrire-Lire-exécuter, mais plutôt Read-Write-Execute, signifiant du coup (dans l’ordre) Lire-Ecrire-Exécuter ;)

Tu as raison de pinailler, surtout quand on parle du Terminal… J’avais été un peu vite sur le coup, ça ne signifiait pas grand-chose, c’est corrigé !

Par rapport aux avis de Le Corbeau ou Blues (« à bas la nostalgie » ;-) ):

Je rejoins plutôt les idées de KeKeSeb et Kermorvan. Tout d’abord, pour un informaticien, comme pour d’autres métiers, et cela vaut surtout si l’on va loin dans les études du domaine, il est à mon sens important de comprendre ce qui se passe « au-dessous». Je ne parle pas de toute les détails, mais savoir quelles évolutions ont permis d’en arriver là, qu’est-ce qu’une « boîte noire » que l’on ne fait qu’utiliser a en fait dans le ventre. Cela aide à la compréhension générale, et également à comprendre d’éventuels problèmes.

Alors bien sûr, pour le grand public, seule l’utilisation finale compte, peu importe comment cela marche.

Et je trouve que c’est là une grande force de Mac OS X: il se base sur un système qui a fait ses preuves (UNIX), dont les fonctionnalités les plus « puissantes » sont tout à fait accessibles aux experts, tout en offrant à l’utilisateur le moins doué en informatique une interface simple, intuitive et efficace.

Je pense que c’est d’ailleurs quelque chose de difficile à réaliser: simplifier les choses au maximum pour le grand public, sans perdre de vue que certaines personnes voudront bénéficier d’outils beaucoup plus complexes.

Le Corbeau, je ne pense pas que les informaticiens utilisent parfois encore la ligne de commande simplement pour se compliquer la vie (d’accord, certaines personnes trouveront plus simple de tout faire dans en console et là c’est à se poser des questions), mais essentiellement parce que certaines démarches sont beaucoup plus directes, et ne nécessitent pas d’abord de concevoir toute une interface.

Pour ces travaux-là, il faut de toute façon du personnel qualifié. Qui devrait donc dans tous les cas connaître les outils nécessaires pour son travail. Ce sera donc nettement plus simple pour lui de travailler comme dit KeKeSeb en ssh sur un poste qui poste problème que de devoir passer par une interface qui ne fait que mettre des boutons sur les commandes qu’il va entrer (en enlevant au passage sans doute plein d’options).

La comparaison de la roue, je ne la trouve donc pas très judicieuse.

21)
Matkinson
, le 25.06.2009 à 20:19
[modifier]

c’est tellement puissant que j’ai du mal a en saisir l’essence … Si tu as un bon tuto je suis preneur.

L’essence c’est de rediriger la sortie d’un processus vers un genre d’émulateur au lieu de ton écran, qui lui affichera la sortie de ton émulateur. L’intérêt est que la sortie de l’émulateur peut aussi se faire sur un écran à distance via ssh. J’ai découvert ça avec irssi, client irc en terminal. En gros tu lances irssi sur ton ordi à la maison par exemple, mais à l’intérieur d’une session screen. Ensuite tu vas au boulot, où tu espères avoir un employeur suffisamment sympa pour autoriser les connexions ssh vers l’extérieur, et où ton poste de travail affichera la sortie de ta session screen.

Le tuto que j’ai utilisé est . En gros, tu tapes “screen” dans ton terminal, un écran vide apparaît, ressemblant pile poil à ton terminal de départ (comme si avais tapé “clear”), tu tapes “irssi” ou tout autre programme, puis tu laisses ouvert. Tu peux détacher la fenêtre screen en tapant “Ctrl-a d”. La session screen est détachée, c’est-à-dire que tu ne vois plus ton appli, mais elle tourne toujours en arrière-plan. A un autre endroit, au boulot pour reprendre l’exemple (via ssh) ou dans une autre fenêtre terminal, tu peux reprendre la main sur ton programme en tapant “screen -r” (plus le nom de la session éventuellement, donné par “screen -ls”). Et voilà ! Tout bête mais rudement bien.

22)
Diego
, le 25.06.2009 à 21:35
[modifier]

@Matkinson Très intéressant l’usage que tu fais de screen … Moi je l’utilise pour une toute autre application : sur un serveur, pour faire tourner plusieurs applications qui ne sont pas des deamon et dont je veux contrôler l’enclenchement, j’ouvre des sessions screen via cron et j’y lance l’application désirée, c’est d’une simplicité crasse. Ensuite, toujours via cron, je tue la session screen dont je veux arrêter l’application et l’affaire est faite.

Je pense que les rares lecteurs qui ont suivi cet échange nous prennent pour des malades, mais je crois que ça illustre bien la puissance du shell : ces applications n’ont certes pas de beaux boutons et de menus déroulants, mais les développeurs qui n’ont pas eu a dépenser leur énergie pour ça ont travaillé dans le polymorphisme …

23)
JeMaMuse
, le 25.06.2009 à 22:09
[modifier]

Très bonne idée que d’aborder le sujet «Terminal» ! Nos magnifiques interfaces graphiques sont loin de tout permettre, alors que le terminal offre à peu près tout !

Aujourd’hui encore, le shell me permet de me tirer de situations inextricables, notamment dans la gestion de données qu’on me transmet dans des formats plus que doûteux.

Pour ma part, je travaille sur Solaris, et j’ai moins d’expérience sur BSD. Alors si on veux aller plus loin, on peut faire abstraction du type d’Unix en utilisant des languages tels que Perl. Une fois qu’on y a goûté, c’est quasiment l’addiction !

25)
Guillôme
, le 26.06.2009 à 11:12
[modifier]

C’est pour “tuer” le premier commentaire :-; ???

Lance cette commande dans ton terminal, et tu verras que ça ne tuera pas que le 1er commentaire ;)

26)
ReReX
, le 26.06.2009 à 16:53
[modifier]

En ce qui me concerne je pense que le Terminal est un outil indispensable. Quand à ceux qui pense que c’est un retour en arrière, l’ordinateur quantique n’existe pas encore, ni les puces organiques, donc les ordinateurs personnels d’aujourd’hui, comme ceux d’il y à 25 and fonctionnent en binaire. Le terminal n’est ni un archaisme, ni une régression. Quand on le maitrise (ce qui n’est certes pas mon cas) on peux aller beaucoup plus vite qu’avec une souris. Et je rappelle que dans bien des cas les applications ne sont ni plus ni moins que des interfaces graphiques de commandes terminal. Je me demande comment administrer un serveur sans ouvrir le Terminal. Merci pour cet article et pour ceux nombreux j’espère qui vont suivre.

27)
sebasto
, le 28.06.2009 à 11:07
[modifier]

Lance cette commande dans ton terminal, et tu verras que ça ne tuera pas que le 1er commentaire ;)

Et encore, kill-9 -1, c’est la version gentille :)

La version méchante c’est celle-là (méchante mais juste : il faut tout de même être administrateur et taper son mot de passe si on n’a pas utilisé sudo récemment :D):

sudo kill -9 -1