Gestion des Fichiers et Traitement du Texte sous Linux : Transferts, Redirections et Dates

  1. Transfert de Fichiers

Transfert Ascendant (Upload) avec lrzsz

L'outil lrzsz facilite les transferts de fichiers interactifs depuis et vers un serveur Linux, particulièrement utile dans les terminaux supportant Xmodem/Ymodem/Zmodem (comme Xshell).

# Pour envoyer un fichier local vers le serveur
rz

# Si le fichier existe déjà sur le serveur, utilisez -E pour le renommer automatiquement
rz -E

Le système ajoutera un suffixe numérique (par exemple, .0, .1) au nom du fichier pour éviter les conflits.

Téléchargement de Fichiers depuis le Web

Utilisation de wget

wget est un utilitaire en ligne de commande dédié au téléchargement de fichiers depuis le web (HTTP, HTTPS, FTP).

# Télécharger un fichier vers un chemin spécifique
wget -O /chemin/local/vers/fichier.zip https://example.com/archive.zip

# Si une erreur SSL survient, désactiver la vérification du certificat
wget --no-check-certificate -O /chemin/local/vers/fichier.tar.gz https://insecure.example.com/package.tar.gz

Pour installer wget si ce n'est pas déjà fait :

sudo yum install wget
# Ou sur d'autres distributions : sudo apt install wget

Utilisation de curl

curl est un outil puissant pour transférer des données avec une syntaxe d'URL, capable de gérer divers protocoles. Il peut également être utilisé pour le téléchargement.

# Télécharger un fichier et le sauvegarder sous un nom spécifique
curl -o monimage.png https://www.example.com/img/illustration.png

# Pour ignorer la vérification du certificat SSL en cas de problème
curl -k -o monfichier.pdf https://insecure.example.com/document.pdf

Téléchargement Descendant (Download) avec lrzsz

Pour transférer des fichiers depuis le serveur vers votre machine locale en utilisant lrzsz :

# Télécharger le fichier bak.tar.gz depuis le serveur
sz bak.tar.gz

Remarques sur lrzsz :

  • Nécessite une installation : sudo yum install lrzsz -y
  • Fonctionne mieux avec des outils de terminal graphiques comme Xshell.
  • Limitations : Ne prend en charge qu'un seul fichier à la fois, peut être instable pour de très gros fichiers ou des fichiers vides.
  1. Sorties et Redirections

Concepts d'Entrée/Sortie Standard

Dans un environnement Unix/Linux, les programmes interagissent avec des flux d'entrée/sortie standard :

  • Entrée standard (stdin) : Généralement le clavier, descripteur de fichier 0.
  • Sortie standard (stdout) : Généralement l'écran, descripteur de fichier 1.
  • Erreur stanadrd (stderr) : Généralement l'écran pour les messages d'erreur, descripteur de fichier 2.

Commande read pour la Saisie

La commande read permet de lire une ligne de texte depuis l'entrée standard et de l'assigner à une variable.

# Lire une entrée avec un prompt
read -p "Veuillez entrer votre nom : " nomUtilisateur
echo "Bonjour, $nomUtilisateur !"

# Lire seulement 2 caractères
read -n 2 -p "Entrez deux caractères : " deuxChars
echo "Vous avez entré : $deuxChars"

# Lire en mode silencieux (pour un mot de passe)
read -s -p "Entrez votre mot de passe : " motDePasse
echo "Mot de passe saisi."

# Lire avec un délai d'attente de 5 secondes
read -t 5 -p "Vous avez 5 secondes pour entrer quelque chose : " reponseRapide
if [ -z "$reponseRapide" ]; then
    echo "Temps écoulé !"
else
    echo "Réponse : $reponseRapide"
fi

Commande echo pour l'Affichage

La commande echo affiche des chaînes de caractères sur la sortie standard.

# Afficher un message
echo "Ceci est un message."

# Afficher sans retour à la ligne
echo -n "Ceci reste sur la même ligne."
echo " Ceci est la suite."

# Afficher avec des caractères d'échappement (ex: nouvelle ligne \n, tabulation \t)
echo -e "Ligne 1\n\tLigne 2 avec tabulation"

Redirection des Flux

La redirection permet de modifier la destination ou la source des flux d'entrée/sortie.

Redirection de la Sortie Standard (stdout)

  • > fichier : Redirige la sortie standard vers un fichier, écrasant son contenu s'il existe.
  • >> fichier : Redirige la sortie standard vers un fichier, ajoutant le contenu à la fin.
# Écraser le contenu de 'liste.txt'
ls -l /tmp > liste.txt

# Ajouter à 'log.txt'
date >> log.txt

