一直想通过Bash实现像VI编辑器中那样,按一个键便自行执行某种操作,一个偶然的机会发现stty可以实现。
请先看脚本:
#!/bin/sh # 我们可以通过这个脚本来实现,对按键的自动检测。至于用作什么,大家仁者见仁,智者见智了就,“英雄必有用武之地的”。 # 2009-12-29 13:00:54 update _tty_setting=$(stty -g) stty -icanon stty -echo # We can use c2 arguement to use keyboard shortcut with 2 characters. _key_press=$(head -c1) stty $_tty_setting # 下面是对输入进行判断的部分 # case $_key_press in A) echo -en "我们这里可以替换成我们所要执行的命令字符串1\n" ;; 2) echo -en "我们这里可以替换成我们所要执行的命令字符串2\n" ;; 3) echo -en "我们这里可以替换成我们所要执行的命令字符串3\n" ;; 4) echo -en "我们这里可以替换成我们所要执行的命令字符串4\n" ;; 5) echo -en "我们这里可以替换成我们所要执行的命令字符串5\n" ;; 6) echo -en "我们这里可以替换成我们所要执行的命令字符串6\n" exit 1;; *) echo -en "这里可以替换成脚本的帮助信息相关的命令\n" esac |
附注:
stty是用于显示和修改终端设置的,这个复杂的命令可以用在脚本中,用来控制终端的行为或者显示输出的方法。结合特殊字符以及case或其它条件判断,我们很容易就可以实现像按下Ctrol + F 实现搜索文件。
脚本中stty -g 是用来记录stty的参数,终端修改后在使用完毕后及时复原。
其中stty -echo 这个很常用,常用来用来要求用户输入密码时用。