当前位置: 首页>>技术教程>>正文


如何用已经在命令行上输入了某些文本的终端启动终端?

, , ,

问题描述

除了让我重述我的问题外,让我向您介绍所需的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键并删除它们的开头#来将它们用作编辑的基础。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/11580.html,未经允许,请勿转载。