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 27/12/2006, 21h57   #1
Membre actif
 
Avatar de Blo0d4x3
 
Inscription : octobre 2003
Messages : 456
Détails du profil
Informations forums :
Inscription : octobre 2003
Messages : 456
Points : 152
Points : 152
Envoyer un message via AIM à Blo0d4x3 Envoyer un message via MSN à Blo0d4x3
Par défaut traitement d'une chaine de caractere

Bonsoir,

J'aurai besoin de traiter une chaine de caractere qui correspond au path d'un fichier qui est passe en paramtere a mon script

exemple:
/home/blood/Documents/Sources/Scripts/fichier.tar.gz.

Je voudrais recuperer de cette chaine le nom du fichier. Je pourrai faire un cut dessus mais comme on ne peut savoir a l'avance le nombre de / ca marcherai pas a tous les coups.

Comment peut t'on faire ca?

Merci.
Blo0d4x3 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2006, 22h01   #2
Rédacteur
 
Inscription : juillet 2004
Messages : 2 573
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : juillet 2004
Messages : 2 573
Points : 1 973
Points : 1 973
Bonjour,

Pourrais-tu nous afficher le script en question ? Juste par curiosité

++
__________________
.Olivier
Olivier Regnier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2006, 22h12   #3
Membre actif
 
Avatar de Blo0d4x3
 
Inscription : octobre 2003
Messages : 456
Détails du profil
Informations forums :
Inscription : octobre 2003
Messages : 456
Points : 152
Points : 152
Envoyer un message via AIM à Blo0d4x3 Envoyer un message via MSN à Blo0d4x3
Pour l'instant j'ai fait un petit script provisoire pour recupérer ces deux valeur:

Code :
1
2
3
4
5
 
#!/bin/sh
 
PATHFILE=$1
FILENAME=`ls -ld $PATHFILE | cut -d / -f 3`
Pas "propre", mais si dans mon path j'ai 4 / mais ca marche pas.
:-(
Blo0d4x3 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2006, 22h27   #4
Rédacteur/Modérateur
 
Avatar de Michaël
 
Michaël Todorovic
Ingénieur systèmes et réseaux
Inscription : juillet 2003
Messages : 3 493
Détails du profil
Informations personnelles :
Nom : Michaël Todorovic
Âge : 25
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux

Informations forums :
Inscription : juillet 2003
Messages : 3 493
Points : 5 899
Points : 5 899
j'ai déjà eu ce problème et on avait trouvé une solution pas très propre mais qui faisait le boulot demandé
Code :
1
2
export TXT="/home/mik/file.txt"
echo $TXT|rev|cut -d'/' -f1|rev
le principe : on inverse la chaine, on lit le premier champ (donc le nom de fichier inversé) puis on remet tout ça dans l'ordre
Michaël est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2006, 22h30   #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
salut,
Pour ça il y a la commande basename :
Citation:
narma@linimi:~$ f=/home/narma/file/test.pdf
narma@linimi:~$ basename $f
test.pdf
__________________
Reportage d'Arte sur Linux
narmataru est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2006, 06h16   #6
Membre émérite
 
Inscription : mai 2004
Messages : 709
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : mai 2004
Messages : 709
Points : 852
Points : 852
...ou les opérateurs de substitution:

Renvoie le fichier:
Code :
1
2
$ pth="/home/blood/Documents/Sources/Scripts/fichier.tar.gz"
$ echo ${pth##/*/}
Renvoie le chemin:man bash ->

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
${paramètre#mot}
       ${paramètre##mot}
              Le mot est développé pour fournir un motif, comme dans l'expansion des noms de fichiers.  Si  le  motif
              correspond  au  début  de  la  valeur du paramètre, alors le développement prend la valeur du paramètre
              après suppression du plus petit motif commun (cas ``#''), ou du plus long motif (cas  ``##'').   Si  le
              paramètre  est @ ou *, l'opération de suppression de motif est appliquée à chaque paramètre positionnel
              successivement, et le développement donne la liste finale.  Si le paramètre est  une  variable  tableau
              indexée  par  @ ou *, l'opération de suppression de motif est appliquée à chaque membre du tableau suc-
              cessivement, et le développement donne la liste finale.
 
       ${paramètre%mot}
       ${paramètre%%mot}
              est développé pour fournir un motif, comme dans l'expansion des noms de fichiers. Si  le  motif  corre-
              spond  à  une  portion  finale  de  la  valeur  du paramètre, alors le développement prend la valeur du
              paramètre après suppression du plus petit motif commun (cas ``%''), ou du plus long motif (cas ``%%'').
              Si  le paramètre est @ ou *, l'opération de suppression de motif est appliquée à chaque paramètre posi-
              tionnel successivement, et le développement donne la liste finale.  Si le paramètre  est  une  variable
              tableau  indexée  par  @  ou  *,  l'opération  de suppression de motif est appliquée à chaque membre du
              tableau successivement, et le développement donne la liste finale.
__________________
:q :q! :wq :w :w! :wq! :quit :quit! :help help helpquit quit quithelp
:quitplease :quitnow :leave :shit ^X^C ^C ^D ^Z ^Q QUITDAMMIT
Jabber: ripat at im.apinc.org
ripat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2006, 08h04   #7
Membre émérite
 
Avatar de Pouic
 
Inscription : octobre 2004
Messages : 668
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2004
Messages : 668
Points : 904
Points : 904
Citation:
Envoyé par narmataru
salut,
Pour ça il y a la commande basename :
Exactement. Et n'oublions pas son pendant pour récupérer le chemin:
__________________
Software becomes slower faster than hardware becomes faster

http://xrenault.developpez.com
API C standard (C ANSI )
Pouic 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 07h14.


 
 
 
 
Partenaires

Hébergement Web