回答:
bind -x
Bashのコマンドをショートカットにバインドするために使用できます。たとえば、git status
コマンドをCrtl+ pショートカットにバインドするには、次を使用できます。
bind -x '"\C-p":git status'
それ~/.bashrc
を覚えておくためにファイルに入れてください。manページから:
-x keyseq:shell-command
keyseqが入力されるたびにシェルコマンドが実行されるようにします。shell-commandが実行されると、シェルはREADLINE_LINE変数をReadline行バッファーの内容に設定し、READLINE_POINT変数を挿入ポイントの現在の位置に設定します。実行されたコマンドがREADLINE_LINEまたはREADLINE_POINTの値を変更すると、それらの新しい値が編集状態に反映されます。
bind -x '"\C-k":firefox'
私はこれを使用しますが機能しません
bind
ここで見つけることができます:stackoverflow.com/a/4201274/712334
コマンドの実行後、ターミナルを開いたままにする必要があるため、次のように入力します。
gnome-terminal -e 'bash -c "git status; read line"'
ショートカットキーの組み合わせの下で、仕事をします。新しい gnome-terminal
ウィンドウを開き、その中でコマンドを実行します。
[システム設定]> [キーボード]> [ショートカット]> [カスタムショートカット]を選択します。「+」をクリックして、コマンドを追加します。
gnome-terminal -e 'bash -c "git status; read line"'
Ctrl+Enter
推奨されるショートカットは機能しますが、少なくとも新しいページにジャンプするためのショートカットと衝突するため、別のキーの組み合わせCtrl+を選択できます。EnterLibreOffice
gnome-terminal
コマンドラインから新しいウィンドウを開いて、そのウィンドウでコマンドを実行するには、次を使用できます。
gnome-terminal -e 'bash -c <command>'
ただし、コマンドは正常に実行されますが、出力を読み取る前にターミナルウィンドウがすぐに閉じます。
セクション:
read line
次にEnter、コマンドの実行後(ヒットするまで)ターミナルを開いたままにします。
これにより、ターミナルで(複雑な)コマンドをすぐに実行せずに実行できます。
$ gnome-terminal -e 'bash -c "wmctrl -d; read line"'
出力wmctrl
されます(インストールされている場合):
Enter端末を押すと閉じます。
もちろん、あなたは可能性が(あなたがしていると仮定すると、ショートカットキーの下に簡単なワンライナーを置くxdotool
インストール):
xdotool type "<command>"
ただし、これはどのアプリケーションでもコマンドを盲目的に入力し、コマンドを入力することは最もクリーンなオプションではありません。
したがって、以下の小さなスクリプト:
gnome-terminal
ます(そのpidによる)gnome-terminal
、を押しReturnます。スクリプトはターゲットのコマンドを引数として取るため、複数のショートカットの下に複数のコマンドを配置できます。
#!/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
(拡張子なし)として保存し~/bin
、実行可能にしますこれで、コマンドを追加して、最前面のウィンドウでショートカットキーから任意のコマンドを実行できますgnome-terminal
。
gterm_keys <command>
ショートカットキーに [1]
bashの代わりにzshを使用する場合、次の行は+ に~/.zshrc
バインドgit status
します。ALTENTER
bindkey -s '^[^M' 'git status\n'
BashでALT+ を取得ENTERするには、次の行を使用します。
bind -x '"\e\C-m":git status'
bindkey -s '^[^M' 'git status\n'
Alt + Enterにバインドします。