Script bash pour obtenir une cible symbolique

Script bash pour obtenir une cible symbolique
Nous connaissons tous des liens symboliques dans Linux. Communément appelé SymLinks ou Soft Links, un lien symbolique est un fichier particulier qui pointe vers un autre fichier ou répertoire dans n'importe quel système de fichiers.

Dans ce court tutoriel, nous passerons en revue les bases des liens symboliques dans Linux et créerons un simple script bash pour obtenir la cible du lien symbolique.

Types de liens symboliques

Il existe principalement deux types de liens symboliques, à savoir:

Liens riches:

Les liens durs sont des pointeurs directs vers un fichier ou un répertoire dans un système de fichiers. Les liens durs ne sont créables que dans le même système de fichiers que le fichier cible.

Liens souples:

D'un autre côté, les liens souples sont des raccourcis indirects vers un fichier ou un répertoire et peuvent exister n'importe où dans un système de fichiers. Les liens souples peuvent pointer du fichier dans un système de fichiers différent.

Comment créer des liens symboliques

Pour créer un lien symbolique dans Linux, nous utilisons la commande LN. L'exécution de la commande sans options crée un lien dur vers le fichier cible spécifié.

La syntaxe générale pour la commande LN est:

ln [options]

Comme mentionné, la commande ci-dessus créera un lien dur vers le fichier cible. Pour créer un lien symbolique doux, utilisez l'option -s comme:

ln -s [option]

Exemple 1

Prenons le fichier Auth.Connectez-vous / Var / Log. Nous pouvons créer un lien vers le fichier dans notre répertoire domestique en utilisant la commande comme:

LN -S / VAR / LOG / AUTH.autocar.enregistrer

La commande ci-dessus créera un lien pointant vers le fichier principal. Nous pouvons le vérifier en utilisant la commande LS:

LS -LA

Exemple n ° 2

Vous pouvez également effectuer une opération similaire sur un répertoire. Pour créer un lien vers / var / log, nous utilisons la commande:

LN -S / VAR / LOG LOG

De même, un lien souple est créé pointant vers le répertoire cible / var / log:

LS -LA

Comment supprimer les liens symboliques

Pour supprimer un lien symbolique, nous utilisons la commande de commande suivie du chemin vers le lien symbolique pour supprimer.

Par exemple:

dissocier ~ / log

NOTE: Si vous supprimez le fichier cible ou le répertoire, supprimez le lien symbolique car le laisser crée un lien cassé.

Comment obtenir un fichier cible ou un répertoire de lien symbolique

Chaque lien symbolique pointe vers un fichier cible ou un répertoire (sauf casser). Pour récupérer le fichier cible / le répertoire d'un lien symbolique, nous utilisons cette commande qui affiche la cible d'un lien symbolique.

Par exemple, pour obtenir la cible de l'authe.Fichier journal que nous avons créé dans une section précédente, nous pouvons faire:

Auth.enregistrer
/ Val / Log / Auth.enregistrer

Un simple script bash pour obtenir des liens symboliques

En utilisant les concepts ci-dessus, nous pouvons assembler un simple script bash qui accepte un chemin et répertorie tous les liens symboliques et leurs fichiers cibles ou répertoires.

Un script simple comme celui fourni ci-dessous devrait faire l'affaire.

#!/ bac / bash
Echo "Fournir le répertoire pour évaluer:"
Lire Target_dir
CD $ Target_dir
liens = $ (trouver . -MaxDepth1 -Type L -LS | awk 'print $ 11')
pour le lien dans les liens
faire
Echo "$ link -> $ (readLink $ link)"
fait

Le script commence par demander à l'utilisateur le répertoire pour évaluer. Ensuite, le script va au répertoire fourni et trouve tous les liens symboliques à l'intérieur du répertoire, et passe la sortie à awk.

Awk analyse la sortie et localise uniquement les liens symboliques, et les enregistre à une variable appelée liens.

Nous créons ensuite une boucle qui saisit chaque lien dans les liens et évalue leur valeur cible à l'aide de la commande readLink.

Enfin, nous faisons écho au lien symbolique et au répertoire cible. Vous trouverez ci-dessous un exemple de sortie:

Dans l'exemple ci-dessus, nous trouvons tous les liens symboliques dans le répertoire / etc et imprimons leur fichier cible ou leur répertoire.

Conclusion

Dans ce tutoriel, nous avons discuté des bases de l'utilisation de liens symboliques dans Linux. Nous avons ensuite créé un script simple pour trouver des liens symboliques dans un répertoire spécifié et afficher leur source et leur cible.

Merci pour la lecture!