Console

De Wiki de Geonov
Révision datée du 27 avril 2021 à 10:19 par Mathieu Ambrosy (discussion | contributions)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)

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