Comando personalizado - um a menos que o nível de brilho atual

1

Eu tentei usar o xbacklight, mas ele não estava funcionando, então fiz alguns comandos globais personalizados para controlar o brilho. Por exemplo:

"Brilhante":

sudo bash -c "echo 20 > /sys/class/backlight/acpi_video0/brightness"

"Mid":

sudo bash -c "echo 10 > /sys/class/backlight/acpi_video0/brightness"

"Escuro":

sudo bash -c "echo 0 > /sys/class/backlight/acpi_video0/brightness"

Eu quero fazer mais dois comandos, um que aumentará o brilho em um e outro que diminuirá o brilho em um.

Existe algum código que eu possa usar no lugar de 'echo' NUMBER "'que diminuirá / aumentará o valor atual em um.

Eu sei que o nível de brilho atual é o documento: / sys / class / backlight / acpi_video0 / brightness que atualmente lê "20" e muda ao usar os comandos de brilho.

Eu não tenho ideia de como seria esse comando, mas algo como

sudo bash -c "echo [ONE LESS THAN] /sys/class/backlight/acpi_video0/brightness > /sys/class/backlight/acpi_video0/brightness" 

Eu não sei se isso é possível, mas obrigado por qualquer ajuda.

Atualizar

Qual é o uso correto?

Quando eu executo "sudo ./brightness.sh +1", ele gera:

Usage:
sudo brightness.sh [ + | - | INTEGER ]
./brightness.sh: 10: [: +: unexpected operator
./brightness.sh: 23: [: +: unexpected operator
./brightness.sh: 38: ./brightness.sh: [[: not found
<<< ERROR: wrong parameter 
./brightness.sh: 44: ./brightness.sh: printUsage: not found

e quando eu executo "sudo bash brightness.sh +1" ele gera:

Usage:
sudo brightness.sh [ + | - | INTEGER ]
brightness.sh: line 27: [: -1: unary operator expected
brightness.sh: line 34: : No such file or directory
    
por Carter Roeser 31.12.2015 / 21:00

1 resposta

3

Por que não criar um comando que aumentará em um ou diminuirá em um baseado nas opções que você passar para ele? Essa é a ideia básica por trás do roteiro que você verá abaixo. Nós armazenamos o valor atual em CURRENT variable, então usamos bash da expansão aritmética de $(( numberA + numberB )) para aumentar ou diminuir em um. Quanto à tomada de decisão, chamamos o script com o argumento de linha de comando único + para aumentar ou - para diminuir.

Por sugestão do muru nos comentários, eu também fiz uma pequena edição no código, que agora permite que você chame brightness.sh com um parâmetro inteiro menor ou igual ao brilho máximo

#!/bin/bash

###########
# Variables
###########
FILE="/sys/class/backlight/acpi_video0/brightness"
MAX="$(cat /sys/class/backlight/acpi_video0/max_brightness)"
MIN=0
CURRENT="$( cat  $FILE )"

###########
# functions
###########

function printUsage
{
  echo "Usage:"
  echo "sudo brightness.sh [ + | - | INTEGER ]"
}

######
# Main
######


if [ $# -eq 0  ];
then
   printUsage
   exit 0
fi


if [ "" == "+" ];
then
   NEW=$(( $CURRENT+1  ))
   # are we trying to go past maximum value ? If yes, quit
   if [ $NEW -ge $MAX  ]
   then 
       echo ">>> ERROR: Current value already the maximum; "
       echo ">>> Exiting"
       exit 1
   fi
   # if not, then proceed
   echo "$NEW" > "$FILE"

elif [ "" == "-"  ];
then
   NEW=$(( $CURRENT-1  ))
   # Is NEW value going past 0 ? If yes, quit
   if [ $NEW -le $MIN ]; 
   then
       echo ">>> Error: already at minimum. "
       echo ">>> Exiting."
       exit 1
    fi
    # If not, then continue
    echo "$NEW" >  "$FILE"

# Note: new test w/ regex; for portability
# probably better idea to use awk
elif [[ "" =~ ^[0-9]+$ ]] && [  -le $MAX   ];
then
    echo "" > "$FILE"

else
    echo "<<< ERROR: wrong parameter "
    printUsage
    exit 1
fi
    
por Sergiy Kolodyazhnyy 31.12.2015 / 21:19