如何在bash脚本中输入键盘快捷键

如何在bash脚本中输入键盘快捷键,bash,Bash,可以在bash脚本中输入键盘快捷键吗?例如,我尝试键入^d来代替control+d(注销),但没有成功 ubuntu@vfleet:~$ ^d -bash: :s^d: substitution failed ubuntu@vfleet:~$ ^D -bash: :s^D: substitution failed 我正在使用在后台运行django开发服务器。作为守护进程运行特定屏幕的命令之一是control+a+d。目标是能够在bash脚本中输入control+a+d。例如: python m

可以在bash脚本中输入键盘快捷键吗?例如,我尝试键入
^d
来代替control+d(注销),但没有成功

ubuntu@vfleet:~$ ^d
-bash: :s^d: substitution failed
ubuntu@vfleet:~$ ^D
-bash: :s^D: substitution failed
我正在使用在后台运行django开发服务器。作为守护进程运行特定屏幕的命令之一是control+a+d。目标是能够在bash脚本中输入control+a+d。例如:

python manage.py runserver
^a + d
这可能吗

编辑:
Eric Renouf在下面的评论中链接了一种有效的避免屏幕中出现键盘快捷键的方法
screen-d-msh-c“python manage.py runserver”
将作为守护进程启动开发服务器。对于我的特定问题,这是一个很好的解决方案,但如果手头有一个原始问题的解决方案,那就太好了。

您可能应该首先启动命令,而不附加到屏幕会话,如

screen -d -m python manage.py runserver
但是,如果由于某种原因无法执行此操作,您可以通过执行以下操作从当前的屏幕会话中分离:

screen -S "$STY" -X detach
screen
将其当前会话信息保存在
STY
中,因此我们将使用它来确保与正确的会话进行交互(如果有很多会话)。然后我们将使用
-X
向该会话发送命令,在这种情况下,我们的命令将是
detach
,它将分离所有连接的会话,包括用于执行该命令的会话

因此,虽然这实际上并不发送关键点笔划,但它确实强调了通常可以发送另一个命令来实现您的目标。这里,
detach
取代了ctrl+a+d。发送
quit
或运行
exit
通常可以取代ctrl+d


另一种解决方法是使用
expect
,然后可以使用它发送包含控制字符或十六进制值的字符串。

大约2年后
xdool
package就是这里的解决方案

xdotool key ctrl+d

如果您只是想在屏幕会话中启动某些内容,您可以在一开始就不附加任何内容。例如,您的需求是:每次服务器/机器重新启动时,您都需要启动django-dev服务器。如果这是您的要求,我确实有一个答案。我如何运行
ctrl
+
a
+
[
?它的给定错误。错误:无效的键序列
ctrl+a+[