问题描述
除了让我重述我的问题外,让我向您介绍所需的user-case:
我创建了一个简短的shell-script来运行命令“ gnome-terminal –someoptionflagname’我要发布的文本’”,然后执行此脚本。
弹出Gnome-terminal,出现命令行提示,后跟我的文字。
即:fields@mycomputer:/$ my text to be posted
能做到吗?
最佳回答
您可以使用expect(install)执行此操作。创建并制作可执行文件~/bin/myprompt
:
#!/usr/bin/expect -f
# Get a Bash shell
spawn -noecho bash
# Wait for a prompt
expect "$ "
# Type something
send "my text to be posted"
# Hand over control to the user
interact
exit
并使用以下命令运行Gnome Terminal:
gnome-terminal -e ~/bin/myprompt
次佳回答
ændrük的建议非常好,并且对我有用,但是该命令在脚本中进行了硬编码,并且如果您调整终端窗口的大小,它将无法正常工作。我以他的代码为基础,添加了向命令提示命令发送myprompt脚本的功能,并且此脚本正确处理了终端窗口的大小调整。
#!/usr/bin/expect
#trap sigwinch and pass it to the child we spawned
#this allows the gnome-terminal window to be resized
trap {
set rows [stty rows]
set cols [stty columns]
stty rows $rows columns $cols < $spawn_out(slave,name)
} WINCH
set arg1 [lindex $argv 0]
# Get a Bash shell
spawn -noecho bash
# Wait for a prompt
expect "$ "
# Type something
send $arg1
# Hand over control to the user
interact
exit
并使用以下命令运行Gnome Terminal:
gnome-terminal -e "~/bin/myprompt \"my text to be posted\""
第三种回答
如果我理解正确,那么您希望您的第一条输入行被预填充为在gnome-terminal命令行上传递的内容。
我不知道如何使用bash完全做到这一点,但是这很接近。在~/.bashrc
的最后,添加以下行:
history -s "$BASH_INITIAL_COMMAND"
运行gnome-terminal -x env BASH_INITIAL_COMMAND='my text to be posted' bash
,并在提示符下按Up
来调用文本。
还要注意,如果在.bashrc
的末尾放置set -o history
,然后加上注释,则它们将在bash开始时被输入到历史记录中,因此您可以通过按Up
键并删除它们的开头#
来将它们用作编辑的基础。