/sys/에서 값을 전환하는 간단하고 우아한 방법

/sys/에서 값을 전환하는 간단하고 우아한 방법

내가 정말로 원하는 것은 NOT과 글쓰기입니다. 내 파일은 다음 중 하나 1입니다 .0

/sys/class/leds/platform::mute/brightness
/sys/class/leds/platform::micmute/brightness

내가 원하는 것은 1을 0으로 변경하고 결과를 파일로 플러시하는 방법입니다. 모듈 작성자가 이를 구현했다면 비슷한 일이 toggle일어날 것입니다.

가장 우아하고 골프와 같은 방법은 무엇입니까?사용자 정의 스크립트를 호출할 필요가 없습니다.?

답변1

일반 기능은 다음과 같습니다.

toggle () { <"$1" tr 01 10 >"$1"; }
# or
toggle () { <"$1" tr 01 10 | tee "$1"; }
# or
toggle () { <"$1" tr 01 10 | sudo tee "$1"; }
# or
toggle () { <"$1" tr 01 10 | sudo tee "$1" >/dev/null; }

(새 값을 보고 싶은지, 사용하고 싶은지 여부에 따라 다름 sudo) 다음과 같이 사용합니다.

toggle /sys/class/leds/platform::mute/brightness

효과적으로 잘릴 수 있는 파일에는 사용하지 마세요.. 하지만 /sys/작동합니다.


이 섹션에서는 더 자세히 설명합니다. 우리는 다음과 같이 /sys/class/leds/*/brightness시작할 수 있습니다.

(cd /sys/class/leds/platform::mute && <brightness tr 01 10 >brightness)

노트:

  • 이것효과적으로 잘릴 수 있는 파일에서는 작동하지 않습니다..
  • sudo필요 하다면 sudo sh -c 'cd /sys/… && <brightness tr 01 10 >brightness'또는그리고tee, 위와 같이. 쉘 기능이 편리할 수 있습니다.

    toggLED () { sudo sh -c 'cd "/sys/class/leds/$1" && <brightness tr 01 10 >brightness' sh "$1"; }
    toggLED platform::mute
    

    또는 와일드카드(및 코드 삽입)를 지원하는 빠르고 더러운 버전:

    toggLED () { sudo sh -c "cd /sys/class/leds/$1 && <brightness tr 01 10 >brightness"; }
    toggLED 'pla*:mute'
    toggLED 'foo; date'   # code injection possible
    
  • 실제로 귀하 chown는 (chmodbrightness다시 시작할 때마다sudo) 비밀번호를 다시 입력 할 필요 없이 :

    sudo chmod a+w /sys/class/leds/*/brightness
    toggLED () ( cd "/sys/class/leds/$1" && <brightness tr 01 10 >brightness )
    toggLED platform::mute
    

    또 다른 옵션은 NOPASSWD에 있습니다 sudoers.

  • 나는 dell::kbd_backlight어디에 있다. 이를 재정의하는 일반적이고 간단한 방법은 다음을 사용하는 것입니다(더 일반화할 수 있음 등). 완전한 사이클의 구체적인 방법은 다음과 같습니다. 완전히 반복하는 일반적인 방법에는 변환을 읽고 조정하는 것이 필요합니다.max_brightness2tr 012 100tr 0123 1000tr 012 120max_brightness

관련 정보