Por que não posso usar echo $1 > /sys/class/backlight/acpi_video0/brightness
em um script bash simples?
Isso me dá o erro: echo: write error: Invalid argument
.
Por que não posso usar echo $1 > /sys/class/backlight/acpi_video0/brightness
em um script bash simples?
Isso me dá o erro: echo: write error: Invalid argument
.
Respostas:
Você deve verificar qual é o valor real de $1
é. Esse erro significa que você está tentando gravar um valor inválido - está fora do intervalo ou, em geral, não é um valor significativo.
De relance, parece que aceita um inteiro no intervalo de 0 a 8 (pelo menos para mim).
Esse arquivo é um arquivo especial. Não pode ser escrito se o que está escrito não é apenas um número. Se você tentar escrever um número com echo
, você receberá um caractere de nova linha no final. echo -n
resolve o problema.
EDITAR: Além disso, você pode ter o problema que eu acabei de ter; que você precisa ser root e sudo
não vai ajudá-lo por qualquer motivo, tornando muito tedioso digitar su
; & lt; seu comando & gt ;; exit
o tempo todo. Para isso eu fiz um script python (excessivamente ambicioso):
#!/usr/bin/python
from sys import *
PATH = "/sys/class/backlight/intel_backlight/brightness"
if len(argv) != 2:
print("Usage: bright.py <brightness>")
exit()
try:
brightness = int(argv[1])
if not 0 <= brightness <= 825:
raise Exception()
except:
print("<brightness> must be an integer between 0 and 825.")
exit()
if brightness == 0:
readString = raw_input("A value of 0 will turn off your screen. Are you sure you want to continue? [y/N] ")
if readString != "y":
exit()
elif brightness <= 5:
with open(PATH, "r") as f:
oldBrightness = int(f.read())
if brightness < oldBrightness:
readString = raw_input("A value of %i will make your screen very dark. Are you sure you want to continue? [y/N] " % brightness)
if readString != "y":
exit()
try:
with open(PATH, "w") as f:
f.write(str(brightness))
except:
print("Failed to write to file. Are you root?")
exit()
function brightness { bright=$1; sudo su -c 'echo "$bright" > /sys/class/backlight/acpi_video0/brightness'; }
também, mas eu ainda não descobri.