首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用bash命令作为自定义快捷方式?

如何使用bash命令作为自定义快捷方式?
EN

Ask Ubuntu用户
提问于 2023-05-07 02:44:50
回答 2查看 70关注 0票数 2

我有一个命令来打开/关闭一个触摸屏(在终端中工作):

代码语言:javascript
复制
param_name=TouchpadOff; touchpadoff_value=$(synclient -l | awk -v param_name=$param_name '$1==param_name {print $(NF)}'); (( tmp_value =  $touchpadoff_value - 1 )); synclient TouchpadOff=${tmp_value#-}

我想把它设为一种定制的捷径。

我尝试使用sh -c

代码语言:javascript
复制
sh -c "param_name=TouchpadOff; touchpadoff_value=$(synclient -l | awk -v param_name=$param_name '$1==param_name {print $(NF)}'); (( tmp_value =  $touchpadoff_value - 1 )); synclient TouchpadOff=${tmp_value#-}"

但是它仍然不能正常工作--它只能打开触屏。

我还试图为变量添加引号("$param_name"),但没有任何改变。

我哪里弄错了?我不想创建任何包含命令的脚本。

EN

回答 2

Ask Ubuntu用户

发布于 2023-05-07 03:01:22

我尝试调试这个命令,所以我创建了一个包含它的脚本,使它可以执行(chmod +x script.sh)并运行调试模式:sh -x script.sh

我得到了:

代码语言:javascript
复制
+ param_name=TouchpadOff
+ synclient -l
+ awk -v param_name=TouchpadOff $1==param_name {print $(NF)}
+ touchpadoff_value=1
+ tmp_value = 1 - 1
mmm: 1: tmp_value: not found
+ synclient TouchpadOff=

注意到数学表达式是个问题。

因此,我将它((( tmp_value = $touchpadoff_value - 1 )))替换为let tmp_value=$touchpadoff_value-1

不幸的是,let不适用于sh,我使用了bash,下面是我作为自定义快捷方式的命令粘贴的工作解决方案:

代码语言:javascript
复制
bash -c "param=TouchpadOff; touchpadoff_value=$(synclient -l | awk -v param_name=$param '$1==param_name {print $(NF)}'); let tmp_value=$touchpadoff_value-1; synclient TouchpadOff=${tmp_value#-}"
票数 2
EN

Ask Ubuntu用户

发布于 2023-05-07 04:09:53

你可以试着做个化名。男子化名,以获得帮助的确切方式。它们可能在:/home//..bashrc中,可能有一个复杂的例子。一个简单的方法是:别名ll='ls -alF‘

票数 0
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1466917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档