linux bash控制终端环境设置


bash控制终端环境设置:stty和set

回到顶部

bash前台进程就是系统前台进程,但是bash后台进程不一定是系统后台进程。
在bash环境下有很多的按键功能,例如退格键backspace可以删除命令行上的字符,ctrl+c可以强制终止前台进程。 使用stty命令即可查看当前bash终端各种按键的功能,也可以使用stty重新设置按键功能意义。 stty为setting tty的缩写:

              [peter@study ~]$ stty [-a]
            
-a选项可以列出当前控制终端所有的信息。
列出当前bash控制终端所有的按键信息:
              [peter@study ~]$ stty -a
              speed 38400 baud; rows 35; columns 80; line = 0;
              intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
              eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
              werase = ^W; lnext = ^V; discard = ^O; min = 1; time = 0;
              -parenb -parodd -cmspar cs8 -hupcl -cstopb cread -clocal -crtscts
              -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel iutf8
              opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
              isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke -flusho -extproc
            
上面输出中的^表示Ctrl键。几个重要的组合键意义如下:
intr : 为interrupt的缩写,给前台进程发送中断信号,强制进程终止退出;
quit : 给前台进程发送quit信号;
erase : 向后删除命令行字符;
kill : 删除命令行上的所有字符;
eof : 为End of file的缩写,表示文件输入的结束;
start : 重新启动被停止stop进程的输出output;
stop : 停止前台进程的屏幕输出;
susp : 发送suspend信号给前台进程,使前台进程进入后台暂停。
erase的功能组合键为crtl+?,现在想把erase的组合键设置为crtl+h:
              [peter@study ~]$ stty erase ^h
            
这样设置后,在命令行删除字符就得使用ctrl+h,按下backspace则会出现^?字样! 恢复利用backspace,就下达stty erase ^?即可! 更多stty的说明可以参考man stty!

在windows环境下,很多软件默认的储存快捷键是crtl+s,如果你经常在Windows和Linux之间切换, 那么在Linux环境下使用vim时,想要保存文件的时候可能会习惯的按下crtl+s!在linux下ctrl+s其实是stop的意思, 这样vim进程就被暂停停止了,无论怎么操作都不会有任何反应,这时我们就可以按下crtl+q让vim进程重新start!
除了利用stty设置控制终端环境外,bash也有自己的一些终端设定值!那就是利用set来设定的! 我们之前提到一些变量时,可以利用set来显示,除此之外,其实set还可以帮我们设定整个命令输出/输入的环境。 例如记录历史命令、显示错误内容等等。

              [peter@study ~]$ set [-uvCHhmBx]
            
选项与参数:
-u :默认不启用。当使用未定义的变量时,会显示错误讯息;
-v :默认不启用。在讯息被输出前,会先显示讯息的原始内容;
-x :默认不启用。在命令被执行前,会显示命令内容,前面有++符号;
-h :默认启用。与历史命令有关;
-H :默认启用。与历史命令有关; -m :默认启用。与作业管理有关;
-B :默认启用。与刮号[]的作用有关;
-C :默认不启用。若使用>等,则若文件存在时,该文件不会被覆盖。
$-变量为当前bash已经设置的所有set设置,使用echo命令显示目前所有的set设定值:
              [peter@study ~]$ echo $-
              himBH
            
可以看到当前bash默认的设置为himBH!
设定bash"若使用未定义变量时,则显示错误讯息":
              [peter@study ~]$ set -u
              [peter@study ~]$ echo $petering
              -bash: petering: unbound variable
            
很多shell都会默认开启该选项,这样如果变量为未定义变量时,bash就会提示错误信息。
输入set +u即可取消该设置!

执行前,显示该命令内容。

              [peter@study ~]$ set -x
              [peter@study ~]$ echo $HOME
              + echo /home/peter
              /home/peter
            
这样设置后,在命令执行之前,bash会先将命令输出到屏幕,前面会有+符号!

其实还有其他的按键设定功能呢!可以在/etc/inputrc文件中设定,还有/etc/DIR_COLORS*与/usr/share/terminfo/*文件等,也都是与终端有关的环境配置文件!
事实上,并不建议修改控制终端tty的环境呢,因为bash的环境已经设定的很亲和了,我们不需要额外的设定或者修改,否则反而会产生一些麻烦。 这里只是向大家介绍控制终端tty是如何进行设置的!

bash默认的组合键汇总如下:

bash默认组合键
bash默认组合键
组合键 组合键功能意义
Ctrl + C intr,为interrupt的缩写,给前台进程发送中断信号,强制当前进程终止退出
Ctrl + D 输入结束EOF,为End of file的缩写,表示文件输入的结束;
Ctrl + M 相当于Enter键!
Ctrl + S stop,暂停屏幕的输出,停止前台进程的屏幕输出;
Ctrl + Q start,重新启动被停止stop进程的输出output,恢复屏幕的输出
Ctrl + U kill,删除命令行上的所有字符;
Ctrl + Z susp,发送suspend信号给前台进程,使前台进程进入后台暂停。暂停目前的命令
Ctrl + ? erase,相当于backspace键,向后删除命令行字符;

initroot编辑整理,转载请注明www.initroot.com

100次点赞 100次阅读