[C-Shell] Lien symbolique

Résolu
xavdoug Messages postés 21 Date d'inscription   Statut Membre -  
xavdoug Messages postés 21 Date d'inscription   Statut Membre -
Bonjour à tous,

Je travaille actuellement en c-shell et j'aimerais autant que possible ne pas avoir à en changer.
Je cherche à tester si un répertoire est un lien symbolique.
Je sais qu'en shell, il y a les commandes :
if [-h logdir] then ...
if [-L logdir] then ...


mais malheureusement, aucune ne fonctionne avec mon script.

Auriez-vous une idée ? Merci
Configuration: Windows XP
Internet Explorer 7.0

2 réponses

  1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    avec l'option -l de ls on peut savoir si un fichier est un lien symbolique, le 1er caractère désignant le type de fichier
    > if ( ! -z `ls -l trash2 | grep -o '^l'`) echo trash2 lien symbolique
    trash2 lien symbolique
    ou
    > if ( ! -z `readlink trash2` ) echo trash2 lien symbolique
    trash2 lien symbolique
    

    0
  2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    Une autre solution :
    #! /bin/csh
    
    file "$1" | grep -o "link"
    @ retval = $?
    if ( $retval == 0 ) then
    echo "$1 est un lien symbolique"
    endif
    Lami20 => Ta solution avec "if ( ! -z `readlink trash2` ) echo trash2 lien symbolique" marche pô ;-((
    [yogi@MDK ~/trash]$ ls -l
    total 8
    -rwxr-xr-x  1 yogi yogi 119 mai 13 10:00 bar
    -rwxr-xr-x  1 yogi yogi 115 mai 13 09:58 bar~
    lrwxrwxrwx  1 yogi yogi   4 mai 13 09:22 bla -> rep/
    -rw-r--r--  1 yogi yogi   0 mai 13 09:11 file
    lrwxrwxrwx  1 yogi yogi   4 mai 13 09:11 foo -> file
    drwxr-xr-x  2 yogi yogi  40 mai 13 09:21 rep
    
    [yogi@MDK ~/trash]$ if ( ! -z `readlink bla` ) echo lien symbolique
    lien symbolique # vrai
    
    [yogi@MDK ~/trash]$ if ( ! -z `readlink ccm` ) echo lien symbolique
    lien symbolique # faux
    
    [yogi@MDK ~/trash]$ if ( ! -z `readlink blabla` ) echo lien symbolique
    lien symbolique # faux
    
    [yogi@MDK ~/trash]$
    ;-))
    0
    1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
       
      Salut,

      Lami20 => Ta solution avec "if ( ! -z `readlink trash2` ) echo trash2 lien symbolique" marche pô ;-((

      alors comme ça
      debian:/home/lami20j> if ( `readlink trash2` != "" ) echo lien symbolique
      lien symbolique
      debian:/home/lami20j> if ( `readlink ccm` != "" ) echo lien symbolique
      debian:/home/lami20j> if ( `readlink blabla` != "" ) echo lien symbolique
      debian:/home/lami20j> 
      Pourquoi yogi?! [yogi@MDK ~/trash]$
      0
      1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898 > lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention  
         
        Pourquoi yogi?
        On avait fait des tests un jour ensemble et j'avais créé cet utilisateur et depuis il est resté et je m'en sers justement pour des tests avec d'autres shells ;-))
        0
      2. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571 > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
         
        en fait c'est bizarre puisque moi j'ai choisi ce nom pour guide d utilisation du shell pour debutant
        puisque j'ai pensé à la mascotte ccm et yogi
        0
      3. xavdoug Messages postés 21 Date d'inscription   Statut Membre > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Merci pour vos solutions. Encore un problème résolu !
        0