5. Gérer ses fichiers en ligne de commande

Les navigateurs de fichiers utilisent des commandes texte pour permettre une gestion graphique des fichiers. Il est parfaitement possible de gérer ses fichiers directement dans un émulateur de terminal en ligne de commande pure. Entre les deux se trouvent Midnight Commander, mc pour les intimes, ou Ranger des gestionnaires de fichier en ligne de commande. Quelle différence avec une gestion directement dans la console ?

Midnight Commander

Fondamentalement, le principe de fonctionnement de mc repose sur sa présentation des fichiers dans deux volets gauche et droite. Il ne faut pas perdre cela de vue. Par ailleurs, en lieux et place de commandes texte, les touches F1, … ou même la souris prennent un rôle important.

En bas de la fenêtre, se trouvent des nombres correspondant chacun au touches F1, F2, … avec en regard un mot introduisant leur rôle. Par exemple, <1 Aide> fait comprendre que la touche <F1> permet d’obtenir l’aide. Ainsi aussi, <F2> donne accès à un menu permettant différentes opérations sur les fichiers, <F3> lance un visualiseur de fichier prédéfini, <F4> lance un éditeur de texte prédéfini sur le fichier sélectionné, <F5> copie un fichier d’un volet à l’autre (il faut au préalable sélectionner la destination dans le volet opposé à celui où est sélectionné le fichier), <F6> coupe colle un fichier sélectionné dans le volet opposé ou le renomme si on spécifie un autre nom, <F7> crée un répertoire, <F8> supprime un fichier ou un répertoire, <F9> bascule entre la barre de menu et les volets, <F10> permet de quitter les menus sélectionnés ou mc lui-même.
On peut aussi accéder à ces fonctions à l’aide de la souris.

Tout en haut, se trouvent les menus <Gauche>, <Fichier>, <Commande>, <Options> et <Droite> dont chaque élément est clairement décrit par son nom. C’est évidemment là que se trouvent les avantages de mc sur la ligne de commande pure.
Par exemple, dans le menu fichier se trouve un item «Chmod» permettant de modifier les droits des fichiers à la souris en cliquant simplement sur une liste très explicite.
Je vous laisse découvrir le reste.

Finalement, la ligne de commande est toujours accessible juste au-dessus de la barre des fonctions F1, …

Ranger

Il s’agit ici d’un gestionnaire de fichier remarquable par sa simplicité. Même s’il est configurable différemment, l’idée est de présenter l’arborescence à trois niveaux. Au centre, une colonne avec le répertoire dans lequel on se trouve, à gauche les fichier ou dossiers du répertoire supérieur et à droite ceux du répertoire inférieur. C’est tout. Aucun bandeau supplémentaire.

Pour agir sur les fichier ou dossiers sélectionnés, deux méthodes sont possibles :

  • une touche de fonction ou un équivalent clavier ou
  • la touche deux-points (:) qui donne un accès direct à la ligne de commande dans le répertoire de travail.

Dans le premier cas, il faut connaître les associations de touches-actions. Elles sont décrites dans le document ci-dessous fourni sur le site de Ranger.

Les touches spécifiques à Ranger

Quant à la seconde manière d’agir, elle nous relie directement au terminal et je ne vais pas décrire ici les commandes qui lui sont spécifiques.

Par contre, celle-ci permet d’accéder à des fonctions spécifique à Ranger. Un unique exemple suffira. Comment afficher dans Ranger les fichiers cachés ? Simplement en modifiant au vol la préférence du navigateur correspondant à l’affichage de ces fichiers. Pour cela, il faut passer en ligne de commande à l’aide de la touche deux-points (:) et écrire :

:set show_hidden true

:set show_hidden false

pour afficher ou cacher les fichiers cachés.

Il existe cependant un raccourci permettant de faire cela plus facilement :

CTRL h

Il s’agit d’une bascule : un pression et on voit les fichiers cachés, une autre et ils disparaissent

Reste à dire que Ranger dispose d’équivalents claviers qui ne dépayseront pas les utilisateurs de vi, ce qui est une très bonne chose.

Par exemple, pour couper/copier/coller des fichiers d’un répertoire à un autre, il suffit de les sélectionner avec la barre d’espace, puis pour les couper taper dd ou pour les coller taper yy, d’aller dans le répertoire de destination et de taper pp.

