#!/usr/bin/env python3
import subprocess
import sys
import time
app = "gnome-terminal"
s = (" ").join(sys.argv[1:])
def get(cmd):
return subprocess.check_output(cmd).decode("utf-8").strip()
def front(app):
try:
# see if gnome-terminal is running at all (raising error if not)
app = get(["pgrep", app])
except subprocess.CalledProcessError:
app = False
if app:
# if so, see if the active window belongs to gnome-terminal comparing pids)
active = get(["xdotool", "getwindowpid", get(["xdotool", "getactivewindow"])])
return True if app == active else False
if front(app):
# copy command to clipboard
cm1 = ["/bin/bash", "-c", 'printf "'+s+'" | xclip -selection clipboard']
# paste in terminal window
cm2 = ["xdotool", "key", "Control_L+Shift_L+v"]
# press return
cm3 = ["xdotool", "key", "Return"]
for cm in [cm1, cm2, cm3]:
subprocess.call(cm)
如何使用
脚本需要xdotool
sudo apt-get install xdotool
如果目录尚不存在,则创建一个目录~/bin,注销/登录或运行source ~/.profile
将上面的脚本复制到一个空文件中,将其另存为gterm_keys(无扩展名) in ~/bin,并使其可执行
您可以使用
bind -x
将命令绑定到 Bash 中的快捷方式。例如,要将git status
命令绑定到Crtl+p快捷方式,您可以使用:将其放入
~/.bashrc
文件以记住它。从手册页:1.自动打开一个新的终端窗口,显示你的命令输出
由于您需要在命令运行后保持终端打开,因此输入:
在快捷键组合下,将完成这项工作。它将打开一个新
gnome-terminal
窗口并在其中运行命令。将其添加到快捷方式
选择:系统设置>“键盘”>“快捷方式”>“自定义快捷方式”。单击“+”并添加命令:
到Ctrl+Enter
笔记
尽管您建议的快捷方式有效,但您可以选择另一个组合键然后Ctrl+ Enter,因为它至少
LibreOffice
与跳转到新页面的快捷方式发生冲突。解释
要
gnome-terminal
从命令行打开一个新窗口并在其中运行命令,您可以使用:但是,尽管命令会成功运行,但终端窗口会在您阅读输出之前立即关闭。
这部分:
Enter然后是在命令运行后保持终端打开(直到你点击)。
其他命令
这样,您可以在终端中运行任何(复杂)命令,而无需立即关闭它:
将输出(如果
wmctrl
已安装):按下Enter终端后将关闭。
2. 在当前活动的 gnome-terminal 窗口中运行命令
当然,您可以在快捷键下放置一个简单的单行(假设您已经
xdotool
安装):然而,这会在任何应用程序中盲目地键入命令,并且键入命令不是最干净的选项。
因此,下面的小脚本:
gnome-terminal
窗口(通过它的 pid)gnome-terminal
窗口中,然后按Return。如果没有,脚本什么也不做,所以它不会粘贴到其他应用程序中。
由于脚本将目标命令作为参数,因此您可以将多个命令放在多个快捷方式下。
剧本
如何使用
脚本需要
xdotool
sudo apt-get install xdotool
如果目录尚不存在,则创建一个目录
~/bin
,注销/登录或运行source ~/.profile
gterm_keys
(无扩展名) in~/bin
,并使其可执行现在,您可以通过添加命令在最前面的窗口中使用快捷键运行任何命令:
gnome-terminal
到快捷键,如中所述
[1]
如果使用 zsh 而不是 bash,则以下行将
~/.zshrc
绑定git status
到ALT+ ENTER。要在 Bash 中获得ALT+ ,我使用这一行:ENTER