[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