Une dernière chose à savoir, pour choisir quel logiciel utiliser pour ouvrir un fichier, il suffit de presser la touche r et Ranger proposera tous les logiciels disponibles pour ce type de fichier dans un menu déroulant. TOP.

Lien intéressant : Ranger LE navigateur de fichier en mode terminal

6. Naviguer en ligne de commande

Le pas a réaliser pour se mettre à naviguer sur le net en ligne de commande est grand. Cela pour deux raisons. La première est qu’on imagine difficilement de le faire sans images. La seconde est que beaucoup de site ne sont clairement pas adaptés à ce type d’accès.

Pourtant, en ligne de commande, la navigation est si rapide qu’il est très agréable de le faire. J’aimerais ici montrer que bien souvent l’utilisation d’un autre type de navigateur est inutile. Dans un premier temps, il ne s’agit pas de se passer systématiquement d’un navigateur classique, mais de découvrir le réel plaisir qu’on peut avoir en ligne de commande. Nous aborderons plus tard les cas où cette navigation est assez difficile pour qu’un autre navigateur soit nécessaire.

Le navigateur que nous allons utiliser est Lynx. Pour l’installer, il suffit de faire un petit :

apt-get install lynx

Ensuite, pour lancer la navigation, on peut simplement écrire :

lynx www.duckduckgo.com

pour se rendre directement sur un site ou simplement lynx, sans arguments. Dans ce cas, il faut alors taper la lettre <g> pour pouvoir entrer une url et s’y rendre par un <return>.

La navigation est aisée en utilisant soit les flèches haut-bas pour se rendre dans un champ  de recherche, comme sur duckduckgo.com ou se déplacer dans des liens, soit la flèche gauche pour revenir à un moteur de recherche après la visite d’un site ou la flèche droite pour accéder au site à partir d’un lien.


Le premier point nécessaire à une utilisation efficace d’un navigateur est de disposer de signets.

Lynx dispose d’un mécanisme d’ajout de signets. Il suffit de presser la touche <a>. On a alors deux choix possibles :

  • la touche nous mène à ajouter l’url du document en consultation et
  • la touche nous mène à ajouter l’url du lien dans lequel se trouve le curseur.

Il suffit ensuite d’accepter ou de donner un nouveau nom au signet pour qu’il soit enregistré dans un fichier de signet unique. C’est le comportement par défaut avec le mode de multi-bookmark de lynx désactivé (OFF).

Mais il est possible d’activer deux modes permettant une gestion plus fine des signets. Il s’agit des modes STANDARD et ADVANCED.

Le choix de ces modes se fait dans les options de lynx. On se rend dans celles-ci en pressant la touche <o>. À la ligne :

Signets multiples : [OFF / STANDARD / ADVANCED]

on peut choisir le mode désiré.

En mode STANDARD, lynx offre l’accès à 26 fichiers de signets correspondant aux 26 lettres de l’alphabet. Chaque fichier doit avoir un nom et une url pointant vers lui. Pour les définir, dans les options il faut cliquer sur «Aller au menu signets multiples» en regard du texte «Revoir / Éditer les fichiers signets», puis choisir la lettre sous laquelle on veut le fichier et spécifier son nom, par exemple «Moteurs de recherche», et son url, par expemple, «./signetsLynx/recherche.html». Le «./» est nécessaire si le(s) fichier(s) de signets est/sont dans un répertoire.

Alors, pour ajouter un signet, on procède comme dans le mode OFF, sauf qu’après l’ajout <a>, il faut spécifier la lettre du fichier de signets.

Je vous laisse découvrir par vous-même le mode ADVANCED.


Finalement, pour utiliser les signets, c’est la touche <v> qu’il faut simplement presser pour accéder à l’unique fichier de signets en mode OFF. On peut alors, en mode STANDARD, choisir les fichier des signets désirés en pressant la touche correspondante.

Voilà pour cette petite introduction à Lynx. Bonne navigation.

Mot de passe raspberry perdu

Si vous avez perdu le mot de passe de votre raspberrypi, voici une méthode pour le récupérer.

La première chose à faire est d’accéder au fichier :

/etc/passwd

en sortant la carte sd du raspberry et en la mettant soit dans un adaptateur sd-usb, soit directement dans un ordinateur permettant d’utiliser une carte sd.

On peut alors avoir accès aux trois partitions de la carte et trouver le fichier en question (en cherchant un peu).

Dans ce fichier, il faut trouver la ligne :

pi:x: ...

