Gladir.com -
C Shell (csh)
- Exemple d'un menu
Voici un exemple de menu pour la console écrit en C Shell pour Linux lorsque j'étais au CÉGEP :
#!/bin/csh
# ****************************************************************************
# * *
# * P R O J E T 1 - Shell par Menu *
# * *
# * Nom du programmeur: Sylvain Maltais *
# * Date de creation: 1998/10/08 *
# * *
# * Description *
# * ----------- *
# * *
# * Ce projet permet de manipuler les fonctions elementaires du shell Unix *
# * sous forme d'un menu a numero. Il suffit d'entrer un numero pour par *
# * effectuer une demande de changement de repertoire par exemple. *
# * *
# * Syntaxe *
# * menu (aucun parametre requis) *
# * *
# ****************************************************************************
# Fichier temporaire: temp
# Fichier auxiliaire: sub et read
# Variable temporaire: temp, ok
set
temp
=
`pwd`
set
ok
=
Oui
# extra ----
clear
echo
"******************************************************************"
echo
"* *"
echo
"* Projet 1 - Tous droits reserves par Gladir.com *"
echo
"* *"
echo
"* Octobre 1998 *"
echo
"* *"
echo
"* Programme fait par Sylvain Maltais *"
echo
"* *"
echo
"* Description *"
echo
"* ----------- *"
echo
"* *"
echo
"* Programme de gestion du Shell Unix par Menu deroulant. *"
echo
"* *"
echo
"******************************************************************"
echo
""
echo
"Appuyer sur ENTER touche pour continuer"
~
/
projet1
/
read
while
(
$ok
=
=
Oui
)
clear
echo
"Repertoire courant: `pwd`"
echo
"(repertoire memorise: $temp)"
echo
""
echo
" Menu principal:"
echo
""
echo
" 1 - Retourner au repertoire parent"
echo
" 2 - Aller a un repertoire enfant"
echo
" 3 - Lister le contenu du repertoire courant"
echo
" 4 - Montrer l'aborescence de repertoire a partir du repertoire courant"
echo
" 5 - Memoriser le repertoire courant"
echo
" 6 - Memoriser le repertoire courant et aller au repertoire memorise"
echo
" 7 - Afficher le contenu d'un fichier (page par page, lignes numerotes)"
echo
" 8 - Executer une commande UNIX du shell"
echo
" 9 - Renommer un fichier"
echo
""
echo
" 0 - Quitter"
echo
""
echo
"Votre choix?"
set
choix
=
`~/projet1/read`
switch
(
$choix
)
case
1
:
cd
.
.
breaksw
case
2
:
clear
echo
"A quel repertoire voulez-vous acceder?"
echo
""
set
dir
=
`ls`
touch
~
/
projet1
/
temp
set
n
=
1
foreach
x
(
$dir
)
if
(
-
d
$x
)
then
echo
$x
>
>
~
/
projet1
/
temp
echo
$n
-
$x
@
n
+
+
endif
end
echo
""
echo
"0 - Annuler la commande"
echo
""
echo
"Votre choix?"
set
a
=
`~/projet1/read`
if
(
$a
!
=
0
)
then
set
repchoix
=
`head -$a ~/projet1/temp | tail -1`
cd
$repchoix
endif
rm
~
/
projet1
/
temp
breaksw
case
3
:
clear
set
nf
=
0
set
nr
=
0
set
nl
=
`ls | wc -l`
echo
"Le contenu de `pwd` est: "
@
n
=
1
while
(
$n
<
=
$nl
)
@
n
+
+
set
x
=
`ls -l -p | head -$n | tail -1`
if
(
-
d
$x
[
9
]
)
then
@
nr
+
+
echo
$x
[
9
]
#>> ~/projet1/temp
else
@
nf
+
+
echo
$x
[
9
]
":"
$x
[
5
]
"octet(s)"
endif
end
echo
""
echo
$nr
"repertoire,"
$nf
"fichier(s) normal(aux)"
echo
""
echo
"Appuyer sur ENTER pour continuer"
~
/
projet1
/
read
breaksw
case
4
:
clear
set
rep
=
`pwd`
echo
$rep
echo
""
~
/
projet1
/
sub
$rep
"/"
1
echo
""
echo
"Appuyer sur ENTER pour continuer"
~
/
projet1
/
read
breaksw
case
5
:
clear
echo
"Entrez le repertoire a memoriser"
set
temp
=
`~/projet1/read`
breaksw
case
6
:
clear
set
x
=
$temp
set
temp
=
`pwd`
cd
x
echo
"Repertoire inversee"
echo
"Entrez une touche pour continuer"
~
/
projet1
/
read
breaksw
case
7
:
clear
echo
"A quel fichier voulez-vous acceder?"
echo
""
set
dir
=
`ls`
touch
~
/
projet1
/
temp
set
n
=
1
foreach
x
(
$dir
)
if
(
-
d
$x
)
then
else
echo
$x
>
>
~
/
projet1
/
temp
echo
$n
-
$x
@
n
+
+
endif
end
echo
""
echo
"0 - Annuler la commande"
echo
""
echo
"Votre choix?"
set
a
=
`~/projet1/read`
if
(
$a
!
=
0
)
then
set
repchoix
=
`head -$a ~/projet1/temp | tail -1`
echo
"Le contenu de: "
$repchoix
nl
$repchoix
|
more
echo
"Appuyer sur ENTER pour continuer"
~
/
projet1
/
read
endif
rm
~
/
projet1
/
temp
breaksw
case
8
:
clear
echo
"Entrez votre commande:"
set
a
=
`~/projet1/read`
$a
echo
"Appuyer sur ENTER pour continuer"
~
/
projet1
/
read
breaksw
case
9
:
clear
echo
"Quel est le fichier a renommer"
echo
""
set
dir
=
`ls`
touch
~
/
projet1
/
temp
set
n
=
1
foreach
x
(
$dir
)
if
(
-
d
$x
)
then
else
echo
$x
>
>
~
/
projet1
/
temp
echo
$n
-
$x
@
n
+
+
endif
end
echo
""
echo
"0 - Annuler la commande"
echo
""
echo
"Votre choix?"
set
a
=
`~/projet1/read`
if
(
a
$
!
=
0
)
then
set
rep
=
`head -$a ~/projet1/temp | tail -1`
echo
"Entrez votre nouveau nom?"
set
b
=
`~/projet1/read`
mv
$rep
$b
echo
"Renomme "
$rep
" a "
$b
echo
"Presse ENTER pour continuer"
~
/
projet1
/
read
endif
rm
~
/
projet1
/
temp
breaksw
case
0
:
set
ok
=
Non
breaksw
endsw
end
Dernière mise à jour: Dimanche, le 1 janvier 2012