Script shell

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. 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
    1. Contributeur
      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