====== Différences ======
Cette page vous affiche les différences entre la révision choisie et la version actuelle de la page.
cours:activite1:linux_initiation_au_shell [2013/10/03 11:58] r.doiteau créée |
cours:activite1:linux_initiation_au_shell [2019/05/11 14:35] (Version actuelle) |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | dfsdfs | + | === Commandes de base === |
+ | |||
+ | <fc #008000>La fonction "mkdir NOM_DU_DOSSIER" permet de créer un dossier.</fc> | ||
+ | |||
+ | <fc #008000>La fonction "touch NOM_DU_FICHIER.EXTENTION" permet de créer un fichier.</fc> | ||
+ | |||
+ | <fc #008000>La fonction "rm NOM_DU_FICHIER.EXTENTION" permet du supprimer un fichier/dossier.</fc> | ||
+ | |||
+ | <fc #008000>La fonction "nano NOM_DU_FICHIER.EXTENTION" permet d'éditer le fichier.</fc> | ||
+ | |||
+ | <fc #008000>La fonction "cat NOM_DU_FICHIER.EXTENTION" permet de lire le fichier.</fc> | ||
+ | |||
+ | <fc #008000>La fonction "cp NOM_DU_FICHIER.EXTENTION NOM_DU_FICHIER2.EXTENTION" copie le premier dans le deuxième.</fc> | ||
+ | |||
+ | <fc #008000>La fonction "mv NOM_DU_FICHIER.EXTENTION NOM_DU_DOSSIER" bouge le fichier dans le dossier.</fc> | ||
+ | |||
+ | <fc #008000>La fonction "chmod 700 NOM_DU_FICHIER.EXTENTION" permet de donner des droits selon le chiffre: 700, droit que pour l'admin, 777: droit pour tout le monde.</fc> | ||
+ | |||
+ | <fc #008000>La fonction "su NOM_DE_L'UTILISATEUR" permet de se connecter en tant que cet utilisateur.</fc> | ||
+ | |||
+ | === 1 : fonction cal === | ||
+ | |||
+ | **cal COMMAND:** | ||
+ | La commande «cal» est utilisée pour afficher le calendrier. | ||
+ | |||
+ | **syntaxe:** | ||
+ | La syntaxe est | ||
+ | cal [options] [month] [year] | ||
+ | |||
+ | **options :** | ||
+ | |||
+ | -1 Affiche un mois unique comme résultat. | ||
+ | -3 Affiche le mois prev/current/next (précédent/actuel/suivant) comme résultat. | ||
+ | -s Affiche dimanche comme le premier jour de la semaine. | ||
+ | -m Affiche lundi comme le premier jour de la semaine. | ||
+ | -j Affiche la date ordinale (les jours incrémentés de 1, à partir du 1er janvier). | ||
+ | -y Affiche un calendrier pour l’année actuelle. | ||
+ | |||
+ | |||
+ | |||
+ | **exemple :** | ||
+ | |||
+ | cal | ||
+ | |||
+ | Résultat : | ||
+ | |||
+ | september 2008 | ||
+ | Su Mo Tu We Th Fr Sa | ||
+ | 1 2 3 4 5 6 | ||
+ | 7 8 9 10 11 12 13 | ||
+ | 14 15 16 17 18 19 20 | ||
+ | 21 22 23 24 25 26 27 | ||
+ | 28 29 30 | ||
+ | |||
+ | La commande «cal» affiche le mois calendaire actuel. | ||
+ | |||
+ | cal -3 5 2008 | ||
+ | |||
+ | Résultat : | ||
+ | |||
+ | April 2008 May 2008 June 2008 | ||
+ | Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa | ||
+ | 1 2 3 4 5 1 2 3 1 2 3 4 5 6 7 | ||
+ | 6 7 8 9 10 11 12 4 5 6 7 8 9 10 8 9 10 11 12 13 14 | ||
+ | 13 14 15 16 17 18 19 11 12 13 14 15 16 17 15 16 17 18 19 20 21 | ||
+ | 20 21 22 23 24 25 26 18 19 20 21 22 23 24 22 23 24 25 26 27 28 | ||
+ | 27 28 29 30 25 26 27 28 29 30 31 29 30 | ||
+ | |||
+ | Ici, la commande «cal» affiche le calendrier des mois d’avril, mai et juin de l’année 2008. | ||
+ | |||
+ | === 2 : fonction date === | ||
+ | |||
+ | **date COMMAND :** | ||
+ | |||
+ | Affiche la date actuelle selon le FORMAT spécifié ou initialise la date système. | ||
+ | |||
+ | **syntaxe :** | ||
+ | |||
+ | -d, --date=STRING affiche la date selon le format STRING, sans « now » | ||
+ | -f, --file=DATEFILE identique à --date pour chaque ligne de DATEFILE | ||
+ | -r, --reference=FILE affiche la dernière heure de modification de FILE | ||
+ | -R, --rfc-2822 affiche la date et l'heure selon le format RFC 2822. | ||
+ | Exemple, Mon, 07 Aug 2006 12:34:56 -0600 | ||
+ | --rfc-3339=TIMESPEC affiche la date et l'heure selon le format RFC-3339. | ||
+ | TIMESPEC=`date', `seconds', ou `ns' pour | ||
+ | la date et l'heure selon la précision voulue. | ||
+ | Les éléments date et heure sont séparés par | ||
+ | une simple espace, 2006-08-07 12:34:56-06:00 | ||
+ | -s, --set=STRING initialise la date selon STRING | ||
+ | -u, --utc, --universal affiche ou initialise le système de temps universel | ||
+ | |||
+ | Afin de contrôler les caractéres il est necessaire d'utiliser date +x | ||
+ | |||
+ | %% un caractère % | ||
+ | %a les noms abrégés des jours de la semaine (p. ex. lun.) | ||
+ | %A les noms complets localisés des jours de la semaine (p. ex. lundi) | ||
+ | %b les noms abrégés localisés des mois (p. ex. janv.) | ||
+ | %B les noms complets localisés des mois (p. ex. janvier) | ||
+ | %c la date et l'heure localisées (p. ex. mar. 28 avril 2009 08:37:32 CEST) | ||
+ | %C siècle ; comme %Y, sans les 2 derniers chiffres (p. ex. 20) | ||
+ | %d jour du mois (p. ex. 01) | ||
+ | %D date, identique à %m/%d/%y | ||
+ | %e jour du mois, complété avec une espace, identique à %_d | ||
+ | %F la date complète, identique à %Y-%m-%d | ||
+ | %g les deux derniers chiffres de l'année du numéro de semaine ISO (voir %G) | ||
+ | %G l'année correspondant au numéro de semaine ISO (voir %V) ; normalement\ | ||
+ | utile seulement avec %V | ||
+ | %h identique à %b | ||
+ | %H heure (00..23) | ||
+ | %I heure (01..12) | ||
+ | %j jour de l'année (001..366) | ||
+ | %k heure avec espace ( 0..23), identique à %_H | ||
+ | %l heure avec espace ( 1..12), identique à %_I | ||
+ | %m mois (01..12) | ||
+ | %M minute (00..59) | ||
+ | %n un retour à ligne | ||
+ | %N nanosecondes (000000000..999999999) | ||
+ | %p indicateur localisé AM ou PM en majuscules (blanc si inconnu) | ||
+ | %P identique à %p mais en minuscules | ||
+ | %r heure locale au format 12-heure (p. ex. 11:11:01 PM) | ||
+ | %R heure en format 24-heure identique à %H:%M | ||
+ | %s secondes depuis 1970-01-01 00:00:00 UTC | ||
+ | %S secondes (00..60) | ||
+ | %t une tabulation | ||
+ | %T l'heure, identique à %H:%M:%S | ||
+ | %u le jour de la semaine (1..7) ; 1 représente le lundi | ||
+ | %U le numéro de la semaine de l'année, avec le dimanche comme premier jour | ||
+ | de la semaine (00..53) | ||
+ | %V le numéro de la semaine ISO, avec le lundi comme premier jour de la | ||
+ | semaine (01..53) | ||
+ | %w le jour de la semaine (0..6), avec 0 étant le dimanche | ||
+ | %W le numéro de la semaine, avec le lundi comme premier jour de la semaine | ||
+ | (00..53) | ||
+ | %x représentation localisée de la date (p. ex. 12/31/99) | ||
+ | %X représentation localisée de l'heure (p. ex. 23:13:48) | ||
+ | %y les deux derniers chiffres de l'année (00..99) | ||
+ | %Y l'année | ||
+ | %z fuseau horaire numérique +hhmm (p. ex. -0400) | ||
+ | %:z fuseau horaire numérique +hh:mm (p. ex. -04:00) | ||
+ | %::z fuseau horaire numérique +hh:mm:ss (p. ex. -04:00:00) | ||
+ | %:::z fuseau horaire numérique selon la précision nécessaire (p. ex. -04, +05:30) | ||
+ | %Z abréviation alphabétique des fuseaux horaires (p. ex. EDT) | ||
+ | |||
+ | **exemple :** | ||
+ | |||
+ | date -d 120222 +%A | ||
+ | |||
+ | affiche la date du 12/02/2012 et affiche uniquement les noms abrégés des jours de la semaine | ||
+ | |||
+ | mercredi | ||
+ | |||
+ | ===3 : fonction echo ===== | ||
+ | |||
+ | **syntaxe :** | ||
+ | |||
+ | Un signe $ précède les commandes qui ne nécessitent pas de droits administrateur ; un signe # précède celles qui nécessitent des droits administrateur (ces signes ne font PAS partie des commandes). Les lignes qui ne commencent pas par un signe $ ou # correspondent au résultat de la commande précédente. | ||
+ | |||
+ | **exemple :** | ||
+ | |||
+ | echo Nous sommes le $(date +%x) il est $(date +%r) | ||
+ | |||
+ | Nous sommes le 01/10/2012 il est 11:13:53 | ||
+ | |||
+ | +%x indique représentation localisée de la date (p. ex. 12/31/99) | ||
+ | +%r heure en format 24-heure identique à %H:%M | ||
+ | |||
+ | === 4 : fonction ls ===== | ||
+ | |||
+ | **syntaxe** | ||
+ | |||
+ | -l utilise le format long d'affichage | ||
+ | -a, --all n'ignore pas les entrées débutant par . | ||
+ | -i, --inode affiche le numéro d'index de chaque fichier | ||
+ | |||
+ | |||
+ | === 5 : fonction touch ===== | ||
+ | |||
+ | permet de créer un fichier | ||
+ | |||
+ | ex: touch toto.txt | ||
+ | |||
+ | |||
+ | === 6 : fonction cat ===== | ||
+ | |||
+ | concatène et affiche le fichier | ||
+ | |||
+ | ex : cat toto.txt | ||
+ | Salut | ||
+ | |||
+ | ou cat > toto.txt permet #l'edition de celui-ci | ||
+ | cat toto.txt toto2.txt > #toto3.txt concaténe toto et toto2 vers toto3 | ||
+ | |||
+ | |||
+ | === 7 : fonction grep ===== | ||
+ | |||
+ | recherche des fichiers | ||
+ | |||
+ | ex : recherche des fichiers dans les processus en cours, bash étant le mot recherché | ||
+ | |||
+ | ps | grep bash | ||
+ | |||
+ | ex : recherche dans le dossier /etc/services, le mot "hhtp" en indiquant le nom des lignes | ||
+ | |||
+ | grep -w http /etc/services | ||
+ | |||
+ | ex : <fc #FF0000>ne pas</fc> recherché dans le dossier /etc/services, le mot "hhtp" en indiquant le nom des lignes | ||
+ | |||
+ | grep -v http /etc/services | ||
+ | |||
+ | ex : recherche et compte dans le dossier /etc/passwd, le mot "sbin" en indiquant le nom des lignes | ||
+ | |||
+ | grep -w -c sbin /etc/passwd | ||
+ | |||
+ | ex : recherche une chaîne de caractère "tux" dans le dossier /etc | ||
+ | |||
+ | grep -l -R tux /etc/ | ||
+ | |||
+ | ex : recherche sans respecter la casse | ||
+ | |||
+ | grep -i iana /etc/services | ||
+ | |||
+ | === 8 : fonction cut ===== | ||
+ | |||
+ | supprime une partie de chaque ligne du fichier, | ||
+ | |||
+ | <note warning>Attention il faut préciser les délimiteurs : par -d ":" si le délimiteurs est :</note> | ||
+ | |||
+ | ex : cut -f1,3 -d":" /etc/group | ||
+ | |||
+ | |||
+ | === 9 : fonction sort ===== | ||
+ | |||
+ | tri les lignes | ||
+ | |||
+ | ex : sort /etc/passwd | ||
+ | |||
+ | - n permet de trier du plus grand au plus petir | ||
+ | -t : -(position inf) +(position sup) permet de trier a partir d'un position prédéfinie | ||
+ | |||
+ | === 10 : fonction head et tail ===== | ||
+ | |||
+ | affiche le début ou la fin de chaque fichier | ||
+ | |||
+ | ex : -n5 affiche les 5 premières ligne du fichier | ||
+ | |||
+ | head -n5 /etc/passwd | ||
+ | |||
+ | -n+(position) : permet de sélectionner un ligne pur afficher à partir de la niéme | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ======Pratique TP 2====== | ||
+ | |||
+ | |||
+ | ===1. Créez un fichier contenant la date du jour. Ajoutez à la fin de ce fichier le contenu du répertoire courant.=== | ||
+ | |||
+ | Créer un fichier: touch NOM_DU_FICHIER (date.txt). Ajouter la date: date > date.txt | ||
+ | |||
+ | ===2. Choississez un fichier existant et listez ses caractéristiques avec l’option l.=== | ||
+ | |||
+ | Lister les caractéristiques d'un fichier: ls -l NOM_DU_FICHIER. | ||
+ | |||
+ | ===3. Recommencez l’opération avec un nom de fichier n’existant pas.=== | ||
+ | |||
+ | Cf 2 | ||
+ | |||
+ | ===4. Effectuez les mêmes opérations que ci-dessus, mais en sauvegardant les résultats dans respectivement out-normal et out-err.=== | ||
+ | |||
+ | (| = pipe) | ||
+ | Lister et sauvegarder: ls -l NOM_DU_FICHIER > NOM_DU_FICHIER_SAUVEGARDE | ls -l NOM_DU_FICHIER_NON_EXISTANT >& NOM_DU_FICHIER_SAUVEGARDE_ERR | ||
+ | |||
+ | ===5. Listez les caractéristiques d’un second fichier existant avec l’option l, et en ajoutant ce résultat au fichier out-normal.=== | ||
+ | |||
+ | Ajout de données à un fichier: ls -l NOM_DU_FICHIER >> NOM_DU_FICHIER_SAUVEGARDE | ||
+ | |||
+ | ===6. Listez deux fichiers, l’un connu, l’autre inconnu et récupérer, en une seule commande, les informations dans les fichiers out-normal et out-err.=== | ||
+ | |||
+ | ls -l NOM_DE_FICHIER >NOM_DU_FICHIER_SAUVEGARDE|ls -l NOM_DU_FICHIER_NON_EXISTANT >& NOM_DU_FICHIER_SAUVEGARDE_ERR | ||
+ | |||
+ | |||
+ | ===7. Idem mais dans un même fichier out.=== | ||
+ | |||
+ | ls -l NOM_DE_FICHIER>NOM_DU_FICHIER_SAUVEGARDE|ls -l NOM_DU_FICHIER_NON_EXISTANT &> NOM_DU_FICHIER_SAUVEGARDE | ||
+ | |||
+ | ===8. Idem mais en utilisant le périphérique null (/dev/null) pour ne pas afficher les messages d’erreur.=== | ||
+ | |||
+ | ls -l NOM_DE_FICHIER>NOM_DU_FICHIER_SAUVEGARDE|ls -l NOM_DU_FICHIER_NON_EXISTANT &> /dev/null | ||
+ | |||
+ | ===9. Lancez un shell, puis la commande tty pour récupérer le nom du terminal.=== | ||
+ | |||
+ | Ouvrir un nouveau shell: maj+ctrl+n | ||
+ | |||
+ | ===10. Exécutez quelques commandes dans une fenêtre et afficher le résultat dans la seconde et éventuellement la sortie erreur dans une troisième.=== | ||
+ | |||
+ | Afficher le résultat des commandes dans l'autre shell: ls -l > /dev/pts/1 | ||
+ | |||
+ | ===11. La commande ps permet d’obtenir des informations sur la liste des processus actifs sur la machine. En combinant cette commande, à l’aide d’un pipe, avec la commande appropriée, affichez le nombre de processus actifs.=== | ||
+ | |||
+ | ps --no-header | wc -l | ||
+ | |||
+ | ===12. La commande sort permet de trier ce qui lui est communique sur l’entrée standard. Affichez par ordre de taille tous vos fichiers et vos répertoires.=== | ||
+ | |||
+ | ls -l| sort -k5 -g | ||
+ | |||
+ | ===13. Écrire une suite de commandes reliées par des pipes qui compte le nombre de lignes d’un fichier qui contiennent toto.=== | ||
+ | |||
+ | cat NOM_DU_FICHIER |wc -l NOM_DU_FICHIER | ||
+ | |||
+ | ===14. Chaque ligne du fichier /etc/passwd donne des informations relatives à un utilisateur du système, et contient plusieurs champs séparés par le caractère:(deux points). Affichez tous les champs de ce fichier, depuis le nom d’utilisateur jusqu’`a son UID (ie. les 4 premiers champs).=== | ||
+ | |||
+ | cut -f1,2,3,4 -d":" /etc/passwd | ||
+ | |||
+ | ===15. Recherchez dans ce même fichier la ligne contenant votre nom d’utilisateur.=== | ||
+ | |||
+ | grep NOM_D'UTILISATEUR /etc/passwd | ||
+ | |||
+ | ===16. En utilisant les commandes date et cut, affichez le mois courant.=== | ||
+ | |||
+ | date | cut -f3 -d" " | ||
+ | |||
+ | ===17. Affichez le nombre d’utilisateurs connectés sur votre poste (Voir la commande who).=== | ||
+ | |||
+ | who -u | cut -f1 -d" "| sort -k1 -u| wc -l | ||
+ | affiche le nombre d'utilisateur | prend la première colonne | tri par nom et enlève les doublons | Compte les lignes. | ||
+ | |||
+ | ===18. A l’aide des commandes head et tail, affichez la portion d’un fichier comprise entre les lignes 5 à 9.=== | ||
+ | |||
+ | cat /etc/passwd | head -n9 | tail -n5 | ||
+ | |||
+ | ===19. Comment utiliser la commande cat pour écrire du texte dans un fichier?=== | ||
+ | |||
+ | cat > toto.txt | ||
+ | |||
+ | ======Pratique TP 3====== | ||
+ | |||
+ | === Créer un processus en arrière plan === | ||
+ | xclock& | ||
+ | |||
+ | === Tuer un processus === | ||
+ | kill 4427 #le numéro de processus apparaît lors du lancement de celui-ci | ||
+ | |||
+ | === Retrouver un numéro de processus pour le tuer === | ||
+ | |||
+ | ps | ||
+ | 3735 pts/1 00:00:00 bash | ||
+ | 4422 pts/1 00:00:00 xclock | ||
+ | 5101 pts/1 00:00:00 ps | ||
+ | |||
+ | kill -9 4422 #le -9 kill tous les process en rapport avec celui-ci | ||
+ | |||
+ | === Afficher la valeur d'une variable === | ||
+ | echo $HOME # $ donne la valeur de la variable et non le nom de la variable | ||
+ | |||
+ | |||
+ | === Afficher les variables d'environnement du shell === | ||
+ | export | ||
+ | === Attribuer une variable === | ||
+ | VAR="toto" #attribue la variable | ||
+ | export VAR #export la variable | ||
+ | echo $VAR #affiche la variable | ||
+ | |||
+ | === Attribuer une variable pour l’exécuter simplement=== | ||
+ | |||
+ | PATH=/home/r.doiteau/script/:$PATH #attribution de la variable | ||
+ | export #vérification | ||
+ | |||
+ | declare -x PATH="/home/r.doiteau/script/:/usr/local/bin:/usr/bin:/bin:/usr//games:/usr/games" | ||
+ | |||
+ | script.sh #exécution | ||
+ | |||
+ | === Enregistrement permanent des alias=== | ||
+ | Éditer les alias dans le fichier .bashrc présent à la racine de root | ||
+ | |||
+ |