2010-06-13 7 views
1

J'écris mon propre programme shell. Je suis actuellement en train d'implémenter la commande cd en utilisant chdir. Je veux mettre en œuvre le cd avec les options ci-dessous:comment vérifier si un chemin est un lien réel ou symbolique

  • -P Ne pas suivre les liens symboliques
  • -L Suivre les liens symboliques (par défaut)

Lorsqu'un chemin donné est inscrit sur la coquille, comment savoir si le chemin est un lien symbolique ou un chemin absolu progamatiquement?

Merci

+0

Les deux Unknown et zed_0xff sont corrects car votre question est posée bizarrement. Dans un script shell, vous utilisez la commande 'test' (a.k.a.' [') si vous ** écrivez ** un shell, vous utilisez' stat() '. – msw

Répondre

3

Découvrez la fonction lstat(), vous devez utiliser S_ISLNK sur le terrain st_mode.

+0

Cela devrait être 'S_IFLNK' –

+1

Je pense que vous voulez dire' lstat() ',' stat() 'suivra le lien symbolique – Hasturkun

+0

Vous avez raison, corrigé. – Unknown

2
if [ -L /path/to/file ]; then 
    echo "is a symlink!" 
else 
    echo "not a symlink! maybe a directory or regular file, or does not exist" 
end 
Questions connexes