Exercise on Bash
Exercise on Linux Shell Script (Bash)
Question 1
Préparation: récupérer le code source d’un porjet et dezipper le.
Par exemple apache-maven-3.5.0-src.zip depuis https://maven.apache.org/download.cgi
Ouvrer un terminal shell et aller dans le répertoire.
Question 2
- Lister récursivement avec la command “find” les fichiers et répertoires.
- Lister uniquement les fichiers (option “-f”)
- Lister uniquement les fichiers avec le nom ‘*.java’ (attention, ‘*’ est un caractere special du shell)
- Lister uniquement les fichiers avec le nom “*.java”, mais pas “*Test.java”
- compter le nombre de fichers “*.java” mais pas “*Test.java”
Hints: utiliser les command “find . -f”, “wc -l”, “grep -v”
Question 3
- Pour un fichier (java), afficher le nombre de ligne de code du fichier
- Faire une boucle qui itere sur les fichiers et affiche pour chacun sa taille
- faire une boucle qui somme le nombre total de lignes des fichiers
-
afficher seulement les 10 premieres lignes des des fichiers les plus gros avec leur taille
- Facultatif: sans boucle mais avec la command “find . .. -exec .. \;”, afficher la liste de tous les fichiers et leur taille
Hints:
Question 4
Faire un programme java qui affiche la liste des arguments du main
L’executer depuis votre IDE (Eclipse, ..)
Question 5
Executer le programme en ligne de commande shell
L’executer avec des arguments internes java (-D, -X, …) et des arguments par exemple:
Question 6
Faire un script shell pour executer le programme java avec les paramètres passés au shell
file “javaecho.sh”:
Le rendre executable (“chmod u+x javaecho.sh”), et le tester
- ./javaecho.sh Hello World
Les commandes suivantes fonctionnent-elles?
- javaecho.sh Hello World
- javaecho Hello World
- ./javaecho Hello World
- PATH=”$PATH:.”; javaecho.sh Hello World
Question 7
Tester (et expliquer) les résultats pour les paramètres suivant:
- ./javaecho.sh Hello World
- ./javaecho.sh Hello\ World
- ./javaecho.sh “Hello World”
- ./javaecho.sh “Hello\ World”
- ./javaecho.sh ‘Hello World’
- ./javaecho.sh ‘Hello\ World’
- ./javaecho.sh *
- ./javaecho.sh ‘*’
- ./javaecho.sh *
- ./javaecho.sh ‘*’
- i=1; ./javaecho.sh $1
- i=1; ./javaecho.sh “$1”
- i=1; ./javaecho.sh ‘$1’
- i=1; ./javaecho.sh $1
Question 8
Tester la difference avec @* au lieu de $@
script file “javaecho2.sh”:
Question 9
Modifier le programme java pour rajouter a la fin “Thread.sleep(10000); System.ou.println(“exiting..);”
Pendant que le programme tourne (attend), vérifier que vous voyez le processus avec les command “ps”, “ps aux”, et “ls /proc/«pid»”
Question 10
Faire un script shell “monitor-javaecho.sh” qui relance le programme quand celui-ci s’arrete
Hints:
- utiliser “$!” pour connaitre le pid du dernier process démarré par le shell
- Faire un boucle toutes les secondes qui teste si le fichier “/proc/
" exist