Làm cách nào tôi có thể thực thi tập lệnh trong Shell khi nhấn phím tắt.
Về cơ bản, điều tôi cần là khi nhấn phím tắt, tập lệnh sẽ đọc từ tệp và hiển thị nội dung đó trong thiết bị đầu cuối.
Làm cách nào tôi có thể thực thi tập lệnh trong Shell khi nhấn phím tắt.
Về cơ bản, điều tôi cần là khi nhấn phím tắt, tập lệnh sẽ đọc từ tệp và hiển thị nội dung đó trong thiết bị đầu cuối.
Câu trả lời:
Bạn có thể sử dụng lệnh dựng sẵn, bind
để ánh xạ một phím tắt để nó thực thi một tập lệnh / shell.
Nói rằng chúng tôi muốn chạy lệnh pwd
, khi chúng tôi nhấn F12phím.
$ bind '"\e[24~":"pwd\n"'
Bây giờ khi tôi nhấn F12vào dấu nhắc của mình , $
:
$ pwd
/home/saml
Bạn có thể sử dụng kỹ thuật sau để xác định mã thoát cho một phím tắt cụ thể. Trên hầu hết các hệ thống, nhấn Ctrl+ V, nhả, rồi nhấn phím bạn muốn mã. Có một số hệ thống khác nó sẽ làm việc với Mthay vìV
Nhấn Ctrl+ Vsau đó nhả cả hai Ctrlvà Vcuối cùng nhấn F12trong cửa sổ terminal sẽ trả về điều này:
$ ^[[24~
Đầu ra này có thể được hiểu như sau, ^[
là Escchìa khóa. Vì vậy, khi chúng ta muốn chỉ định khóa cụ thể này bằng bind
lệnh, chúng ta cần sử dụng a \e
để biểu thị Esckhóa theo sau là mọi thứ khác ở trên. Vì vậy, bind
lệnh trông như thế này:
$ bind '"\e[24~":"....."'
Bạn cũng có thể sử dụng bind -x
để thiết lập các phím tắt sẽ chạy các lệnh trong khi bạn đang gõ một cái gì đó tại dấu nhắc và đầu ra của các lệnh này sẽ được hiển thị, nhưng những gì bạn đã gõ tại dấu nhắc sẽ vẫn còn nguyên.
$ bind -x '"\eW":"..."'
LƯU Ý: Phương pháp này chỉ hoạt động với các phím tắt tạo ra 1 ký tự, vì vậy F12sẽ không hoạt động ở đây.
Hãy đặt bí danh cho phím tắt Alt+ Shift+ W.
$ bind -x '"\eW":"who"'
Nói rằng tôi đang gõ lệnh finger
:
$ finger
Bây giờ tôi nhấn phím tắt Alt+ Shift+ W:
saml tty1 2013-09-01 11:01 (:0)
saml pts/0 2013-09-01 11:03 (:0.0)
saml pts/1 2013-09-01 11:05 (:0.0)
saml pts/2 2013-09-01 11:05 (:0.0)
saml pts/5 2013-09-03 22:45 (:0.0)
$ finger
Những gì đang diễn ra là bind
đang chạy lệnh được xác định who
, lấy đầu ra của nó và chèn nó vào trước dấu nhắc. Nếu bạn lặp lại, bạn sẽ thấy những gì đang diễn ra, đây là đầu ra từ tôi nhấn nó 2 lần:
saml tty1 2013-09-01 11:01 (:0)
saml pts/0 2013-09-01 11:03 (:0.0)
saml pts/1 2013-09-01 11:05 (:0.0)
saml pts/2 2013-09-01 11:05 (:0.0)
saml pts/5 2013-09-03 22:45 (:0.0)
saml tty1 2013-09-01 11:01 (:0)
saml pts/0 2013-09-01 11:03 (:0.0)
saml pts/1 2013-09-01 11:05 (:0.0)
saml pts/2 2013-09-01 11:05 (:0.0)
saml pts/5 2013-09-03 22:45 (:0.0)
$ finger
Vì vậy, một ý tưởng sẽ là sử dụng bind -x
phương pháp trên và cat
hiển thị tệp văn bản này theo lời nhắc của bạn:
$ bind -x '"\eW":"cat someinfo.txt"'
Bây giờ khi tôi chạy các lệnh tôi có thể thấy tệp này như vậy:
This is text from some
multi-line file reminding
me how to do some
stuff
$ finger
Đầu ra của tập tin someinfo.txt
đang được hiển thị trên finger
lệnh của tôi ở trên.
echo '
(khoảng trắng sau trích dẫn đơn), sau đó nhấn Ctrl + v, sau đó chọn phím bạn muốn, rồi dấu cách, trích dẫn đơn ... như được mô tả ở đây . Ví dụ:echo ' ^[OD '
bind '"\e[24~":"airmon-ng start wlan0\n"'
nhưng sau khi tôi đóng thiết bị đầu cuối, mọi thứ dường như được đặt lại và tất cả các phím nóng đã biến mất