« Linux » : différence entre les versions
Aucun résumé des modifications |
Aucun résumé des modifications |
||
Ligne 105 : | Ligne 105 : | ||
Lorsque je lance une commande, celle-ci lance un processus qui lui même possède un flux de données avec plusieurs entrées/sorties: | Lorsque je lance une commande, celle-ci lance un processus qui lui même possède un flux de données avec plusieurs entrées/sorties: | ||
*La sortie standard (stdout) : redirige par défaut vers l'écran, c'est ce qui se passe quand tout va bien | *La sortie standard (stdout) : redirige par défaut vers l'écran, c'est ce qui se passe quand tout va bien | ||
*La sortie d'erreur (stderr) : ce sont tous les messages d'erreur, par défaut elle redirige aussi vers l'écran | *La sortie d'erreur (stderr) : ce sont tous les messages d'erreur, par défaut elle redirige aussi vers l'écran | ||
*L'entrée standard (stdin) : Le processus lit les données entrées par l'utilisateur (par le clavier) | *L'entrée standard (stdin) : Le processus lit les données entrées par l'utilisateur (par le clavier) | ||
Le but d'une redirection est de rediriger ces flux. | Le but d'une redirection est de rediriger ces flux. | ||
Ligne 114 : | Ligne 114 : | ||
*Rediriger stdout vers un fichier avec ">": Si par exemple je veux faire la liste des fichiers de log de mon système et en faire une copie dans un fichier texte, je peux utiliser <code>ls -l /var/log > liste-log.txt. </code>Rien ne s'affiche à l'écran et un fichier est bel et bien créé à l'endroit où j'ai rentré la commande. Attention, si un autre fichier liste-log.txt existait déjà, il aurait été écrasé! | *Rediriger stdout vers un fichier avec ">": Si par exemple je veux faire la liste des fichiers de log de mon système et en faire une copie dans un fichier texte, je peux utiliser <code>ls -l /var/log > liste-log.txt. </code>Rien ne s'affiche à l'écran et un fichier est bel et bien créé à l'endroit où j'ai rentré la commande. Attention, si un autre fichier liste-log.txt existait déjà, il aurait été écrasé! | ||
*Rediriger une commande (stdout) à la fin d'un fichier avec ">>" : Le principe est le même, sauf que le texte est redirigé par concaténation à la fin d'un fichier. Ainsi si le fichier existe déjà, il ne sera pas supprimé mais recevra simplement les nouvelles informations à la fin de celui-ci. | *Rediriger une commande (stdout) à la fin d'un fichier avec ">>" : Le principe est le même, sauf que le texte est redirigé par concaténation à la fin d'un fichier. Ainsi si le fichier existe déjà, il ne sera pas supprimé mais recevra simplement les nouvelles informations à la fin de celui-ci. | ||
*Rediriger les erreurs (stderr) avec "2>" ou "2>>" : le principe est le même que le simple/double chevron sauf que cette fois on ne redirige le flux d'erreurs, au lieu de la sortie standard. | *Rediriger les erreurs (stderr) avec "2>" ou "2>>" : le principe est le même que le simple/double chevron sauf que cette fois on ne redirige le flux d'erreurs, au lieu de la sortie standard. | ||
*Rediriger les données venant d'un fichier vers une commande avec "<" (on redirige vers stdin): Au lieu d'utiliser le clavier comme entrée, on va utiliser un fichier. Par exemple, si je l'utilise avec cat pour lire un fichier, je peux faire un <code>cat < fichier.txt. Le résultat est le même qu'un cat fichier.txt, mais le processus est différent.</code> | *Rediriger les données venant d'un fichier vers une commande avec "<" (on redirige vers stdin): Au lieu d'utiliser le clavier comme entrée, on va utiliser un fichier. Par exemple, si je l'utilise avec cat pour lire un fichier, je peux faire un <code>cat < fichier.txt. Le résultat est le même qu'un cat fichier.txt, mais le processus est différent.</code> | ||
== Les pipes == | |||
Les pipes permettent d'enchaîner des commandes, en branchant la sortie d'une commande sur l'entrée d'une autre commande. La syntaxe générique est la suivante: | |||
<code>commande1 | commande2</code> | |||
Un exemple : la commande du permet d'afficher la taille des fichiers et dossiers en octets, et la commande sort -nr permet de trier , avec -n pour les valeurs numériques et -r pour afficher les résultats inversés, c'est-à-dire du plus grand au plus petit: | |||
<code>du | sort -nr</code> | |||
S'affichent alors à l'écran mes dossiers et fichiers triées du plus grand au plus petit, avec leur taille en octets. On pourrait aussi ajouter une troisième commande, less, pour lire les résultats page par page. | |||
On peut également combiner les redirections et les pipes: | |||
<code>du | sort -nr >> monfichier.txt</code> | |||
| |||
| |
Version du 31 octobre 2018 à 15:06
Console/Shell :
Une commande rentrée passe par Console >; Shell >; kernel.
On a différents shells: Bourne shell sh, Bourne Again shell bash, C shell csh, Korn shell ksh…
La console est une IHM, le shell un interpréteur de commandes qui parle au kernel.
halt now est devenu halt -p. halt, poweroff sont des raccourcis de la commande shutdown. Exemple de reboot : shutdown -r now
mkdir -p #permet de créer des dossiers récursifs. mkdir -p /var/coucou/salut #En chemin absolu mkdir -p coucou/salut/ #Chemin relatif cp /var/log/syslog . #Va copier syslog dans mon répertoire courant, vive le point cp -r /var/log /home/justine/ #Copie le dossier log vers mon home (le dossier complet, pas juste le #contenu)
mv fichier /dossier/ #Déplace fichier dans dossier ; pas besoin de mv fichier /dossier/fichier
Commande cat:
cat fichier1 fichier2 #Affiche le contenu des deux fichiers à la suite.
Commande find:
Les arguments d’action : -print (affiche le NOM) -delete -exec -name (faire une recherche dans le nom du fichier)
find / coucou -print #Cherche le fichier coucou dans / et l’affiche find / -name password* -print #rechercher les fichiers dont le nom commence par password dans / #et afficher leur chemin find / -size 15M #Rechercher des fichiers de de 15 mégaoctets ; k pour kilo M pour méga G #pour giga find / -type f -exec cat {}\ ; #Exécute cat sur le résultat #Ici je cherche dans / un fichier (‘-type f’, je peux faire ‘-type d’ pour un dossier) puis j’éxecute (-exec) la commande cat sur la trouvaille {} et je finis ma liste de commande avec \ ;
{} signifie « ce que j’ai trouvé », apparement un find -exec finit toujours par \ ;
Je peux y rajouter du -name , du -print, etc
Configuration d'interfaces
Les noms d'interfaces sont désormais déterminés en fonction de la configuration matérielle:
<type d'interface><numéro du bus><numéro du slot> <en>p(pour la carte PCI)<0><3> soit enp0s3
Sur Ubuntu
Sur Ubuntu Desktop, ce n’est pas /etc/network/interfaces qui est utilisé mais /etc/netplan: le fichier à modifier a l'extension .yaml
!!! Dans ce fichier, il ne faut pas utiliser de tabulations et bien positionner ses espaces !
Exemple en ip fixe :
network: version: 2 renderer: networkd ethernets: enp3s0: addresses: - 10.10.10.2/24 gateway4: 10.10.10.1 nameservers: search: [mydomain, otherdomain] addresses: [10.10.10.1, 1.1.1.1]
Et pour appliquer les changements:
sudo netplan apply #(on peut ajouter un –debug en cas de problèmes)
!!! Même resolv.conf n’est plus utilisé : c’est systemd-resolve qui s’occupe de resolver les adresses. Plus d'informations sur les serveurs DNS avec la commande :
systemd-resolve –status
Les redirections
Lorsque je lance une commande, celle-ci lance un processus qui lui même possède un flux de données avec plusieurs entrées/sorties:
- La sortie standard (stdout) : redirige par défaut vers l'écran, c'est ce qui se passe quand tout va bien
- La sortie d'erreur (stderr) : ce sont tous les messages d'erreur, par défaut elle redirige aussi vers l'écran
- L'entrée standard (stdin) : Le processus lit les données entrées par l'utilisateur (par le clavier)
Le but d'une redirection est de rediriger ces flux.
En pratique
- Rediriger stdout vers un fichier avec ">": Si par exemple je veux faire la liste des fichiers de log de mon système et en faire une copie dans un fichier texte, je peux utiliser
ls -l /var/log > liste-log.txt.
Rien ne s'affiche à l'écran et un fichier est bel et bien créé à l'endroit où j'ai rentré la commande. Attention, si un autre fichier liste-log.txt existait déjà, il aurait été écrasé! - Rediriger une commande (stdout) à la fin d'un fichier avec ">>" : Le principe est le même, sauf que le texte est redirigé par concaténation à la fin d'un fichier. Ainsi si le fichier existe déjà, il ne sera pas supprimé mais recevra simplement les nouvelles informations à la fin de celui-ci.
- Rediriger les erreurs (stderr) avec "2>" ou "2>>" : le principe est le même que le simple/double chevron sauf que cette fois on ne redirige le flux d'erreurs, au lieu de la sortie standard.
- Rediriger les données venant d'un fichier vers une commande avec "<" (on redirige vers stdin): Au lieu d'utiliser le clavier comme entrée, on va utiliser un fichier. Par exemple, si je l'utilise avec cat pour lire un fichier, je peux faire un
cat < fichier.txt. Le résultat est le même qu'un cat fichier.txt, mais le processus est différent.
Les pipes
Les pipes permettent d'enchaîner des commandes, en branchant la sortie d'une commande sur l'entrée d'une autre commande. La syntaxe générique est la suivante:
commande1 | commande2
Un exemple : la commande du permet d'afficher la taille des fichiers et dossiers en octets, et la commande sort -nr permet de trier , avec -n pour les valeurs numériques et -r pour afficher les résultats inversés, c'est-à-dire du plus grand au plus petit:
du | sort -nr
S'affichent alors à l'écran mes dossiers et fichiers triées du plus grand au plus petit, avec leur taille en octets. On pourrait aussi ajouter une troisième commande, less, pour lire les résultats page par page.
On peut également combiner les redirections et les pipes:
du | sort -nr >> monfichier.txt