Jawaban:
Anda bisa menggunakan bind -x
untuk mengikat perintah ke pintasan di Bash. Misalnya, untuk mengikat git status
perintah ke Crtl+ ppintas Anda dapat menggunakan:
bind -x '"\C-p":git status'
Masukkan ke dalam ~/.bashrc
file untuk mengingatnya. Dari halaman manual:
-x keyseq: shell-command
Menyebabkan shell-command dieksekusi setiap kali keyseq dimasukkan. Ketika shell-command dieksekusi, shell menetapkan variabel READLINE_LINE ke isi buffer baris Readline dan variabel READLINE_POINT ke lokasi saat ini dari titik penyisipan. Jika perintah yang dieksekusi mengubah nilai READLINE_LINE atau READLINE_POINT, nilai-nilai baru itu akan tercermin dalam keadaan pengeditan.
bind -x '"\C-k":firefox'
Saya menggunakan ini tetapi tidak berhasil
bind
dapat ditemukan di sini: stackoverflow.com/a/4201274/712334
Karena Anda perlu menjaga terminal terbuka setelah perintah dijalankan, meletakkan:
gnome-terminal -e 'bash -c "git status; read line"'
di bawah kombinasi tombol pintas, akan melakukan pekerjaan. Ini akan membuka jendela baru gnome-terminal
dan menjalankan perintah di dalamnya.
Pilih: Pengaturan Sistem> "Keyboard"> "Pintasan"> "Pintasan Khusus". Klik "+" dan tambahkan perintah:
gnome-terminal -e 'bash -c "git status; read line"'
ke Ctrl+Enter
Meskipun pintasan yang disarankan Anda berfungsi, Anda dapat memilih kombinasi tombol lain kemudian Ctrl+ Enter, karena setidaknya bentrok dengan LibreOffice
pintasan untuk melompat ke halaman baru.
Untuk gnome-terminal
membuka jendela baru dari baris perintah, dan menjalankan perintah di dalamnya, Anda dapat menggunakan:
gnome-terminal -e 'bash -c <command>'
Namun, meskipun perintah akan berjalan dengan sukses, jendela terminal akan segera ditutup sebelum Anda dapat membaca hasilnya.
Bagian:
read line
kemudian untuk menjaga terminal terbuka (sampai Anda menekan Enter) setelah perintah dijalankan.
Dengan cara ini, Anda dapat menjalankan perintah (kompleks) apa saja di terminal, tanpa harus segera ditutup:
$ gnome-terminal -e 'bash -c "wmctrl -d; read line"'
akan menampilkan (jika wmctrl
diinstal):
Setelah menekan Enterterminal akan ditutup.
Tentu saja Anda dapat menempatkan satu-liner sederhana di bawah tombol pintas (dengan asumsi Anda telah xdotool
menginstal):
xdotool type "<command>"
Namun ini akan mengetik perintah secara membabi buta , dalam aplikasi apa pun , dan mengetikkan perintah bukanlah pilihan terbersih.
Oleh karena itu, skrip kecil di bawah ini:
gnome-terminal
jendela (dengan pidnya)gnome-terminal
jendela aktif , tekan Return. Karena skrip mengambil perintah yang ditargetkan sebagai argumen, Anda dapat menempatkan beberapa perintah di bawah beberapa pintasan.
#!/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)
Kebutuhan skrip xdotool
sudo apt-get install xdotool
Buat direktori ~/bin
jika belum ada, logout / jalankan atau jalankansource ~/.profile
gterm_keys
(tanpa ekstensi) di ~/bin
, membuatnya dapat dieksekusiSekarang Anda dapat menjalankan perintah apa pun , dari tombol pintas, di gnome-terminal
jendela paling depan dengan menambahkan perintah:
gterm_keys <command>
ke tombol cara pintas, seperti dijelaskan dalam [1]
Jika zsh digunakan sebagai ganti bash, baris berikut ~/.zshrc
diikat git status
ke ALT+ ENTER.
bindkey -s '^[^M' 'git status\n'
Untuk mendapatkan ALT+ ENTERdi Bash, saya menggunakan baris ini:
bind -x '"\e\C-m":git status'
bindkey -s '^[^M' 'git status\n'
yang mengikat ke ALT + ENTER.