et effacer le x de la ligne (mais pas les : de chaque côté), de manière à obtenir :

pi:: ...

On a ainsi effacé le mot de passe demandé pour la connexion en ligne de commande du raspberrypi. Il faut bien entendu ne pas oublier d’enregistrer.

Puis on éjecte la carte sd, on la remet dans le raspberry et on le démarre.

Si c’est l’interface en ligne de commande qui apparaît, on peut alors se connecter directement sous le compte pi, sans mot de passe. Si c’est l’interface graphique qui apparaît, ce n’est pas possible. Il faut alors utiliser les touches <Ctrl><Alt><F1> pour obtenir l’invite en ligne de commande et se connecter sur le raspberry sous le compte pi, sans mot de passe.

Le mot de passe pour la ligne de commande est donc maintenant vide, mais pas celui permettant de se connecter graphiquement. Cependant, on est maintenant connecté en ligne de commande sur le raspberry. On peut donc maintenant utiliser l’utilitaire de configuration du raspberry en entrant :

sudo raspi-config

Il va alors apparaître différentes options en ligne de commande permettant la configuration du raspberry, dont le changement du mot de passe. En choisissant celle-ci et en entrant deux fois le nouveau mot de passe, on peut changer définitivement celui-ci.

Il suffit alors de quitter la console par un « exit », puis de retrouver l’interface graphique par <Ctrl><Alt><F7 ou F8> et vous connecter. Si la console grahique n’est pas présente, redémarrez simplement.

Voilà. En vous souhaitant bonne chance dans vos manipulations, enjoy.

7. Lynx, midnight commander et mutt transparents dans terminator

L’un des plaisirs non négligeables de la ligne de commande est de pouvoir voir son fond d’écran pendant qu’on utilise son ordinateur.

Avec terminator, la transparence du fond et très bien gérée. Il s’agit simplement de se rendre par un clic droit dans les Préférence, puis dans l’onglet Profils sous Default, dans le sous-onglet Arrière-plan, il faut choisir Arrière-plan transparent et choisir un pourcentage de transparence (70%, soit 0.7, par exemple). Fermez enfin simplement la fenêtre. Ainsi, il sera possible de s’adonner à la ligne de commande dans un émulateur de terminal transparent.


Malheureusement, quand on lance le navigateur en ligne de commande lynx, celui-ci a une couleur de fond non transparente par défaut.

Pour rendre lynx transparent, il faut se rendre dans le fichier :

/etc/lynx/

pour y commenter les deux lignes nécessaires à l’aide d’un # (inutile de les effacer, comme dit dans le commantaire) :

# If you really want the terminal's default colors, and if lynx is built using ncurses' default-color support, remove these two line :

normal: normal: lightgray:black
default: normal: white:black

Il faut ensuite relancer lynx et le tour est joué.


Il en va de même avec midnight commander qui aborde un fond de couleur bleue particulièrement désagréable.

Pour rendre midnight commander transparent, il faut reconfigurer ses couleurs par défaut en ajoutant à la fin du fichier :

~/.config/mc/ini

sous Debian, les quelques lignes suivantes :

[Colors]base_color=normal=,default:selected=,:marked=,default:\markselect=,:menu=,:menuhot=,:menusel=,:\menuhotsel=,:dnormal=,:dfocus=,:dhotnormal=,:dhotfocus=,:\input=,:reverse=,:executable=,default:directory=,default:\link=,default:device=,default:special=,:core=,:helpnormal=,:\helplink=,:helpslink=,:editnormal=,default:

qui feront de midnight commander un navigateur de fichier sur fond transparent.


Enfin, il en va de même avec le maileur en mode texte mutt.

Pour rendre mutt transparent, il faut encore se rendre dans son fichier de configuration :

~/.muttrc

et y ajouter à la fin les lignes suivantes :

Rendre la couleur d'avant plan des messages blanche
et l'arrière plan de la même couleur que celle du terminal

color normal white default

Voilà, finalement, en divisant la fenêtre de terminator en trois parties, vous pouvez relevez vos mails, organiser vos fichiers et naviguer sur internet en ligne de commande tout en admirant votre fond d’écran. Pour autant que celui-ci change périodiquement à l’aide de Variety, l’effet est absolument magnifique.

2. Comment relever ses mails en ligne de commande

Installation

Avec un client graphique conventionnel, récupérer le courrier, le trier dans des boites aux lettres, l’afficher et l’envoyer sont toutes des opérations directement prise en charge par le client.

