Tuli ostettua Raspberry Pi 4 sekä ulkoinen "virallinen" kosketusnäyttö. Nyt joutuu siis todella pitkästä aikaa käyttämään Linuxia, ja vähän haasteita on jo ilmaantunut. Yritän säätää skriptillä tuon näytön kirkkautta, koska sehän on oletuksena täysillä, eikä fyysisiä näppäimiä säätöön ole. Säätö onnistuu terminaalissa melko helposti näin:
sudo su echo 100 > /sys/class/backlight/rpi_backlight/brightness && exit
Tarkoituksena ei kuitenkaan ole käyttää tähän jatkossa näppistä, vaan haluaisin saada tehtyä työpöydälle pikakuvakkeen tai edes jonkun tiedoston, joka suorittaisi klikkaamalla tuon komennon. Niinpä tein kokeeksi työpöydälle tiedoston "kirkkaus50.sh", jonka sisältö on
#!/bin/bash sudo su | echo 100 > /sys/class/backlight/rpi_backlight/brightness && exit
Annoin tiedostolle suoritusoikeudet (-rwxr-xr-x) ja kokeilin suorittaa sen komennolla
sh kirkkaus.sh
josta tulee varoitus
kirkkaus50.sh: 3: kirkkaus50.sh: cannot create /sys/class/backlight/rpi_backlight/brightness: Permission denied
Sama tulee myös oikeuksilla rwxrwxrwx. Komennolla
sudo sh kirkkaus50.sh && exit
kirkkaus säätyy odotusten mukaisesti, mutta terminaaliin jää käyttäjäksi sudo. Miten tämän säädön saisi toimimaan ilman näppäimistöä?
Mietitäänpä ensin noita nykyisiä versioita:
Ensimmäinen komentosi sudo su
avaa uuden komentorivin, jossa on kirjautuneena root. Tämä on sikäli väärin tehty, että sudo -s
olisi oikea tapa avata uusi komentorivi sudolla. Tässä voit tietysti tehdä sitten mitä tahansa. Komento exit
sulkee kyseisen komentorivin.
Toinen versio on aivan älyvapaa. Ajat uuden komentorivin (sudo su
), jossa ei kuitenkaan tapahdu mitään. Ohjaat putkella tämän tulosteen echo-komennolle. Tulostat echolla tekstin 100
ja ohjaat sen tiedostoon; tämä tapahtuu kaikki sudon ulkopuolella. Lopussa on exit
, jolla ei ole mitään merkitystä, kun tiedostoon tallennettu skripti päättyy tuossa muutenkin.
Asiaan: Olennaista on ymmärtää, että >-merkki ei liity edeltävään komentoon: sudo x > y
sisältää komennon sudo x
ja erikseen ohjauksen > y
. Ymmärrettävästi ei ole paljonkaan hyötyä käyttää pääkäyttäjän oikeuksia luvun 100 tulostamiseen, jos kuitenkin yrittää sitten tallentaa tiedon tavallisen käyttäjän oikeuksilla. Asian pitäisi mennä päinvastoin, eli echo 100
voi olla vaikka ilman sudoa mutta tiedostoon kirjoittaminen vaatii pääkäyttäjän oikeudet.
Hakemasi ratkaisu näyttää siis tältä:
#!/bin/sh sudo sh -c 'echo 100 > /sys/class/backlight/rpi_backlight/brightness'
Tässä siis käynnistetään sudolla uusi komentotulkki, joka ajaa hipsuissa annetun yhden komennon. Halutessasi voit pilkkoa ratkaisun kahteen osaan:
#!/bin/sh echo 100 > /sys/class/backlight/rpi_backlight/brightness
sudo sh yllä-oleva-skripti.sh
Joskus käytetään tee
-ohjelmaa tiedostojen kirjoittamiseen, jotta ei tule noita murheita >-merkin kanssa:
echo 100 | sudo tee /sys/class/backlight/rpi_backlight/brightness
sudo tee /sys/class/backlight/rpi_backlight/brightness <<< 100 >/dev/null
Metabolix kirjoitti:
Hakemasi ratkaisu näyttää siis tältä:
#!/bin/sh sudo sh -c 'echo 100 > /sys/class/backlight/rpi_backlight/brightness'
Kiitoksia, tuo ratkaisi ongelman. Tuli luotettua liikaa sekalaisilla kyseisiin laitteisiin liittyvillä foorumeilla oleviin ohjeisiin.
Aihe on jo aika vanha, joten et voi enää vastata siihen.