Redirection de l'Erreur Standard (stderr)

  • 2> fichier : Redirige l'erreur standard vers un fichier, écrasant son contenu.
  • 2>> fichier : Redirige l'erreur standard vers un fichier, ajoutant le contenu à la fin.
# Rediriger seulement les erreurs vers 'erreurs.log'
find /root -name "*.conf" 2> erreurs.log

Redirection Simultanée de stdout et stderr

  • &> fichier ou > fichier 2>&1 : Redirige stdout et stderr vers le même fichier (écrase).
  • &>> fichier ou >> fichier 2>&1 : Redirige stdout et stderr vers le même fichier (ajoute).
# Envoyer toutes les sorties (standard et erreur) vers 'sortie_complete.log' (écrase)
ma_commande &> sortie_complete.log

# Envoyer toutes les sorties vers 'journal_complet.log' (ajoute)
autre_commande &>> journal_complet.log

# Masquer toute sortie (utile pour les tâches en arrière-plan)
commande_silencieuse &>/dev/null

Pour rediriger stdout et stderr vers des fichiers distincts :

# stdout vers 'messages.log', stderr vers 'alertes.log'
commande_complexe > messages.log 2> alertes.log

Commande tee

La commande tee permet de rediriger la sortie d'une commande à la fois vers la sortie standard (l'écran) et vers un ou plusieurs fichiers.

# Affiche la date à l'écran et l'enregistre dans 'date_du_jour.txt'
date | tee date_du_jour.txt

Redirection de l'Entrée Standard (stdin)

  • < fichier : La commande prend son entrée depuis le contenu d'un fichier.
  • << LIMITER : La commande prend son entrée depuis le texte entré jusqu'à ce que la chaîne LIMITER soit rencontrée.
# Filtrer les lignes contenant "root" du fichier /etc/passwd
grep 'root' < /etc/passwd

# Écrire du texte dans un fichier en utilisant la redirection d'entrée de 'cat'
cat > mon_fichier.txt << FIN_DE_SAISIE
Ceci est la première ligne.
Ceci est la deuxième ligne.
FIN_DE_SAISIE

# Exemple avec la commande 'dd' (lecture, conversion et écriture de blocs de données)
# Créer un fichier de 20 Mo rempli de zéros
dd if=/dev/zero of=/dev/shm/fichier_test.bin bs=1M count=20
# Ou avec redirection d'entrée
dd /dev/shm/autre_fichier_test.bin bs=1M count=20

# Restauration d'une base de données MySQL
mysql -uutilisateur -pmotdepasse nom_base_de_donnees < backup.sql

  1. Traitement de Caractères

sort : Tri de Lignes

La commande sort trie les lignes d'un fichier texte ou d'un flux d'entrée.

# Syntaxe de base
sort [OPTIONS] FICHIER...

# Exemple : Créer un fichier de données non triées
cat > data.txt <<eof a:4="" b:3="" c:2="" colonne="" d:1="" data.txt="" deuxi="" e:5="" en="" eof="" f:11="" inverse="" la="" num="" ordre="" par="" r="" s="" sort="" trier=""></eof>

