EXERCICE DE TRAVAUX PRATIQUES UNIX PROGRAMMATION SHELL ANNEE UNIVERSITAIRE 2012/13/14/15 Aprés avoir sauvegardé une copie de ce fichier, vous répondrez aux questions, directement dans le fichier afin de conserver une trace de votre travail. Par exemple, dans un terminal : mkdir -p $HOME/i54/tps/src cd $HOME/i54/tps wget -O $HOME/i54/tps/serie-1.txt langevin.univ-tln.fr/cours/UPS/tps/ups-tps-1.txt Vous répondrez aux questions, directement dans le fichier afin de conserver une trace de votre travail. Vous placerez vos sources dans le réperpoire src qui sera maintenu à jour par make et son makefile. Lancer l'edition a partir de la ligne de commande : {editeur} ups-tps-1.txt & ---------------------------------------------------------------- dernière modification : mar. sept. 22 09:19:36 CEST 2015 ---------------------------------------------------------------- 1) man, bash, bashrc, alias, source 2) configuration de historique 3) tour de l'hôte 4) variable, path, which, fichier script, readline 5) attribut des processus 6) pseudo fichier /proc ================================================================ EXERCICE 1 ================================================================ objectif : man, bash, bashrc, alias, source durée : 30 minutes methodologie : [ 1 ] Dans votre navigateur, marquez la page : http://www.gnu.org/software/bash/manual/bash.html [ 2 ] Essayez : lynx langevin.univ-tln.fr/cours/UPS/tps/bash.html Retrouver les feuilles de travaux-pratiques en partant de : lynx langevin.univ-tln.fr/cours/UPS/upsh.html [ 3 ] man bash, puis rechercher la chaine bashrc en tapant /bashrc. Utilisez les commandes less : n, N, etc... [ 4 ] Testez un alias bidon : alias bidon='echo un alias bidon' alias hello='echo hello' $ hello world [ 5 ] Placez un alias dans ~/.bashrc Testez. Expliquez. commentaires: ---------------------------------------------------------------- exemples: ---------------------------------------------------------------- ================================================================ EXERCICE 2 ================================================================ objectif : configuration de historique .bashrc, .bash_profile, export durée : 30 minutes methodologie : [ 0 ] Lisez les sections du manuel html de bash : ( Bash Startup Files ) ( Bash History Facilities ) [ 1 ] man history. conclusion ? [ 2 ] help history [ 3 ] man bash, puis recherchez le motif HIST pour trouver les variables : HISTFILE, HISTFILESIZE, HISTSIZE. [ 4 ] Préciser le role de ces variables configuration de l'historique des commandes. [ 5 ] configurez votre compte (.bash_profile) pour conserver l'historique des 1024 dernières commandes. [ 6 ] Sur la ligne de commande, testez la navigation dans l'historique : ascenseur, ctrl-r. [ 7 ] Quelle bibliotheque est utilisee par bash pour gerer la ligne de commande. Préciser le role de la commande bind et du fichier ~/.inputrc. Placer le racourci Control-o: "hello world" dans le fichier .inputrc. commentaires: ---------------------------------------------------------------- exemples: ---------------------------------------------------------------- ================================================================ EXERCICE 3 ================================================================ objectif : tour de l'hôte durée : 30 minutes methodologie : Utilisez les commandes décrites dans les transparents du cours pour faire le tour de l'hôte : - uname, uptime etc... - autres ? commentaires: ---------------------------------------------------------------- exemples: ---------------------------------------------------------------- ================================================================ EXERCICE 4 ================================================================ objectif : variable, path, which, fichier script, readline durée : 30 minutes methodologie : [ 1 ] Consultez les variables HOME, SHELL, USER, PATH (utile : echo). [ 2 ] Précisez nature et rôle de la commande enable. (utile : type) [ 3 ] Créez un répertoire ~/bin pour y placer vos fichiers executables : modifier le fichier de profile bash. Testez en y placant le script : (utile : chmod, grep -B1 -A5 ) #!/bin/bash enable | while read x cmd do if which $cmd >& /dev/null ; then echo $cmd fi done commentaires: ---------------------------------------------------------------- exemples: ---------------------------------------------------------------- ================================================================ EXERCICE 5 ================================================================ objectif : attribut des processus ps, tty durée : 30 minutes methodologie : [ 0 ] combien de processus sont en mémoire ? [ 1 ] combien sont à vous ? [ 2 ] comment utiliser l'option -o de ps ? [ 3 ] précisez 7 attributs de processus [ 4 ] listez vos processus en précisant ces attributs. [ 5 ] combien de processus sont attachés à un pseudo terminal ? commentaires: ---------------------------------------------------------------- exemples: ---------------------------------------------------------------- ================================================================ EXERCICE 6 ================================================================ objectif : pseudo fichier /proc getpid, sprintf durée : 30 minutes methodologie : [ 1 ] man getpid [ 2 ] man proc [ 3 ] man sprintf [ 4 ] Ecrire un programme en langage C pour obtenir une commande qui envoie sur stdout quelques une de ses caractéristiques processus. commentaires: ---------------------------------------------------------------- exemples: ---------------------------------------------------------------- dm, pl, septembre 2015