Avec le client en ligne de commande Mutt, ce n’est pas le cas. Il est donc nécessaire de lui adjoindre les logiciels fetchmail, pour récupérer les mails, procmail pour les filtrer dans les boites aux lettres et msmtp, pour l’envoyer.

La première étape consiste donc à installer ce logiciels par :

apt-get install fetchmail procmail mutt msmtp

Une fois installé, il faut chacun les configurer.

  1. Fetchmail sert donc à rapatrier le courrier sur l’ordinateur. Son fichier de configuration est ~/.fetchmailrc, fichier caché dans le répertoire utilisateur. S’il n’existe pas, il faut le créer.
    Il contient les informations suivantes :
    poll mail.mon.domaine
      protocol pop3
      user utilisateur (adresse mail)
      password motdepasse
    poll mail.mon.domaine
    protocol pop3
    user autre_utilisateur (une autre adresse mail)
    password autre_motdepasse

    Aucune indication de cryptage n’est mentionnée, car fetchmail va tenter de se connecter avec STARTTLS par défaut.
    Pour tester fetchmail, il faut utiliser la commande :

    fetchmail -k -v -m "/usr/bin/procmail -d %T"

    où les options sont les suivantes :
    – k : pour ne pas effacer les messages du serveur (keep),
    – v : pour rendre fetchmail verbeux,
    – m : pour désigner le MDA (Mail Delivery Agent : le facteur), ici procmail.

  2. Procmail sert à filtrer le courrier et le répartir dans les boites aux lettres. Son fichier de configuration est ~/.procmailrc, fichier caché dans le répertoire utilisateur.
    Il contient les informations suivantes :
    MAILDIR=$HOME/Mail                
    LOGFILE=$HOME/.procmaillog
    LOGABSTRACT=no
    #VERBOSE=on (Est utilisé uniquement pour le débogage.)
    VERBOSE=off
    DEFAULT=$MAILDIR/inbox
    # Mettre les spam à la poubelle.
    :0
    * ^Subject:.*(credit|cadeau|cash|money|debt|sex|sale|loan|spam)
    $MAILDIR/Spam
    # Élimine les messages HTML.
    :0
    * ^Content-Type:.*html
    $MAILDIR/Junk
    # Boite aux lettres pour une autre adresse email
    :0
    * ^TOautre@adresse\.mail
    $MAILDIR/autrerepertoire # Tout ce qui n'est pas trié va dans la boîte par défaut. :0 * .* $DEFAULT

    On comprend bien le rôle de procmail dans le tri des messages et leur orientation vers les différentes boites aux lettres.
    Relevons cependant que pour diriger les mails d’une autre adresse email dans un répertoire nommé « autrerepertoire », il faut utiliser l’instruction « TO » telle qu’écrite ci-dessus, soit sans espace entre le TO et l’adresse et avec un backslash avant chaque point.
    Il faut aussi bien comprendre que la distribution de chaque message ne se fait qu’une seule fois, à l’instar d’une lettre. Ainsi, un message adressé simultanément à trois boites aux lettres sera posté dans celle correspondant à la première règle vérifiée et pas dans les suivantes.

  3. Pour tester procmail, on utilise le même code que précédemment :
    fetchmail -akv -m "/usr/bin/procmail -d %T
  4. où on a ajouté l’option -a (all) pour rapatrier tous les messages.

  5. Mutt sert à lire et à configurer le courrier. Son fichier de configuration est ~/.muttrc, fichier caché dans le répertoire utilisateur.
    Il contient beaucoup d’informations. J’ai repris pour mon compte le fichier donné dans l’excellent article sur lequel je me suis basé pour installer mon maileur : https://debian-facile.org/doc:reseau:mutt.
    Je l’ai ensuite modifié pour mon adresse mail personnelle et pour que mes mails apparaissent triés par date la plus récente en haut. Pour cela, j’ai changé la directive :
    folder-hook . set sort=threads

    par :

    folder-hook . set sort=reverse-date-received

    Puis, de même pour le répertoire « sent » :

    folder-hook "sent" set sort=reverse-date-received

    Finalement, pour tester mutt, il suffit d’utiliser la commande :

    mutt -y

    dont l’option -y permet de lancer mutt avec la liste des boites mail.

  6. Configuration des mails sortants (SMTP).
    Reste donc à permettre l’envoi des mails. Pour cela, on va utiliser msmtp, dont le fichier de configuration est ~/.msmtprc, fichier caché dans le répertoire utilisateur.
    Il contient les informations suivantes :
    account default
    host serveursortant
    from votreadressemail
    # Consultez la page man pour plus de détails sur les options d'authentification.
    auth login
    user nomdutilisateur
    password votremotdepasse
    # Si votre serveur SMTP supporte le cryptage TLS, décommentez la ligne suivante.
    tls
    tls_certcheck off
    tls_starttls off

    account autrerepertoire : default
    from autre@adresse.mail

    Pour tester, envoyez-vous un mail.
    La dernière partie sert à envoyer un mail pour une autre adresse mais via le serveur SMTP par défaut. Attention, dans mutt, il faut changer l’adresse par défaut du FROM par l’autre adresse.

