Différences entre les versions de « Console »

De Wiki de Geonov
 
(13 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
= Connaitre les ports ouverts =
= Flux de redirection =
<syntaxhighlight lang="bash" gutter="false" toolbar="false">netstat -antup</syntaxhighlight>


= Rechercher dans les fichiers =
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 :
<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 11 : Ligne 35 :
<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 et remplacer dans les fichiers =
== Rechercher dans un fichier compressé ==
On ajoute "-l" à la commande "grep" pour ne sortir que les noms des fichiers trouvés puis on fait le remplacement.


Sensible à la casse (g):
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>
<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) :
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>
<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