Différences entre les versions de « Console »
(17 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
= Flux de redirection = | |||
Les commandes renvoient leurs messages sur deux sorties différentes : | |||
* la sortie standard : tous les messages sauf les erreurs. | |||
* la sortie des erreurs : toutes les erreurs. | |||
= Recherche dans les fichiers = | Dans la console, ces deux sorties sont renvoyées par défaut à l'écran. | ||
Mais si l'on souhaite rediriger les sorties vers un fichier texte, il faut prendre en compte ces deux sorties distinctes : | |||
* > info.log : écrase "info.log" avec la sortie standard | |||
* >> info.log : ajoute la sortie standard dans "info.log" | |||
* 2> erreur.log : écrase "erreur.log" avec la sortie des erreurs | |||
* 2>> erreur.log : ajoute la sortie des erreurs dans "erreur.log" | |||
Il est possible de combiner les deux : | |||
<syntaxhighlight lang="bash" gutter="false" toolbar="false"> | |||
commande > info.log 2> erreur.log | |||
commande >> info.log 2>> erreur.log | |||
</syntaxhighlight> | |||
Pour rediriger la sortie des erreurs vers le même fichier que celui de la sortie standard, on utilise "2>&1" (littéralement "envoyer la sortie 2 dans celle définie pour la sortie 1") : | |||
<syntaxhighlight lang="bash" gutter="false" toolbar="false"> | |||
commande > info.log 2>&1 | |||
commande >> info.log 2>&1 | |||
</syntaxhighlight> | |||
= Recherche = | |||
== Rechercher dans les fichiers == | |||
Pour rechercher un texte dans tous les sous-répertoires : | Pour rechercher un texte dans tous les sous-répertoires : | ||
<syntaxhighlight lang="bash" gutter="false" toolbar="false">grep -r 'texte' ./**/*</syntaxhighlight> | <syntaxhighlight lang="bash" gutter="false" toolbar="false">grep -r 'texte' ./**/*</syntaxhighlight> | ||
Ligne 12 : | Ligne 34 : | ||
Pour rechercher un texte dans des fichiers en particulier : | Pour rechercher un texte dans des fichiers en particulier : | ||
<syntaxhighlight lang="bash" gutter="false" toolbar="false">grep -r 'texte' ./**/*.log</syntaxhighlight> | <syntaxhighlight lang="bash" gutter="false" toolbar="false">grep -r 'texte' ./**/*.log</syntaxhighlight> | ||
== Rechercher dans un fichier compressé == | |||
La commande 'zgrep' permet de rechercher un texte directement dans un fichier compressé. | |||
<syntaxhighlight lang="bash" gutter="false" toolbar="false">zgrep -v "geonov" fichier.txt.gz</syntaxhighlight> | |||
=== Paramètres === | |||
* -c : renvoie le nombre d’occurrences trouvées | |||
* -i : ignore la casse | |||
* -n : spécifie le numéro de la ligne trouvée | |||
* -v : recherche inversée | |||
* -l : cherche dans le nom des fichiers au lieu de leur contenu | |||
== Rechercher et remplacer dans les fichiers == | |||
On ajoute "-l" à la commande "grep" pour ne sortir que les noms des fichiers trouvés puis on fait le remplacement avec "sed". | |||
Sensible à la casse (g) : | |||
<syntaxhighlight lang="bash" gutter="false" toolbar="false">grep -rnw '.' -e 'Texte' -l | xargs sed -i 's/Texte/NouveauTexte/g'</syntaxhighlight> | |||
Non sensible à la casse (gI) : | |||
<syntaxhighlight lang="bash" gutter="false" toolbar="false">grep -rnw '.' -e 'Texte' -l | xargs sed -i 's/Texte/NouveauTexte/gI'</syntaxhighlight> | |||
= Réseau = | |||
== Connaitre les ports ouverts == | |||
<syntaxhighlight lang="bash" gutter="false" toolbar="false"> | |||
sudo apt-get install net-tools | |||
sudo netstat -alntup | |||
sudo netstat -alntup | egrep ':88|:464|:749' | |||
</syntaxhighlight> | |||
= Date et heure = | |||
== Attendre jusqu'à une date précise == | |||
Il faut calculer la différence de temps en secondes entre maintenant et la date souhaitée, par exemple demain à 3H, et la fournir à la commande "sleep" : | |||
<syntaxhighlight lang="bash" gutter="false" toolbar="false"> | |||
now=$(date +%s) | |||
tomorrow=$(date -d 'tomorrow 03:00' +%s) | |||
diff=$(( $tomorrow - $now )) | |||
sleep $diff | |||
</syntaxhighlight> | |||
= Système = | |||
== Voir les erreurs système == | |||
<syntaxhighlight lang="bash" gutter="false" toolbar="false"> | |||
sudo journalctl -xe | |||
</syntaxhighlight> | |||
= Fichiers et répertoires = | |||
== Connaitre la taille d'un répertoire == | |||
<syntaxhighlight lang="bash" gutter="false" toolbar="false">du -sh /repertoire</syntaxhighlight> | |||
== Trouver les plus gros fichiers == | |||
<syntaxhighlight lang="bash" gutter="false" toolbar="false">du -a /repertoire/ | sort -n -r | head -n 20</syntaxhighlight> | |||
== Visualiser la fin d'un fichier en temps réel == | |||
Idéal pour visualiser un fichier de log : | |||
<syntaxhighlight lang="bash" gutter="false" toolbar="false">tail -f fichier</syntaxhighlight> | |||
== Compter le nombre de fichiers == | |||
<syntaxhighlight lang="bash" gutter="false" toolbar="false"> | |||
ls | wc -l | |||
</syntaxhighlight> | |||
= Automatisation = | |||
== Expect == | |||
Le programme "expect" permet de répondre automatiquement à des questions posées par des programmes exécutés depuis la console. | |||
<syntaxhighlight lang="bash" gutter="false" toolbar="false"> | |||
sudo apt-get install expect | |||
autoexpect programme | |||
</syntaxhighlight> | |||
Répondre aux questions, un fichier "script.exp" sera alors créé et permettra de rejouer le programme de façon automatique : | |||
<syntaxhighlight lang="bash" gutter="false" toolbar="false"> | |||
expect script.exp | |||
</syntaxhighlight> | |||
[[Catégorie:GNU/Linux]] | [[Catégorie:GNU/Linux]] |
Version actuelle datée du 27 avril 2021 à 09:19
1 Flux de redirection
Les commandes renvoient leurs messages sur deux sorties différentes :
- la sortie standard : tous les messages sauf les erreurs.
- la sortie des erreurs : toutes les erreurs.
Dans la console, ces deux sorties sont renvoyées par défaut à l'écran. Mais si l'on souhaite rediriger les sorties vers un fichier texte, il faut prendre en compte ces deux sorties distinctes :
- > info.log : écrase "info.log" avec la sortie standard
- >> info.log : ajoute la sortie standard dans "info.log"
- 2> erreur.log : écrase "erreur.log" avec la sortie des erreurs
- 2>> erreur.log : ajoute la sortie des erreurs dans "erreur.log"
Il est possible de combiner les deux :
commande > info.log 2> erreur.log
commande >> info.log 2>> erreur.log
Pour rediriger la sortie des erreurs vers le même fichier que celui de la sortie standard, on utilise "2>&1" (littéralement "envoyer la sortie 2 dans celle définie pour la sortie 1") :
commande > info.log 2>&1
commande >> info.log 2>&1
2 Recherche
2.1 Rechercher dans les fichiers
Pour rechercher un texte dans tous les sous-répertoires :
grep -r 'texte' ./**/*
ou encore :
grep -rnw 'répertoire' -e 'texte'
Pour rechercher un texte dans des fichiers en particulier :
grep -r 'texte' ./**/*.log
2.2 Rechercher dans un fichier compressé
La commande 'zgrep' permet de rechercher un texte directement dans un fichier compressé.
zgrep -v "geonov" fichier.txt.gz
2.2.1 Paramètres
- -c : renvoie le nombre d’occurrences trouvées
- -i : ignore la casse
- -n : spécifie le numéro de la ligne trouvée
- -v : recherche inversée
- -l : cherche dans le nom des fichiers au lieu de leur contenu
2.3 Rechercher et remplacer dans les fichiers
On ajoute "-l" à la commande "grep" pour ne sortir que les noms des fichiers trouvés puis on fait le remplacement avec "sed".
Sensible à la casse (g) :
grep -rnw '.' -e 'Texte' -l | xargs sed -i 's/Texte/NouveauTexte/g'
Non sensible à la casse (gI) :
grep -rnw '.' -e 'Texte' -l | xargs sed -i 's/Texte/NouveauTexte/gI'
3 Réseau
3.1 Connaitre les ports ouverts
sudo apt-get install net-tools
sudo netstat -alntup
sudo netstat -alntup | egrep ':88|:464|:749'
4 Date et heure
4.1 Attendre jusqu'à une date précise
Il faut calculer la différence de temps en secondes entre maintenant et la date souhaitée, par exemple demain à 3H, et la fournir à la commande "sleep" :
now=$(date +%s)
tomorrow=$(date -d 'tomorrow 03:00' +%s)
diff=$(( $tomorrow - $now ))
sleep $diff
5 Système
5.1 Voir les erreurs système
sudo journalctl -xe
6 Fichiers et répertoires
6.1 Connaitre la taille d'un répertoire
du -sh /repertoire
6.2 Trouver les plus gros fichiers
du -a /repertoire/ | sort -n -r | head -n 20
6.3 Visualiser la fin d'un fichier en temps réel
Idéal pour visualiser un fichier de log :
tail -f fichier
6.4 Compter le nombre de fichiers
ls | wc -l
7 Automatisation
7.1 Expect
Le programme "expect" permet de répondre automatiquement à des questions posées par des programmes exécutés depuis la console.
sudo apt-get install expect
autoexpect programme
Répondre aux questions, un fichier "script.exp" sera alors créé et permettra de rejouer le programme de façon automatique :
expect script.exp