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的缩写,给前台进程发送中断信号,强制进程终止退出;erase的功能组合键为crtl+?,现在想把erase的组合键设置为crtl+h:
quit : 给前台进程发送quit信号;
erase : 向后删除命令行字符;
kill : 删除命令行上的所有字符;
eof : 为End of file的缩写,表示文件输入的结束;
start : 重新启动被停止stop进程的输出output;
stop : 停止前台进程的屏幕输出;
susp : 发送suspend信号给前台进程,使前台进程进入后台暂停。
[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 :默认不启用。当使用未定义的变量时,会显示错误讯息;$-变量为当前bash已经设置的所有set设置,使用echo命令显示目前所有的set设定值:
-v :默认不启用。在讯息被输出前,会先显示讯息的原始内容;
-x :默认不启用。在命令被执行前,会显示命令内容,前面有++符号;
-h :默认启用。与历史命令有关;
-H :默认启用。与历史命令有关; -m :默认启用。与作业管理有关;
-B :默认启用。与刮号[]的作用有关;
-C :默认不启用。若使用>等,则若文件存在时,该文件不会被覆盖。
[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默认组合键 | |
---|---|
组合键 | 组合键功能意义 |
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