Utilisateur:Robin Millette/Intro à la ligne de commande

De Wiki FACiLe
< Utilisateur:Robin Millette
Révision datée du 20 juillet 2015 à 04:20 par Robin Millette (discussion | contributions) (Combiner des commandes)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à la navigation Aller à la recherche

Avant les logiciels, il y avait les librairies[modifier | modifier le wikicode]

Readline, etc.

Longue lignée[modifier | modifier le wikicode]

intefaces readline à la vim ou emacs

Choisir un terminal (si on est dans X)[modifier | modifier le wikicode]

Choisir un shell[modifier | modifier le wikicode]

Bash, zsh, etc.

Trucs Bash/readline[modifier | modifier le wikicode]

TAB pour compléter les noms de commandes et fichiers

Installer le paquet bash-completion ou équivalent sur votre distro pour compléter aussi les options

CTRL-R pour chercher dans l'historique (ex. CTRL-R cd CTRL-R va trouver la commande précédente qui inclut la chaine "cd" et puis celle qui la précère (2e CTRL-R).

Historique des commandes[modifier | modifier le wikicode]

Chez moi, je configure l'historique pour retenir les 10,000 dernières commandes passées et j'ai très souvent recourt à CTRL-R pour entrer des longues commandes rapidement.

Flèches haut, bas pour l'historique très récent (préférer CTRL-R autrement, pour l'habitude)

! pour sauter à la ennième commande de l'historique[modifier | modifier le wikicode]

Configuration des fichiers d'initialisation du shell[modifier | modifier le wikicode]

.profile, .bash_rc, etc.

Entrée et sortie standards[modifier | modifier le wikicode]

  • redirection
  • pipe
  • enregistrement (screencast)
  • transformer son filesystem en client irc avec ii

Types de commandes CLI[modifier | modifier le wikicode]

Interne (à bash) ou externe (qu'on trouve dans un fichier sur le disque)[modifier | modifier le wikicode]

Chaque shell (bash) a ses commandes internes. Dans bash, on peut taper "help" pour les voir. cd par exemple est une fonction interne et de plus, elle ne pourrait être implémenter de façon externe puisqu'elle est intimmenent lié au shell courant (on change le chemin du shell courant, ni plus ni moins).

Certains commandes, comme test et echo, existent à la fois dans le shell et sur le disque, et peuvent comporter des options différentes.

  • Faites echo --help dans bash, ça va écrite "--help". Bon.
  • Maintenant faisont which echo pour connaitre le chemin du premier exécutable trouver (selon $PATH) et puis voyons la différence. Sur mon ordi (et en général), /bin/echo --help et maintenant, nous obtenons l'aide de la commande externe. Pour l'aide sur la commande interne echo, help echo.

Types d'interfaces[modifier | modifier le wikicode]

  • pseudo graphique genre ncurses
  • commande -> réponse, genre ls
  • commande et sous-commandes, genre git
  • caca (conversion graphique -> ascii couleur, avec vlc à la console ou hasciicam par exemple)

Commandes CLI de base[modifier | modifier le wikicode]

Commandes CLI pour filtrer (les pipes)[modifier | modifier le wikicode]

Commandes CLI pour des équivalents GUI[modifier | modifier le wikicode]

sc pour un spreadsheet, w3m pour un fureteur, mutt pour l'email, etc.

Lancer des commandes GUI[modifier | modifier le wikicode]

S'orienter[modifier | modifier le wikicode]

Changer de répertoire[modifier | modifier le wikicode]

  • cd pour changer de répertoire
  • cd - pour revenir au répertoire précédent
  • cd .. pour aller au répertoire parent
  • wcd (ou autre) pour aller rapidement à un répertoire sans connaitre ou taper le nom complet
  • chemins relatifs et absolus

Liens symboliques[modifier | modifier le wikicode]

Relatifs, absolus, physiques, logiques...

Le prompt[modifier | modifier le wikicode]

Ce qui précède le $ avant de taper une commande.

Comment l'ajuster.

Trouver des fichiers[modifier | modifier le wikicode]

  • ls énumère les fichiers; ls -R le fait récursivement (peut être long); ls */allo trouve les fichiers allo de tous les sous-répertoires directs; ls */*/allo trouve allo dans les sous-sous-répertoires.
  • (m)locate trouve instantannément le chemin absolu d'un fichier, basée sur une db mise à jour tous les matins (cron)
  • find parcours les disques pour trouver un fichier et lui faire quelque chose (plus long, selon la taille des disques)

Combiner des commandes[modifier | modifier le wikicode]

  • # indique un commentaire, jusqu'à la fin de la ligne
  • cp a b & # copie un gros fichier a dans b et retourner au prompt sans attendre la fin de l'exécution; taper jobs pour voir le processus de copie; taper fg pour ramener le processus de copie en foreground; faites CTRL-z pour suspendre la copie puis bg pour la repartir en background (comme si on l'avait lancée avec & comme initialement).
  • cp a b && echo réussi # copie a dans b et seulement si la commande réussi (retourne 0), écrit "réussi"
  • cp a b || echo échec # copie a dans b et seulement si la commande échoue (retourne autre que 0), écrit "échec".

Notes que ce ne sont pas toutes les commandes qui retourne 0 ou autre chose en cas d'erreur ou de succès.

scripts shell[modifier | modifier le wikicode]

On peut combiner un ensemble de commandes dans un script, pour facilement exécuter notre petit programme.


Que d'options![modifier | modifier le wikicode]

Chaque commande peut prendre une multitude d'options. man pour le manuel, parfois info et aussi COMMANDE --help.


Jeux et jouets[modifier | modifier le wikicode]

  • sl au lieu de ls
  • 2048 en lettres
  • bsd games

ssh et les serveurs distants[modifier | modifier le wikicode]

aux vidanges les mots de passe, on utilisera des clés privés/publiques et un passphrase[modifier | modifier le wikicode]

voir ssh-agent pour éviter de taper son passphrase tout le temps

Utiliser ssh -A si vous controler le serveur distant et que vous voulez faire un ssh à partir de ce serveur sans retapper votre passphrase.

configurer le client ssh[modifier | modifier le wikicode]

screen et tmux[modifier | modifier le wikicode]

Plusieurs sur la même console, etc.

Commandes d'administration de systême, indépendants de la distro[modifier | modifier le wikicode]

Commandes d'administration de systême, selon la distro[modifier | modifier le wikicode]

Gestions des tâches[modifier | modifier le wikicode]

  • CTRL-z pour suspendre une commande et obtenir le prompt, bg pour la redémarrer en background ou fg pour la redémarrer en foreground. CTRL-c pour interrompre la commande. CTRL-s pour suspendre et CTRL-Q pour reprendre.
  • nice, ionice, renice
  • htop et le vénérable top pour voir les processus en cours