Guide Complet : Commandes Linux, Scripts Shell et AWK

Classé dans Informatique

Écrit le en français avec une taille de 8,09 KB

Maîtrise des Commandes de Base Linux

Indiquez la commande Linux qui affiche à l'écran, en utilisant la commande ls, le contenu du répertoire /root/test, où les noms de fichiers sont entre guillemets et séparés par des virgules.

ls -Q -m /root/test

Gestion des Permissions et Listage

Indiquez la commande Linux qui permet de lister tous les sous-répertoires du répertoire courant avec la permission de lire, écrire et exécuter pour le propriétaire, et la lecture et l'exécution pour le groupe.

ls -l | grep "^drwxr-x"

Configuration du Shell par Défaut

Indiquez la commande Linux qui permet de définir le C Shell (csh) comme shell par défaut pour l'utilisateur root.

chsh -s /bin/csh

Script Shell : Vérification et Copie de Fichiers

Écrire un script shell qui peut recevoir un fichier et un répertoire comme arguments. Le script doit vérifier que ces arguments correspondent effectivement à un fichier et à un répertoire, respectivement. Le script doit vérifier et signaler si le fichier existe déjà dans ce répertoire ; sinon, le script copiera le fichier dans le répertoire.

#!/bin/bash
clear
if [ -f "$1" ]; then
    if [ -d "$2" ]; then
        ls "$2" | grep -w "$1"
        if [ $? -eq 0 ]; then
            echo -e "Le fichier $1 existe déjà dans le répertoire $2\n"
        else
            cp "$1" "$2"
        fi
    else
        echo -e "Répertoire non valide\n"
        exit
    fi
else
    echo -e "Fichier non valide\n"
    exit
fi

Traitement de Données avec AWK : Calcul de l'IMC

Créez un fichier appelé personas.dat, où les champs composant chaque enregistrement comprennent le nom, le poids (en kilogrammes) et la taille (en mètres). Le fichier utilise le caractère # comme délimiteur de champ. Exemple de contenu pour personas.dat :

Juan#80#1.75
Paulina#65#1.6

Écrire un programme AWK, appelé listado_imc, permettant de lire le fichier personas.dat et de générer une liste des personnes ayant un IMC (Indice de Masse Corporelle) normal. Un IMC est considéré comme normal entre 18,5 et 24,99. La formule est : IMC = poids / (taille)².

La liste doit avoir le format suivant :

Liste IMC Normal
Nom IMC

BEGIN { FS = "#"; OFS = "\t"; print "Liste des IMC normaux"; print "Nom", "IMC" }
{
    imc = $2 / ($3 * $3)
    if (imc >= 18.5 && imc <= 24.99)
        printf "%s\t%2.2f\n", $1, imc
}

L'exécution doit se faire ainsi : awk -f listado_imc personas.dat

Analyse de la Variable d'Environnement PATH

Étant donné le contenu suivant de la variable d'environnement PATH :
/usr/local/bin:/bin:/usr/bin:.

Si j'ai une commande appelée liste dans le répertoire courant et une autre portant le même nom dans le répertoire /usr/bin, laquelle serait sélectionnée en tapant simplement liste dans le terminal ?

La commande exécutée sera celle du répertoire /usr/bin, car le répertoire courant (.) apparaît après /usr/bin dans l'ordre de priorité du PATH.

Script Shell : Filtrage de Lignes Alphabétiques

Écrire un script shell qui reçoit deux fichiers comme arguments. Le script doit vérifier que les paramètres sont bien reçus. Si le premier fichier (entrée) n'est pas vide, vous devez enregistrer dans le second fichier (sortie) toutes les lignes du fichier d'entrée qui commencent par une lettre (majuscule ou minuscule).

#!/bin/bash
clear
if [ -s "$1" ]; then
    if [ -f "$2" ]; then
        grep "^[a-zA-Z]" "$1" >> "$2"
    else
        echo -e "$2 : fichier de sortie non valide\n"
        exit
    fi
else
    echo -e "Le fichier $1 n'existe pas ou est vide\n"
    exit
fi

Recherche et Suppression de Fichiers Vides

Indiquez la commande Linux qui permet de rechercher et de supprimer, sans confirmation, tous les fichiers réguliers vides dont le nom commence par la lettre A dans le répertoire /root/test.

find /root/test -name "A*" -size 0 -type f -exec rm -f {} \;

Extraction de Mots avec Voyelles

Créez un fichier palabras.txt contenant un mot différent sur chaque ligne. Indiquez la commande Linux qui permet d'extraire de ce fichier tous les mots qui commencent et se terminent par une voyelle (majuscule ou minuscule).

grep -i "^[aeiou].*[aeiou]$" palabras.txt

Création d'Alias Personnalisés

Indiquez la commande Linux qui permet de créer un alias nommé "liste" effectuant les actions suivantes : effacer l'écran, afficher la date et l'heure sur des lignes séparées, et lister les permissions de tous les fichiers du répertoire.

alias liste='clear; date +"%D%n%T"; ls -al'

Comptage de Fichiers Réguliers

En utilisant les tubes (piping), tapez la commande Linux qui compte le nombre de fichiers réguliers existant dans le répertoire de travail actuel.

ls -l | grep "^-" | wc -l

AWK : Liste des Étudiants Admis

Créez un fichier appelé notas_curso, où les champs sont : nom, prénom, note1, note2, note3. Le délimiteur est la virgule. Exemple :
Perez, Juan, 3.5, 4.7, 5.3

Écrire un programme AWK appelé listado_aprobados qui affiche les étudiants admis (moyenne ≥ 4,0) au format suivant :

Liste des Admis
Nom Prénom Moyenne

BEGIN { FS = ","; OFS = "\t"; print "Liste des Admis"; print "Nom", "Prénom", "Moyenne" }
{
    moyenne = ($3 + $4 + $5) / 3
    if (moyenne >= 4.0)
        printf "%s\t%s\t%1.1f\n", $1, $2, moyenne
}

Exécution : awk -f listado_aprobados notas_curso

Configuration de l'Historique Bash

Indiquez les variables d'environnement à configurer pour que l'historique inclue la date et l'heure, et pour éliminer les doublons successifs.

Il faut éditer le fichier .bash_profile ou .bashrc et exporter les variables suivantes :

export HISTTIMEFORMAT="%F %T "
export HISTCONTROL=erasedups

Script Shell : Test de Connectivité IP (testIP)

Écrire un script shell appelé testIP pour tester la connectivité entre un siège social et ses filiales toutes les 5 minutes. Les résultats (avec date et heure) doivent être enregistrés dans testIP_sucursales.log. Les adresses IP sont lues depuis un fichier passé en argument.

#!/bin/bash
clear
while true; do
    for ip in $(cat "$1"); do
        echo "+--------------------------------+" >> testIP_sucursales.log
        date +"%D %T" >> testIP_sucursales.log
        ping -c 3 "$ip" >> testIP_sucursales.log
    done
    sleep 300
done

Script Shell : Affichage de Lignes Numérotées

Écrire un script shell appelé mostrar_lineas qui utilise une boucle while pour afficher toutes les lignes non vides d'un fichier saisi au clavier, accompagnées de leur numéro de ligne.

#!/bin/bash
clear
echo -n "Entrez le nom du fichier : "
read fichier
i=1
while read -r ligne; do
    if [ -n "$ligne" ]; then
        echo -e "$i\t$ligne"
        i=$((i + 1))
    fi
done < "$fichier"

Entrées associées :