Bash -skript for å få Symlink Target

Bash -skript for å få Symlink Target
Vi er alle kjent med symbolsk lenker i Linux. Vanligvis kjent som Symlinks eller Soft Links, er en symbolsk lenke en bestemt fil som peker på en annen fil eller katalog i ethvert filsystem.

I denne korte opplæringen vil vi gå over det grunnleggende om symbolske lenker i Linux og lage et enkelt bashskript for å få målet for den symbolske lenken.

Typer symbolske lenker

Det er hovedsakelig to typer symboliske koblinger, nemlig:

Harde lenker:

Harde lenker er direkte pekere til en fil eller katalog i et filsystem. Harde lenker er bare skapbare i samme filsystem som målfilen.

Myke lenker:

På den annen side er myke lenker indirekte snarveier til en fil eller katalog og kan eksistere hvor som helst i et filsystem. Myke lenker kan peke på å arkivere i et annet filsystem.

Hvordan lage symbolske lenker

For å lage en symbolsk lenke i Linux, bruker vi LN -kommandoen. Å utføre kommandoen uten alternativer oppretter en hard lenke til den spesifiserte målfilen.

Den generelle syntaks for LN -kommandoen er:

ln [alternativer]

Som nevnt vil kommandoen ovenfor opprette en hard lenke til målfilen. For å lage en myk symbolsk lenke, bruk alternativet -S som:

ln -s [alternativ]

Eksempel 1

La oss ta filen Auth.Logg inn /var /log. Vi kan opprette en lenke til filen i vår hjemmekatalog ved å bruke kommandoen som:

ln -s/var/log/authent.Log AUTH.Logg

Kommandoen ovenfor vil opprette en lenke som peker på hovedfilen. Vi kan bekrefte dette ved å bruke LS -kommandoen:

ls -la

Eksempel nr. 2

Du kan også utføre en lignende operasjon på en katalog. For å opprette en lenke til /var /log, bruker vi kommandoen:

LN -S /VAR /LOGG LOGG

Tilsvarende opprettes det en myk lenke som peker på målet /var /log -katalogen:

ls -la

Hvordan fjerne symbolsk lenker

For å fjerne en symbolsk lenke bruker vi kommandoen unlink etterfulgt av veien til den symbolske lenken for å fjerne.

For eksempel:

unlink ~/log

MERK: Hvis du sletter målfilen eller katalogen, må du fjerne den symbolske lenken fordi den oppretter en ødelagt lenke.

Hvordan få symbolsk koblingsmålfil eller katalog

Hver symbolsk lenke peker på en målfil eller katalog (med mindre ødelagt). For å hente målfilen/katalogen til en symlink, bruker vi denne kommandoen som viser målet for en symlink.

For eksempel for å få målet for autoriteten.loggfil vi opprettet i en tidligere seksjon, vi kan gjøre:

Readlink Auth.Logg
/val/log/authent.Logg

Et enkelt bashskript for å få symlinks

Ved å bruke konseptene ovenfor, kan vi sette sammen et enkelt bash -skript som godtar en bane og viser alle symlinkene og deres målfiler eller katalog.

Et enkelt manus som det som er gitt nedenfor, bør gjøre susen.

#!/bin/bash
ekko "Gi katalogen for å evaluere:"
Les Target_Dir
CD $ Target_Dir
lenker = $ (finn . -MAXDEPTH1 -TYPE L -LS | awk 'skriv ut $ 11')
for lenke i lenker
gjøre
ekko "$ link -> $ (readlink $ link)"
Ferdig

Skriptet starter med å be brukeren om katalogen om å evaluere. Deretter går skriptet til den medfølgende katalogen og finner alle symbolske lenker i katalogen, og gir utdataene til AWK.

AWK analyserer utgangen og lokaliserer bare de symbolske koblingene, og lagrer dem til en variabel kalt lenker.

Vi oppretter deretter en sløyfe som griper hver lenke i koblingene og evaluerer målverdien deres ved å bruke ReadLink -kommandoen.

Til slutt gjenspeiler vi den symbolske lenken og målkatalogen. Nedenfor er et eksempelutgang:

I eksemplet ovenfor finner vi alle symlinkene i /etc -katalogen og skriver ut målfilen eller katalogen.

Konklusjon

I denne opplæringen diskuterte vi det grunnleggende om å bruke symbolsk lenker i Linux. Vi opprettet deretter et enkelt skript for å finne symbolske lenker i en spesifisert katalog og vise deres kilde og mål.

Takk for at du leser!