Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/11/2006, 16h05   #1
Invité de passage
 
Inscription : novembre 2006
Messages : 10
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 10
Points : 1
Points : 1
Par défaut Liste de fichier dans un script shell

Bonjour, je dois créer un script shel permettant d'effacer un fichier simplement en tapant le numero de fichier,
c'est a dire que l'utilisateur en lancant le script doit voir apparaitre la liste de fichier dans le repertoire avec des numero de fichiers et en tapant ce numero ca doit l'effacer, j'arrive a lister les fichiers avec la commande : ls -alt | head | nl
mais je ne sais comment récuperer le numero afin de pouvoir l'utiliser dans la commande rm...

Je suis débutant en script c'est pour un projet info et je bloque...
mirlidas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2006, 16h16   #2
Rédacteur/Modérateur
 
Avatar de gorgonite
 
Homme Nicolas Vallée
Ingénieur Système
Inscription : décembre 2005
Messages : 9 774
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Vallée
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Ingénieur Système
Secteur : Transports

Informations forums :
Inscription : décembre 2005
Messages : 9 774
Points : 14 303
Points : 14 303
man bash...

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
read [-er] [-a nom_a] [-p msg] [nom ...]
    Une ligne est lue depuis l'entrée standard, puis le premier mot de cette ligne est affecté au premier nom, le second mot au second nom, et ainsi de suite. Les mots restants sont affectés au dernier nom. S'il y a moins de mots que de variables, celles restantes sont remplies avec des valeurs vides. Les caractères contenus dans la variables IFS sont utilisés comme délimiteurs de mots. Le caractère backslash (\) permet de supprimer toute signification spécial pour le caractère suivant, et autorise la continuation de lignes. Les options éventuelles ont les significations suivantes :
 
        -r
            Le basckslash n'est pas un caractère d'échappement. Il est considéré comme faisant partie de la ligne. En particulier la paire backslash/retour-chariot ne permet pas de faire une continuation de ligne. 
        -p
            Afficher le message msg, sans retour-chariot final avant la lecture. Le message n'est affiché que si la lecture a lieu depuis un terminal. 
        -a
            Les mots sont affectés aux rangs successifs d'une variable tableau de nom nom_a, en commençant à 0. nom_a est détruit avant d'affecter de nouvelles valeurs. Les autres nom sont ignorés. 
        -e
            Si l'entrée standard provient d'un terminal, la bibliothèque readline (voir READLINE plus bas) est utilisée pour obtenir la ligne. 
 
 
        Si aucun nom n'est fourni, la ligne lue est affectée entièrement à la variable REPLY. Le code de retour est nul, sauf si une fin-de-fichier est rencontrée.
__________________
Evitez les MP pour les questions techniques... il y a des forums
Contributions sur DVP : Mes Tutos | Mon Blog
gorgonite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2006, 16h24   #3
Invité de passage
 
Inscription : novembre 2006
Messages : 10
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 10
Points : 1
Points : 1
Par défaut --

la commande read je l'utilise pour entrer un nom au clavier et pour m'en servir de variable par la suite dasn mon scritp, je vois pas comment avec read je peux recuperer le numero du fichier dans le ls...

J'avais prevenu qye j'etais débutant...
mirlidas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2006, 16h43   #4
Rédacteur/Modérateur
 
Avatar de gorgonite
 
Homme Nicolas Vallée
Ingénieur Système
Inscription : décembre 2005
Messages : 9 774
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Vallée
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Ingénieur Système
Secteur : Transports

Informations forums :
Inscription : décembre 2005
Messages : 9 774
Points : 14 303
Points : 14 303
ben une fois que tu as le numéro...


Code :
ls ....  | head -N | tail -1
__________________
Evitez les MP pour les questions techniques... il y a des forums
Contributions sur DVP : Mes Tutos | Mon Blog
gorgonite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2006, 16h57   #5
Membre Expert
 
Avatar de narmataru
 
Inscription : décembre 2002
Messages : 1 423
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : décembre 2002
Messages : 1 423
Points : 1 491
Points : 1 491
Voici un exemple qu'il faudra amélioré pour gérer les espaces dans les noms de fichier et le fait que si un fichier s'appelle QUIT il ne pourra pas être supprimé :

Code :
1
2
3
4
5
6
7
8
9
10
11
#!/bin/bash
LISTFILE=$(ls -1)
OPTIONS="$LISTFILE QUIT"
select opt in $OPTIONS; do
        if [ "$opt" = "QUIT" ]; then
                echo done
                exit
        else
                rm -i $opt
        fi
done
__________________
Reportage d'Arte sur Linux
narmataru est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2006, 17h54   #6
Invité de passage
 
Inscription : novembre 2006
Messages : 10
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 10
Points : 1
Points : 1
Citation:
Envoyé par narmataru
Voici un exemple qu'il faudra amélioré pour gérer les espaces dans les noms de fichier et le fait que si un fichier s'appelle QUIT il ne pourra pas être supprimé :

Code :
1
2
3
4
5
6
7
8
9
10
11
#!/bin/bash
LISTFILE=$(ls -1)
OPTIONS="$LISTFILE QUIT"
select opt in $OPTIONS; do
        if [ "$opt" = "QUIT" ]; then
                echo done
                exit
        else
                rm -i $opt
        fi
done
le code fonctionne avec quelques modification en bash, seulement je suis en csh et j'ai une erreur : illegal variable name
mirlidas est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h22.


 
 
 
 
Partenaires

Hébergement Web