當前位置: 首頁>>技術教程>>正文


如何用已經在命令行上輸入了某些文本的終端啟動終端?

, , ,

問題描述

除了讓我重述我的問題外,讓我向您介紹所需的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/zh-tw/article/11580.html,未經允許,請勿轉載。