Journal Ligne de commande : les 20 mémos d'un « autodidacte »

Posté par  (site web personnel) . Licence CC By‑SA.
44
4
oct.
2018

Depuis avril 2018 j'ai eu l'occasion de publier sur le Grimoire-Command.es les 20 mémos du précédent secrétaire de Gebull (le LUG de Bressuire).

Les sujets abordés sont variés et représentent quelques décennies de lecture de forum et de tâtonnements, scrupuleusement notés et repris en fiches synthétiques.

Comme le reste du grimoire, ce sont des mémos, des penses-bêtes, pour retrouver rapidement une commande que l'on a déjà utilisée ou aperçue. Comme pour les grimoires de jeux de rôle, il faut donc en « apprendre » le contenu, ou au moins avoir regardé ce qu'on peut y trouver. Après, il y a un classement par tags et un moteur de recherche (ça aide quand même).

La mise en page a été grandement facilitée par l'utilisation d'AsciiDoc (AsciiDoctor) et de Pygment comme détaillé sur la page à propos. J'ai enrichi le contenu de nombreux exemples de sortie console, de 15 ans d'expérience personnelle, des commandes déjà citées dans le grimoire et des retours (parfois nombreux aussi) que j'ai eus via Mastodon.

Un mémo d'introduction présente quelques conventions et l'index de ces contenus français (et non en anglais voulu transparent comme le reste du grimoire) un peu hors série du Grimoire-Command.es intermédiaires entre les habituelles commandes courtes et les récits long bilingues plus récents : https://www.grimoire-command.es/2018/memo_0.html

Memo_1 : parcourir les dossiers et lister les fichiers
Memo_2 : gérer les dossiers, bouger les fichiers
Memo_3 : gérer les utilisateurs
Memo_4 : flux de données
Memo_5 : chaînes de caractères et sous-invocation de shells
Memo_6 : Chercher du texte, des fichiers…
Memo_7 : Expression régulières
Memo_8 : Compression / décompression
Memo_9 : Récupération sur le web
Memo_10 : Explorer le matériel
Memo_11 : Liens, date et patches
Memo_12 : sed
Memo_13 : Systèmes de fichier
Memo_14 : Émincer des fichiers texte
Memo_15 : Accès avancés aux fichiers
Memo_16 : APT, Aptitude, Wajig, Dpkg
Memo_17 : Accès internet
Memo_18 : Le chargeur d'armorçage GRUB 2
Memo_19 : Processus
Memo_20 : Noyau - Modules

À part sed, que je n'ai jamais utilisé consciemment, c'était un plaisir de réviser tout ça. De mémoire, je recommande particulièrement le Mémo 8 sur la compression de fichier (j'ai repris les bases dans une grosse introduction), ainsi que le Mémo 10 sur les différents moyen de lister ce que GNU+Linux peut dire du matériel sur lequel il tourne, qui m'a beaucoup appris et dont un bon tiers des 16 commandes présentées a été rajouté au gré des réponses sur Mastodon.

Enfin, je vous invite à jeter un œil au reste du grimoire dont j'ai oublié de fêter le récent 100e contenu ici même :-D (j'en ai encore beaucoup sous le coude…).

