Jas*_*per 8 command-line bash scripts
出于某种原因,当我插入或拔出电源时,我的笔记本电脑的屏幕亮度没有更新。我已经为这个问题研究了很多解决方案,但似乎没有一个能很好地工作。因此,与其绝望和放弃,我决定尝试将其转变为一种学习体验,看看我是否能写出适合我的脚本。
当然,我尝试在互联网的帮助下自己解决这个问题,但我对 bash 脚本和 Ubuntu 总体而言还是很陌生,所以我没有走多远。
我能弄清楚的是,我能找到电池的状态与
$ upower -i /org/freedesktop/UPower/devices/battery_BAT1 | grep -E "state"
state: charging/discharging
Run Code Online (Sandbox Code Playgroud)
就看有没有插上AC适配器了。不知道有没有用,不过挺爽的,之前不知道怎么用grep,怎么回事,学习挺好玩的。
无论如何,有没有一种干净的方法来做到这一点?我所说的“干净的方式”只是指 bash 脚本经验有限的人可以理解的一种方式。
我发现有一个很好的答案的类似问题是this one,它说明了以下内容:
当您插入/拔出 AC 适配器时,将
/etc/pm/power.d使用 >an 参数调用脚本:“true”(如果您使用电池运行)或“false”(如果您使用电源 > 适配器运行)。
问题是我不知道如何从脚本中访问该参数。所以,我想这一切都归结为一个非常简单的问题,但我想无论如何我都会发布这个问题,以防人们有更好的解决方案。
您可以用来on_ac_power在电源打开或关闭时运行脚本。
在终端中尝试以下操作。
$ on_ac_power
$ echo $?
0 ## Laptop on ac power
$ on_ac_power
$ echo $?
1 ## Laptop on battery (not on ac power)
Run Code Online (Sandbox Code Playgroud)
基于此,您可以将脚本制作为,
$ on_ac_power
$ echo $?
0 ## Laptop on ac power
$ on_ac_power
$ echo $?
1 ## Laptop on battery (not on ac power)
Run Code Online (Sandbox Code Playgroud)
编辑:
cron job 定期运行脚本而不是使用无限循环会是一个更好的主意。
将您的脚本另存为myscript.sh并将以下内容放入其中,
#!/bin/bash
if on_ac_power; then
do_something
else
do_something_else
fi
Run Code Online (Sandbox Code Playgroud)
使脚本从终端可执行,chmod +x /path/to/myscript.sh. 打开您的个人crontab身份EDITOR=gedit crontab -e并在其中附加以下行以每分钟运行您的脚本。
* * * * * /path/to/myscript.sh
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5249 次 |
| 最近记录: |