"shell function" 或 "alias" 是否适合此用途
Would a "shell function" or "alias" be appropriate for this use
我目前正在尝试创建一个别名或 shell 功能,我可以 运行 检查我的电池寿命,以尝试熟悉别名和 bash。我 运行 遇到了一个问题,我没有从我的命令中收到任何反馈,也无法验证它是否有效,或者我是否遗漏了任何可以给我想要的结果的步骤。
当前 .bashrc
别名:
alias battery='upower -i $(upower -e | grep -e 'BAT'| grep -E "state|to\ full|percentage")'
预期用途:
b@localhost:~$ battery
想要的结果:
state: discharging Time to empty: x.x Hours percentage: xx%
我已经阅读了 bash 参考资料,可能对我有帮助。我找不到任何我认为适用于此的内容。感谢您的考虑!
正如@bannji 在评论中宣布的那样,他已经修复了他的命令。
旧的错误别名
'upower -i $(upower -e | grep -e 'BAT'| grep -E "state|to\ full|percentage")'
新的正确别名
'upower -i $(upower -e | grep -e "BAT") | grep -E "state|to\ full|percentage"'
大多数评论都在谈论引语的解释。那不是这里的问题。主要区别在于关闭子命令的位置。在第一种情况下,子命令在最后一个 grep
之后关闭,su upower -i
什么也得不到。
在第二个命令中,第二个 grep
将过滤 upower -i
的输出。
引号的不同在另一个例子中很有趣。
addone() {
((sum=+1))
echo "${sum}"
}
i=1
alias battery='addone $(addone $i)'
i=4
battery
# other alias
i=1
alias battery2='addone $(addone '$i')'
i=4
battery2
两个电池命令都会尝试将 $i
的值加 2,但会给出不同的结果。
命令 battery
会将 2 添加到 $i
的当前值 4,结果是 6.
命令 battery2
将在定义别名时将 2 添加到 $i
的值,结果为 3.
为什么?
在 battery2 中,字符串 $i
被单引号包围,但这些单引号位于其他单引号内。结果是 $i
被评估,别名被定义为
alias battery2='addone $(addone 2)'
我目前正在尝试创建一个别名或 shell 功能,我可以 运行 检查我的电池寿命,以尝试熟悉别名和 bash。我 运行 遇到了一个问题,我没有从我的命令中收到任何反馈,也无法验证它是否有效,或者我是否遗漏了任何可以给我想要的结果的步骤。
当前 .bashrc
别名:
alias battery='upower -i $(upower -e | grep -e 'BAT'| grep -E "state|to\ full|percentage")'
预期用途:
b@localhost:~$ battery
想要的结果:
state: discharging Time to empty: x.x Hours percentage: xx%
我已经阅读了 bash 参考资料,可能对我有帮助。我找不到任何我认为适用于此的内容。感谢您的考虑!
正如@bannji 在评论中宣布的那样,他已经修复了他的命令。
旧的错误别名
'upower -i $(upower -e | grep -e 'BAT'| grep -E "state|to\ full|percentage")'
新的正确别名
'upower -i $(upower -e | grep -e "BAT") | grep -E "state|to\ full|percentage"'
大多数评论都在谈论引语的解释。那不是这里的问题。主要区别在于关闭子命令的位置。在第一种情况下,子命令在最后一个 grep
之后关闭,su upower -i
什么也得不到。
在第二个命令中,第二个 grep
将过滤 upower -i
的输出。
引号的不同在另一个例子中很有趣。
addone() {
((sum=+1))
echo "${sum}"
}
i=1
alias battery='addone $(addone $i)'
i=4
battery
# other alias
i=1
alias battery2='addone $(addone '$i')'
i=4
battery2
两个电池命令都会尝试将 $i
的值加 2,但会给出不同的结果。
命令 battery
会将 2 添加到 $i
的当前值 4,结果是 6.
命令 battery2
将在定义别名时将 2 添加到 $i
的值,结果为 3.
为什么?
在 battery2 中,字符串 $i
被单引号包围,但这些单引号位于其他单引号内。结果是 $i
被评估,别名被定义为
alias battery2='addone $(addone 2)'