PS: Avec le même complice, nous avons traduit une partie de la documentation d'AsciiDoctor (la quick syntax reference) de concert avec l'équipe du projet qui s'est montrée très intéressée par cette première traduction de leur documentation. La pull-request principale a été émise il y a 2 semaines, après 6 mois de travail, hum, et prendra encore un certain temps à être intégrée…. AsciiDoc est un très bon format de "wiki" (léger, complet, lisible), qui pourrait être proposé pour les contenus de LinuxFr.org… (comme le font Github et Gitlab / Framagit).

  • # Memo 1

    Posté par  (site web personnel) . Évalué à 10. Dernière modification le 04 octobre 2018 à 15:33.

    Salut, le site toute entier a l'air d'avoir de très bon contenus, je pense y faire quelques lectures, merci. Seul bémol: je trouve la police utilisée pas très lisible :/

    Pour le memo 1, je conseille l'ajout de pushd/popd qui peut s'avérer utile quand on passe ton temps à se déplacer entre quelques répertoires. En plus ça fonctionne sous Windows, que demande le peuple ?

    • [^] # Re: Memo 1

      Posté par  . Évalué à 3.

      je trouve la police utilisée pas très lisible :/

      Sauf erreur de ma part, c'est OpenDyslexic. Il y a une volonté à l'accessibilité.
      Elle demande un peu d'habitude, sur le web je m'y suis fait.

    • [^] # Re: Memo 1

      Posté par  . Évalué à 3. Dernière modification le 04 octobre 2018 à 17:26.

      je conseille l'ajout de pushd/popd qui peut s'avérer utile quand on passe ton temps à se déplacer entre quelques répertoires

      Ou autojump.

      • [^] # Re: Memo 1

        Posté par  (site web personnel) . Évalué à 5.

        $ type pushd
        pushd est une primitive du shell
        
        • [^] # Re: Memo 1

          Posté par  (site web personnel) . Évalué à 2.

          J'ai donc ajouté 'pushd', 'popd' et 'dirs' dans le mémo 1, merci.

          Moi j'aime bien OpenDyslexia, ça me donne une impression de modernité, ça ressemble un peu aux lettres basques, et puis, étant légèrement dyslexique, j'ai eu envie de faire connaître cette police.

          Après si des études scientifiques en contestent l'intérêt, il ne restera que mes goûts :-p

          La liberté ne s'use, que si on ne s'en sert pas.

          • [^] # Re: Memo 1

            Posté par  (site web personnel) . Évalué à 4.

            Super la réactivité ;). Petite remarque:

            popd permet de retourner au dernier dossier enregistré (un peu comme cd sans argument qui ramène dans le dossier de l’utilisateur).

            En fait l'équivalent serait cd - qui te renvoie dans le dossier précédent.

            Appelé sans argument, pushd déplace l’utilisateur dans le dossier qui se situe au sommet de la pile de dossiers, et ajoute le chemin qui était courant au moment de l’appel de la fonction au sommet de la pile. Ainsi, Appeler pushd sans arguments plusieurs fois de suite permet de basculer entre deux dossiers.

            Ça je ne connaissais pas, merci !

            Moi j'aime bien OpenDyslexia, ça me donne une impression de modernité, ça ressemble un peu aux lettres basques, et puis, étant légèrement dyslexique, j'ai eu envie de faire connaître cette police.

            Très clairement, on a pas du tout le même ressenti. Déjà, j'ai du mal à voir la modernité. Ensuite, cette police m'indispose au plus haut point (je précise que je ne suis pas dyslexique). Un peu comme un livre mal imprimé avec une encre qui a bavé. On dirait du Comic Sans qu'on aurait fait fondre au chalumeau. Ce n'est peut être que moi, mais je ne me vois pas lire plus de quelques lignes avec cette police. J'ai bloqué les polices externes avec uBlock Origin, mais je n'arrive pas encore à avoir une police différente.

            Bon, après ce n'est pas un plaidoyer que tu changes ta police, mais juste faire remarquer que ça peut déranger des gens.

            • [^] # Re: Memo 1

              Posté par  (site web personnel) . Évalué à 4.

              Noté pour cd -.

              Concernant la présentation, j'ai également une demande de choix entre fond sombre et fond clair. Je pourrais ajouter un commutateur pour la police également (et les préférences dans un cookie)… Ça doit pouvoir se faire en quelques lignes de JavaScript, alors ça viendra sûrement.

              La police est peut être installée en local sur ta machine et le navigateur irait alors la chercher là ?

              La liberté ne s'use, que si on ne s'en sert pas.

              • [^] # Re: Memo 1

                Posté par  (site web personnel) . Évalué à 2.

                La police est peut être installée en local sur ta machine et le navigateur irait alors la chercher là ?

                C'était juste un problème de cache. J'ai bloqué les polices externes, effacé le cache, rechargé la page et ça passe. En revanche il y a alors quelques caractères que je ne vois plus, comme les icônes de notes, remplacés par un rectangle avec le point de code unicode correspondant.

          • [^] # Re: Police

            Posté par  (site web personnel) . Évalué à 0.

            En tous cas si je lis vite, il y a des mots que je prends pour autre chose que ce qu'ils sont. Peut-être que l'efficacité dans l'attention et la mémorisation est liée au fait qu'on doit lire plus lentement…

  • # Mémo 7 - Expressions rationnelles

    Posté par  (site web personnel) . Évalué à 3.

    Juste une petite remarque : les "regular expressions" se traduisent en "expressions rationnelles" en bon français….

    • [^] # Re: Mémo 7 - Expressions rationnelles

      Posté par  (site web personnel) . Évalué à 2.

      C'était déjà « corrigé » / complété dans le titre du mémo lui-même, mais j'ai remonté les deux noms dans l'index (malheureusement manuel) du mémo 0. Merci.

      La liberté ne s'use, que si on ne s'en sert pas.

  • # [Memo ] les jobs

    Posté par  (site web personnel) . Évalué à 7.

    AMA, Il manque un bout sur les processus, notamment les travaux: la mise en veille, l'exécution en tâche de fond.

    Mettre le travail en attente:

    david:~> sleep 500

    Appuyez sur [ctrl-z]

    david:~> sleep 500
    [1]  + Interrompu                    sleep 50

    pour obtenir la liste des travaux qui s'exécutent sous votre session:

    david:~>jobs
    [1]    Interrompu                    sleep 500

    Continuer l’exécution:

    fg

    ou, continuer en tâche de fond:

    david:~> bg
    [1]    sleep 500 &
    david:~>jobs
    [1]    Tourne                        sleep 500

    Notez le & qui indique que le processus s'exécute en fond, démarrer le directement en fond de la même manière:

    david:~> sleep 500&
    [3] 3687
    david:~> jobs -l
    [1]  +  3641 Tourne                        sleep 500
    [2]     3674 Tourne                        sleep 500
    [3]  -  3687 Tourne                        sleep 500

    le numéro indique le numéro qui identifie le processus. Vous pouvez aussi utiliser directement le numéro des travaux (celui entre crochets) précédé de %
    avec kill par exemple

    david:~>kill -STOP %2
    [2]  + Interrompu (Signal)           sleep 500
    david:~>kill -TERM %2
    david:~>jobs -l
    [2]     3674 Terminé                      sleep 500
    [3]  +  3687 Tourne                        sleep 500

    Car en fait, tout ça n'est en fait que de l'envoi de signal aux processus.

    Laisser ces travaux se terminer même après la fermeture de session ?

    Utilisez disown:

    [david@llanura ~]$ sleep 1001 &
    [1] 3919
    [david@llanura ~]$ disown

    Vous pouvez fermer votre session.

    Ou nohup, pour:

    1. le faire directement ;
    2. rediriger la sortie vers le fichier nohup.out .
    nohup sleep 500&

    les raccourcis

    pgrep et pkill pour éviter les tubes entre ps et grep. Avec notamment l'affichage par ordre de lancement de pgrep -o dont je causais sur Mastodon il y a peu de temps.

    biblio

    voir aussi la série des

  • # Ligne de commande : les 20 mémos d'un « autodidacte »

    Posté par  . Évalué à 1.

    Merci pour le tutoriel, que j'ai ajouté dans la bibliographie de ma page wiki.

    https://www.visionduweb.eu/wiki/index.php?title=Utiliser_des_commandes_shell_avec_le_terminal

    Petite question, j'ai vu l'aide mémoire sur la syntaxe Wiki :
    AltGr(+Maj)+a æ

    Étrange, mais, avec mon ordinateur portable, sous Mint, j'obtiens ä au lieu de æ.
    J'ai toujours eu du mal a obtenir les caractères spéciaux, avec les raccourcis clavier, sur portable, quelque soit la machine ou le système utilisé, de Asus, à Toshiba ou Alienware, avec Windows, Debian, ou Mint.

    • [^] # Re: Ligne de commande : les 20 mémos d'un « autodidacte »

      Posté par  (site web personnel) . Évalué à 3. Dernière modification le 07 octobre 2018 à 10:06.

      Il y a plusieurs variantes du clavier fr (par exemple sous GNOME j'ai le choix, parmi d'autres, entre Français fr1 et Français (variante) fr2). À noter aussi que la gestion du clavier en console est différente de celle sous X.

      • [^] # Re: Ligne de commande : les 20 mémos d'un « autodidacte »

        Posté par  (site web personnel) . Évalué à 1.

        À noter aussi que la gestion du clavier en console est différente de celle sous X.

        A ce propos, vous arriver à obtenir ce genre de chose dans un tty ?
        - vu que ces derniers sont très éloignés aujourd'hui du /télétype/ d'origine. -

        • [^] # Re: Ligne de commande : les 20 mémos d'un « autodidacte »

          Posté par  (site web personnel) . Évalué à 3. Dernière modification le 07 octobre 2018 à 13:08.

          Actuellemnent j'ai â et € sur AltGr+a et +e en console. Le réglage se fait via /etc/default/console-setup et /etc/default/keyboard sur la famille Debian (je n'en ai pas sous la main pour tester mais je pronostique /etc/sysconfig/console-setup et /etc/sysconfig/keyboard sur la famille RedHat)

          Paquets :

          ii  console-common        0.7.90       all          basic infrastructure for text console configuration
          ii  console-data          2:1.12-6     all          keymaps, fonts, charset maps, fallback tables for 'kbd'.
          ii  console-setup         1.186        all          console font and keymap setup program
          ii  console-setup-linux   1.186        all          Linux specific part of console-setup
          
  • # CDPATH

    Posté par  . Évalué à 6. Dernière modification le 07 octobre 2018 à 21:43.

    Salut, j'étais déjà tombé sur ce site par le passé, merci de me rappeler son existence !
    J'en profite pour partager un truc :

    La variable CDPATH, comme le PATH des binaires, permet d'avoir une liste de dossiers accessibles en permanence, sans avoir a taper le chemin complet/relatif. Un exemple sera plus clair :
    ici le dossier ~/projets contient les dossier web et rust

    $ mkdir void && cd void
    $ cd web # ne marche pas
    $ export CDPATH=~/projets:/autre/dossier:/et/cetera
    $ cd web
    # on est maintenant dans le dossier ~/projets/web
    

    C'est dans le standard POSIX

    • [^] # Re: CDPATH

      Posté par  (site web personnel) . Évalué à 1. Dernière modification le 08 octobre 2018 à 00:57.

      Merci, je ne connaissais pas.
      C'est en ligne (Memo_1).

      La liberté ne s'use, que si on ne s'en sert pas.

  • # Bien !

    Posté par  (site web personnel) . Évalué à 3.

    Formidable ressource en français ! Je vais donner le lien à mon fils, qui veut apprendre le shell.

    Une remarque cependant : Sur le mémo 17, il est plus que temps de délaisser les commandes obsolètes telles ifconfig pour utiliser ip à la place. Dans la même veine, sftp pourrait être mis en avant, et ftp relégué à une solution de dernier recours.

    Après, des petits mémo orientés systemd seraient pas mal, mais ce n’est pas une critique : vous avez déjà fait une super liste et il est évident que vous y avez passé du temps ; si d’autres infos sont souhaitées, il suffit de participer ;-)

    • [^] # Re: Bien !

      Posté par  (site web personnel) . Évalué à 1.

      J'ai ajouté la mention d'ip et une partie sur ssh pour être un peu plus à jour en effet.

      La liberté ne s'use, que si on ne s'en sert pas.

  • # lsblk pour le mémo 10

    Posté par  . Évalué à 2.

    J'aurais bien ajouté lsblk pour le mémo 10. Je m'en sert assez souvent.

    Ça donne par exemple :

    ▶ lsblk
    NAME                  MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
    zram0                 253:0    0 963,2M  0 disk  [SWAP]
    nvme0n1               259:0    0 238,5G  0 disk  
    ├─nvme0n1p1           259:1    0   512M  0 part  /boot
    ├─nvme0n1p2           259:2    0   9,5G  0 part  [SWAP]
    └─nvme0n1p3           259:3    0 228,5G  0 part  
      ├─VolNvme1-lvolroot 254:0    0    56G  0 lvm   /
      ├─VolNvme1-lvolhome 254:1    0    80G  0 lvm   /home
      └─VolNvme1-crypt    254:2    0    80G  0 lvm   
        └─_dev_dm_2       254:3    0    80G  0 crypt /homecrypt
    
  • # commande eg

    Posté par  . Évalué à 2.

    Faut rassembler tout ton savoir dans un dépôt git utilisable par eg : https://github.com/srsudar/eg

  • # sed

    Posté par  (site web personnel) . Évalué à 1.

    À propos de sed, je te conseille l'option -i qui peut prendre un suffixe optionnel. Ainsi, sed -i MOTIF fichier va remplacer le contenu du fichier en appliquant les transformations et sed -i.bak MOTIF fichier fera de même en conservant le fichier d'origine dans fichier.bak

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.