Script shell

Utilisateur anonyme -  
 Utilisateur anonyme -
Bonjour,

Alors voila je débute totalement avec les script shell, et je souhaiterais récupérer le type d'un fichier (répertoire, lien, exécutable..).
ls -F affiche les fichier du répertoire courant, avec comme dernier caractère pour chaque fichier: / * ou @, qui définit le type. J aimerais donc extraire ce caractère et l'insérer dans une variable..

j'appel mon programme de cette manière :
./test_type.sh fichier
fichier : fichier dont on veux récuperer le type.

Merci d'avance

2 réponses

  1. miramaze Messages postés 1429 Date d'inscription   Statut Contributeur Dernière intervention   92
     
    Salut, il me semblait qu'il existait une option dans une commande pour afficher le type dossier, fichier etc... , mais je ne retrouve pas, un faux souvenir probablement. Pour répondre à ton problème, on peut utiliser la commande file, ce qui nous donne :
    #!/bin/sh 
    
    filetype='' 
    
    output='file -b $1' 
    
    if [[ $output =~ "symbolic link" ]] 
    then 
    filetype='l' 
    elif [[ $output =~ "directory" ]] 
    then 
    filetype='d' 
    else 
    filetype='f' 
    fi 
    
    echo "File type : "$filetype 
    


    Attention, à la ligne output='file -b $1', ce sont des guillemets inversés, on ne voit pas bien ici.

    Et donc au final, tu l'as compris on a : f=fichier, d=dossier et l=lien symbolique.

    A toi de jouer si tu veux d'autres spécifications.
    All software sucks.
    Alan Cox
    0
  2. Utilisateur anonyme
     
    merci de ta réponse.
    Au final j'avais finis pas trouvé un truc un peu similaire, avec un test :

    if [ -d $1] -> répertoire
    if [ -f $1 ] -> fichier ordinaire
    etc

    les différents test possible sur le type d'un fichier sont expliqués dans "man test".
    Bye
    0