Voilà, normalement vous devriez pouvoir disposer d’un maileur en mode texte fonctionnel.

Mais il faut lancer successivement fetchmail, procmail et mutt. Pour le faire automatiquement pour les deux premiers, on peut définir un alias dans le fichier de configuration de votre bash : pour moi ~/.zshrc :

alias fetchmail="fetchmail -k -v --ssl -m \"/usr/bin/procmail -d %T\""

et lancer ensuite mutt par : mutt -y.

Migration

Si vous voulez transférer votre système de relevé des mails d’un ordinateur à l’autre, il suffit d’installer les logiciels décrits ci-dessus : fetchmail procmail mutt msmtp, puis de copier leur fichiers de configuration respectifs ~/.fetchmailrc, ~/.procmailrc, ~/.muttrc et ~./msmtprc et enfin de copier le répertoire contenant les messages ~/Mails.

Enfin, n’oubliez pas de replacer votre alias dans ~/.bash_aliases :

alias mails='fetchmail -kv -m "/usr/bin/procmail -d %T" & mutt -y '

Ici l’alias permet de lancer tout automatiquement. Les messages sont alors relevés et il faut appuyer sur enter pour accéder à mutt. On verra dans un autre article comment l’utiliser.

 

1. Pourquoi relever ses mails en ligne de commande

Un moine tibétain de quelque 70 ans s’est dit un jour : «construire des routes, cela je n’avais jamais fait, je ne sais pas faire, j’ai donc décidé de le faire». Il a donc vendu ses terres pour acheter une pelle-mécanique et a construit une route de plusieurs kilomètres pour le bien de sa communauté. Pour celle-ci, le déplacement à cheval est lent et la route permet la civilisation. La civilisation du treck, la civilisation des touristes «qui amènent les déchets plastiques et détruisent les fleurs» selon une occidentale.

La curiosité n’est pas un vilain défaut, la facilité oui. Pendant la construction de sa route, le moine voit un cycliste qui pousse péniblement son vélo dans les cailloux. Il a de la peine pour lui, car «il n’apprend rien, il est juste venu pour faire un voyage». Alors qu’avec sa route, «il y a des voitures qui vont arriver», dit avec bonheur une habitante du bout de celle-ci. Mais pour un autre, la route apportera pollution et maladies … La route ouverte, un autre encore est fière de pouvoir dire qu’elle peut  maintenant vendre aux enfants de petites pelles-mécaniques en plastiques. «Mais le progrès ne s’arrête pas là, des panneaux solaires ont pu être amenés, c’était impensable sans la route» et le moine conclut, «j’ai pu le faire, j’espère que d’autre comprendrons qu’il le peuvent aussi».

Celle qui va tout changer, « Inde du Nord, une route pour Kargyak », France5, documentaire 2017.

Alors pourquoi un maileur en ligne de commande ? Pourquoi un navigateur en ligne de commande ? Pourquoi un navigateur de fichier en ligne de commande ?

Simplement parce que la solution de facilité ne nous apprends rien et que le moine à tort, la pelle-mécanique n’apporte pas le bonheur. Il a tort aussi d’avoir pitié d’un cycliste dont le chemin de croix à travers les rochers est le même que le sien sans l’illusion de ce qu’il va apporter. Mais peut-on lui donner tort de parcourir son propre chemin, celui d’une route dont la vertu civilisatrice ne sera pas celle qu’il attend ?

Envoyer ses mails en ligne de commande, c’est parcourir un chemin sans espoir, pour le seul bonheur d’apprendre que la route est longue, qu’elle est plus longue qu’on le pense et qu’elle est un vrai bonheur.