[linux] onwillige alias

Geert Stappers stappers op stappers.nl
Wo Nov 20 21:38:41 CET 2024


On Wed, Nov 20, 2024 at 08:38:01AM +0100, Oscar Roozen via Linux wrote:
> [Iets uitgebreidere reply met wat hopelijk leerzame informatie]
 
:-)


> > On 19/11/2024 13:22, Julien Michielsen via Linux wrote:
> > > Ik heb een alias voor less:
> > > alias l='l=less $1'
> > > Die doet het prima wanneer ik "alias l" intoets.
> 
> Wat bedoel je met "doet het prima"? Je hebt een alias 'l' gemaakt, en die
> zie je terug als 'je alias l' intikt. So far so good.
> 
> Maar waarom maak je 'l' een alias voor 'l=less $1'?
> 
> Die $1 gaat toch al niet werken, zoals Paul ook al schreef. Als je toch iets
> wil doen met parameters, kijk dan naar bash functions. Maar waarom wil je
> 'l' vervangen door 'l=less'?
> 
> 
> > > maar doe ik
> > > l /etc/pulse/client.conf
> > > dan krijg ik
> > > bash: /etc/pulse/client.conf: Permission denied
> 
> Dat is logisch. Bash probeert die conf file te executen en die heeft
> waarschijnlijk niet de x-bit aanstaan. Daarom die 'permission denied'.
> 
> Je l is keurig vervangen door 'l=less', wat nu feitelijk een assignment voor
> een variabele is. Je kan in bash environmentvariabelen meegeven aan een
> commando zonder ze te exporteren, door de assignment voor het commando te
> zetten. Bash zet dus de variabele 'l' naar de waarde 'less' en probeert
> vervolgens die conf uit te voeren.
> 
> De $1 in je alias was overigens leeg omdat jouw interactieve shell geen
> positionele parameters had. Die viel dus weg. Uiteindelijk probeerde bash
> dit uit te voeren:
> 
>   l=less /etc/pulse/client.conf
> 
> Probeer voor de gein eens:
> 
>   l env
> 
> Het commando 'env' laat je (geexporteerrde) environment zien. Daar staat nu
> ergens ook l=less tussen.
 
Een ander voorbeeld van "variable=waarde commando":

$ date  # ter info, ik heb LANG=nl_NL.UTF-8
wo 20 nov 2024 21:21:44 CET
$ LANG=C date
Wed Nov 20 21:22:03 CET 2024
$

Commando `date` kijkt naar waarde van variable 'LANG'
en weet zo welke taal, language, te gebruiken bij output.

 
> > > Wat moet ik doen om l wél te laten aliassen?
> 
>   alias l=less
> 

function l {
  less $1
}


Ja, Paul wint opnieuw.

 
Groeten
Geert Stappers


P.S.
Lang geleden kwamen hier ook al verstandige e-mails
van Paul Slootman voorbij. Soms vanaf  paul op debian.org
Dat was voor mij een mede-inspiratie-bron om ook Debian Developer te
worden.
-- 
Silence is hard to parse


Meer informatie over de Linux maillijst