Linux readlink en realpath Command Tutorial voor Beginners (met voorbeelden)

We hebben het ln commando al besproken, waarmee je koppelingen tussen bestanden kunt maken. Maar er zijn ook hulpmiddelen waarmee je deze links kunt oplossen.

In deze zelfstudie bespreken we de basisprincipes van realpath en readlink commando’s die op elkaar lijken (zo niet hetzelfde zijn) in die zin dat ze opgeloste symbolische links in de uitvoer tonen. Maar voor we dat doen, is het de moeite waard te vermelden dat alle voorbeelden hier getest zijn op Ubuntu 18.04 LTS en op Debian 10.

Linux realpath en readlink commando’s

Zoals in het begin al gezegd, tonen zowel realpath als readlink commando’s het opgeloste pad voor symlinks in de uitvoer.

Hieronder volgt hun syntaxis:

realpath [OPTION]... FILE...
readlink [OPTION]... FILE...

En hier is wat hun respectieve man pages zeggen:

Print the resolved absolute file name
print resolved symbolic links or canonical file names

Hieronder volgen enkele vraag-antwoord-achtige voorbeelden die je een beter idee moeten geven over hoe deze hulpmiddelen werken.

Q1. Hoe los je een pad op met realpath en readlink?

Eenvoudig, geef gewoon het bestand of pad als invoer. Het volgende voorbeeld toont beide commando’s die een symbolische link oplossen.

schakel oplossen met realpath en readlink

En hier zie je hoe ze werken met paden:

pad oplossen met realpath en readlink

Zo zie je dat beide commando’s in de twee gevallen met succes symlinks oplosten.

Q2. Hoe druk je het opgeloste pad ten opzichte van een directory af?

Met het realpath commando kun je dit gemakkelijk doen. Stel bijvoorbeeld dat dit is wat je probeert te doen:

realpath /var/local/Downloadslink

Een bijkomende eis is echter dat de uitvoer van dit commando relatief is aan de map /home/himanshu. Dan is het volgende het commando dat je moet uitvoeren:

realpath /var/local/Downloadslink --relative-to=/home/himanshu

Hier is de uitvoer:

Downloads

Je ziet dus dat de ‘–relative-to’ optie je in staat stelde uitvoer relatief aan de /home/himanshu directory te hebben.

Q3. Hoe kun je zomaar .. in paden wegwerken?

Er kunnen momenten zijn waarop het uitbreiden/oplossen van symlinks niet het doel is, maar het wegwerken van .. in het pad wel. Met het realpath commando kun je dit doen.

Het enige wat je hoeft te doen is de -s commandoregeloptie te gebruiken. Hier is een voorbeeld:

realpath -s ../../var/local/Downloadslink

En hierna volgt de uitvoer van dit commando:

/var/local/Downloadslink

Q4. Hoe verander je het scheidingsteken?

Standaard wordt de newline als scheidingsteken gebruikt. Beide commando’s bieden echter een manier om in plaats daarvan NUL als scheidingsteken te gebruiken.

De optie die je in beide gevallen moet gebruiken is -z.

realpath -z [FILE/PATH]
readlink -z [FILE/PATH]

Conclusie

Wat we hier besproken hebben zijn slechts een handvol opties/eigenschappen die deze commando’s bieden. Als je klaar bent met deze te oefenen, ga dan naar readlink en realpath man pages(hier en hier) om meer over deze hulpmiddelen te leren.