Câu trả lời:
Bạn có thể sử dụng bind -x
để liên kết một lệnh với một phím tắt trong Bash. Ví dụ: để liên kết git status
lệnh với Crtl+ pphím tắt, bạn có thể sử dụng:
bind -x '"\C-p":git status'
Đặt nó vào ~/.bashrc
tập tin để ghi nhớ nó. Từ trang nam:
-x keyseq: lệnh shell
Nguyên nhân lệnh shell được thực thi bất cứ khi nào keyseq được nhập. Khi lệnh shell được thực thi, shell sẽ đặt biến READLINE_LINE thành nội dung của bộ đệm dòng Readline và biến READLINE_POINT thành vị trí hiện tại của điểm chèn. Nếu lệnh được thực thi thay đổi giá trị của READLINE_LINE hoặc READLINE_POINT, những giá trị mới đó sẽ được phản ánh trong trạng thái chỉnh sửa.
bind -x '"\C-k":firefox'
Tôi sử dụng cái này nhưng không hoạt động
bind
có thể được tìm thấy ở đây: stackoverflow.com/a/4201274/712334
Vì bạn cần giữ cho thiết bị đầu cuối mở sau khi lệnh chạy, đặt:
gnome-terminal -e 'bash -c "git status; read line"'
dưới một tổ hợp phím tắt, sẽ thực hiện công việc. Nó sẽ mở một cửa sổ mới gnome-terminal
và chạy lệnh bên trong nó.
Chọn: Cài đặt hệ thống> "Bàn phím"> "Phím tắt"> "Phím tắt tùy chỉnh". Nhấp vào "+" và thêm lệnh:
gnome-terminal -e 'bash -c "git status; read line"'
đến Ctrl+Enter
Mặc dù lối tắt được đề xuất của bạn hoạt động, bạn có thể chọn một tổ hợp phím khác sau đó Ctrl+ Enter, vì ít nhất nó sẽ đụng độ với LibreOffice
phím tắt để chuyển sang một trang mới.
Để gnome-terminal
mở cửa sổ mới từ dòng lệnh và chạy lệnh trong đó, bạn có thể sử dụng:
gnome-terminal -e 'bash -c <command>'
Tuy nhiên, mặc dù lệnh sẽ chạy thành công, cửa sổ terminal sẽ đóng ngay lập tức trước khi bạn có thể đọc đầu ra.
Phần:
read line
là để giữ cho thiết bị đầu cuối mở (cho đến khi bạn nhấn Enter) sau khi lệnh chạy.
Bằng cách này, bạn có thể chạy bất kỳ lệnh (phức tạp) nào trong thiết bị đầu cuối mà không cần phải đóng ngay lập tức:
$ gnome-terminal -e 'bash -c "wmctrl -d; read line"'
sẽ xuất ra (nếu wmctrl
được cài đặt):
Sau khi nhấn Enterthiết bị đầu cuối sẽ đóng lại.
Tất nhiên, bạn có thể đặt một lớp lót đơn giản dưới phím tắt (giả sử bạn đã xdotool
cài đặt):
xdotool type "<command>"
Tuy nhiên, điều này sẽ gõ lệnh một cách mù quáng , trong bất kỳ ứng dụng nào và gõ lệnh không phải là tùy chọn sạch nhất.
Do đó, đoạn script nhỏ bên dưới:
gnome-terminal
cửa sổ (bởi pid của nó)gnome-terminal
cửa sổ đang hoạt động , nhấn Return. Vì tập lệnh lấy lệnh được nhắm mục tiêu làm đối số, bạn có thể đặt nhiều lệnh dưới nhiều phím tắt.
#!/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)
Kịch bản cần xdotool
sudo apt-get cài đặt xdotool
Tạo một dirctory ~/bin
nếu nó chưa tồn tại, đăng xuất / đăng nhập hoặc chạysource ~/.profile
gterm_keys
(không có phần mở rộng) ~/bin
, làm cho nó có thể thực thi đượcBây giờ Bạn có thể chạy bất kỳ lệnh nào , từ phím tắt, trong gnome-terminal
cửa sổ ngoài cùng bằng cách thêm lệnh:
gterm_keys <command>
đến một phím tắt, như được mô tả trong [1]
Trong trường hợp zsh được sử dụng thay cho bash, dòng sau trong ~/.zshrc
liên kết git status
với ALT+ ENTER.
bindkey -s '^[^M' 'git status\n'
Để lấy ALT+ ENTERtrong Bash, tôi sử dụng dòng này:
bind -x '"\e\C-m":git status'
bindkey -s '^[^M' 'git status\n'
liên kết với ALT + ENTER.