在 shell 中模拟 ctrl+.. 操作

想给已存在的 screen 会话发送指令(不打开会话窗口),之前手动进行终止程序操作是使用 ctrl + c,但是使用指令终止程序的话试了几种方法都不是很理想。

经过了一番网上冲浪,才找到了下面这篇文章,在指令中用 \003 代替了 Ctrl-C

一般来说,在linux shell中
ctrl-c 是发送 SIGINT 信号,
ctrl-z 是发送 SIGSTOP信号
ctrl-d 不是发送信号,而是表示一个特殊的二进制值,表示 EOF

具体的可以通过stty -a来查看系统配置,如

[admin@user1 ~]$ stty -a

speed 38400 baud; rows 66; columns 252; 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; flush = ^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

常见的几个:
kill -SIGSTOP $pid # 相当于 ctrl-z
kill -SIGCONT $pid # 相当于 fg
kill -SIGINT $pid # 相当于 ctrl-c

在脚本实现可以用
echo -e ‘\00X’ 或 echo $’\00X’ #x表示十六进制数
如:
Ctrl-A 用 \001
Ctrl-B 用 \002
Ctrl-C 用 \003
Ctrl-D 用 \004
… …
Ctrl-Z 用 \032

如,要表示Ctrl-D,可以用
echo -e ‘\004’

转自:http://www.360doc.com/showweb/0/0/913105983.aspx

  • 8
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值