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
fiTraitement 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
fiRecherche 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
doneScript 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"