Navigatie overslaan.
Start

Alias

Stel dat ik in Linux een bestand wil verplaatsen van het ene filesystem naar het andere.
Dat kan met het "mv"-commando.

Stel nu dat dat andere filesystem een NFS mount is via een VPN verbinding en eigenlijk aan de andere kan van de wereld staat. Veronderstel dan ook even dat het files van 30GB zijn.
Zou het dan niet leuk zijn om een of andere voortgangsindicator te hebben in hoeverre de bestanden al verplaatst werden?

Het "mv"-commando voorziet dat niet en op het eerste zicht lijkt dat een beperking.
Gelukkig is dat geen beperking, want linux is opgebouwd uit allemaal kleine tooltjes die exact 1 ding doen, en dat zo efficiënt mogelijk.
Uitgebreidere functionaliteit kan via pipes ("|") bekomen worden, maar daar heb ik het al eens over gehad.
Commando's kunnen ook "veranderd" worden d.m.v. aliassen.

Stel dat ik wil dat iedere keer dat ik "mv" intik, ik eigenlijk "mv -f" bedoel.
Ik kan dat bekomen door

alias mv='mv -f'

in te typen.

Ik hoef mij echter niet te beperken tot extra opties van hetzelfde commando.
Ik ben vrij.
Een voortangsbalk voor "mv" (en/of "cp") kan ik simuleren door bijvoorbeeld rsync te gebruiken.

alias cp='rsync --progress -ah'
alias mv='rsync --progress -ah --remove-sent-files'

Iedere keer dat ik nu "mv" intik, wordt er dus eigenlijk "rsync --progress -ah --remove-sent-files" uitgevoerd en krijg ik een voorgangsbalk.

(Natuurlijk is enkel "mv" geen compleet commando en moet er nog een bron- en doelparameter bijkomen.)

Het voordeel is ook dat als mijn internetverbinding verbroken wordt, ik met deze nieuwe "mv" en "cp"-commando's enkel de data overzet die nog niet overgezet werd en het overzetten dus niet van voor af aan opnieuw hoeft te beginnen.

Waarom staat dit nu ook getagt als "Security"?
Wel, veel mensen vergeten aan het begin van hun scripts dergelijke dingen te checken.
Als er ergens in een script een bepaald commando gebruikt wordt en de gebruiker maakt een alias, dan wordt het commando van de gebruiker uitgevoerd, en niet het commando dat de maker van het script bedoelde.
Dit werkt op tal van plaatsen, bijvoorbeeld ook als de systeembeheerder het aantal uit te voeren commando's sterk beperkt heeft!

Wat zou er gebeuren als ik een alias maak van het alias-commando? ;-)