Options courantes :

  • -n : Trier numériquement.
  • -r : Trier en ordre inverse (décroissant).
  • -k N : Trier par la N-ième colonne.
  • -t C : Spécifier le caractère C comme séparateur de champ (par défaut, l'espace).

uniq : Suppression des Doublons

uniq filtre les lignes adjacentes répétées. Il est souvent utilisé en combinaison avec sort car il ne détecte que les doublons consécutifs.

# Syntaxe de base
uniq [OPTIONS] FICHIER

# Exemple : Créer un fichier avec des doublons
cat > liste.txt <<eof afficher="" apparaissent="" apple="" banana="" cherry="" d="" doublons="" eof="" et="" fichier="" fois="" le="" les="" leur="" lignes="" liste.txt="" nombre="" plus="" pour="" qui="" r="" sort="" supprimer="" tous="" triez="" uniq="" uniquement=""></eof>

Options courantes :

  • -c : Préfixer les lignes par le nombre d'occurrences.
  • -d : Afficher uniquement les lignes qui sont des doublons (apparaissent plus d'une fois).
  • -u : Afficher uniquement les lignes uniques (qui n'apparaissent qu'une seule fois).

cut : Extraction de Champs

cut extrait des sections de chaque ligne de fichiers ou de l'entrée standard.

# Syntaxe de base
cut [OPTIONS] FICHIER

# Exemple : Extraire des informations de /etc/passwd
head -n 1 /etc/passwd
# root:x:0:0:root:/root:/bin/bash

# Extraire les champs 1 à 3, avec ':' comme délimiteur
head -n 1 /etc/passwd | cut -d ':' -f 1-3
# Résultat:
# root:x:0

# Extraire les champs 1, 4 et 7
head -n 1 /etc/passwd | cut -d ':' -f 1,4,7
# Résultat:
# root:0:/bin/bash

Options courantes :

  • -d DELIM : Utiliser DELIM comme délimiteur de champ (par défaut, tabulation).
  • -f LISTE : Sélectionner les champs spécifiés dans LISTE.

tr : Traduction ou Suppression de Caractères

tr (translate) modifie ou supprime des caractères dans un flux d'entrée.

# Syntaxe de base
tr [OPTIONS] SET1 [SET2]

# Exemple : Mettre en majuscules certaines lettres
echo "hello world" | tr 'hw' 'HW'
# Résultat:
# Hello WorlD

# Supprimer tous les chiffres d'une chaîne
echo "Ma version est 1.2.3" | tr -d '0-9'
# Résultat:
# Ma version est ..

# Convertir les minuscules en majuscules
echo "bonjour le monde" | tr 'a-z' 'A-Z'
# Résultat:
# BONJOUR LE MONDE

# Supprimer les caractères spécifiques
head -n 1 /etc/passwd | tr -d "root"
# Résultat (supprime toutes les occurrences de 'r', 'o', 't'):
# :x:0:0::/:/bin/bash

Option courante :

  • -d : Supprimer les caractères spécifiés dans SET1.

wc : Comptage de Mots, Lignes, Caractères

La commande wc (word count) compte le nombre de lignes, de mots et de caractères (bytes) dans les fichiers.

# Syntaxe de base
wc [OPTIONS] FICHIER...

# Exemple : Utiliser le fichier 'liste.txt' créé précédemment
cat liste.txt
# apple
# banana
# apple
# cherry
# banana
# apple

# Compter les octets du fichier
wc -c liste.txt
# 36 liste.txt

# Compter les lignes du fichier
wc -l liste.txt
# 6 liste.txt

# Compter les mots du fichier
wc -w liste.txt
# 6 liste.txt

Options courantes :

  • -c : Afficher le nombre d'octets.
  • -l : Afficher le nombre de lignes.
  • -w : Afficher le nombre de mots.
  1. Gestion de la Date et de l'Heure

Commande date

La commande date affiche ou définit la date et l'heure du système.

# Syntaxe de base
date [OPTIONS] [+FORMAT]

Options

  • -d CHAÎNE : Afficher la date spécifiée par CHAÎNE (description relative comme "1 day ago").
  • -s CHAÎNE : Définir la date et l'heure du système selon CHAÎNE. (Nécessite des privilèges root)

Paramètres de Formatage

Utilisez un + suivi de codes de formatgae pour personnaliser la sortie.

  • %T : Heure complète (HH:MM:SS)
  • %F : Date complète (YYYY-MM-DD)
  • %Y : Année (4 chiffres)
  • %y : Les deux derniers chiffres de l'année
  • %m : Mois (01-12)
  • %d : Jour du mois (01-31)
  • %H : Heure (format 24h, 00-23)
  • %M : Minute (00-59)
  • %S : Seconde (00-59)
  • %j : Jour de l'année (001-366)
  • %w : Jour de la semaine (0 pour dimanche, 1 pour lundi, etc.)
  • %W : Numéro de semaine dans l'année (00-53, la semaine commence le lundi)
  • %s : Secondes depuis l'époque (1er janvier 1970 00:00:00 UTC)

Exemples d'Utilisation

# 1. Afficher la date et l'heure actuelles dans un format courant
date "+%F %T"
# Exemple : 2023-10-27 15:30:45

# Un autre format personnalisé
date "+An_%Y-Mois_%m-Jour_%d_Heure_%Hh%Mm%Ss"
# Exemple : An_2023-Mois_10-Jour_27_Heure_15h30m45s

# 2. Afficher une date relative
# La date dans un mois
date -d "+1 month" "+%F"
# Exemple : 2023-11-27

# La date il y a 3 ans
date -d "3 years ago" "+%F"
# Exemple : 2020-10-27

# L'heure il y a 5 heures
date -d "-5 hours" "+%F %T"
# Exemple : 2023-10-27 10:30:45

# Le premier jour du mois précédent
date -d "last month last day +1 day" "+%F"
# Ou plus simplement
date -d "last month" "+%Y-%m-01"


# 3. Modifier la date et l'heure du système (nécessite sudo)
# Attention : cela modifie l'heure du système !
# sudo date -s "2024-01-01 10:00:00"

Étiquettes: Linux bash Shell rz sz

Publié le 23 juillet à 19h19