Bagaimana saya bisa menjalankan skrip di Shell ketika tombol pintasan ditekan.
Pada dasarnya yang saya butuhkan adalah ketika tombol pintasan ditekan, skrip harus membaca dari file dan menampilkan konten itu di terminal.
Jawaban yang Diterima:
Anda dapat menggunakan perintah bawaan, bind
untuk memetakan pintasan keyboard sehingga mengeksekusi perintah/skrip shell.
Contoh
Katakanlah kita ingin menjalankan perintah, pwd
, saat kita menekan tombol F12 kunci.
$ bind '"\e[24~":"pwd\n"'
Sekarang ketika saya menekan F12 di prompt saya, $
:
$ pwd
/home/saml
Menentukan pintasan keyboard
Anda dapat menggunakan teknik berikut untuk menentukan kode escape untuk pintasan keyboard yang diberikan. Pada sebagian besar sistem, tekan Ctrl + V , lepaskan, lalu tekan tombol yang Anda inginkan kodenya. Ada beberapa sistem lain yang akan bekerja dengan M bukannya V
Contoh
Menekan Ctrl + V lalu lepaskan keduanya Ctrl dan V dan terakhir tekan F12 di jendela terminal mengembalikan ini:
$ ^[[24~
Output ini dapat diartikan sebagai berikut, ^[
adalah Esc kunci. Jadi ketika kita ingin menentukan kunci khusus ini menggunakan bind
perintah kita perlu menggunakan \e
untuk menunjukkan Esc kunci diikuti oleh yang lainnya dari atas. Jadi bind
perintahnya seperti ini:
$ bind '"\e[24~":"....."'
Menjalankan perintah di tengah
Anda juga dapat menggunakan bind -x
untuk menyiapkan pintasan keyboard yang akan menjalankan perintah saat Anda sedang mengetik sesuatu saat diminta, dan output perintah ini akan ditampilkan, tetapi apa pun yang Anda ketikkan saat diminta akan tetap utuh.
$ bind -x '"\eW":"..."'
CATATAN: Metode ini hanya berfungsi dengan pintasan keyboard yang menghasilkan 1 karakter, jadi F12 tidak akan berfungsi di sini.
Contoh
Mari kita alias pintasan keyboard Alt + Bergeser + W .
$ bind -x '"\eW":"who"'
Katakanlah saya sedang mengetik perintah finger
:
$ finger
Sekarang saya menekan pintasan keyboard Alt + Bergeser + 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
Apa yang terjadi adalah bind
sedang menjalankan perintah yang ditentukan, who
, mengambil outputnya dan memasukkannya di depan prompt. Jika Anda mengulanginya, Anda akan melihat apa yang terjadi, inilah output dari saya yang memukulnya 2 kali:
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
Masalah Anda
Jadi satu ide adalah menggunakan bind -x
metode di atas dan cat
untuk menampilkan file teks ini pada prompt Anda:
$ bind -x '"\eW":"cat someinfo.txt"'
Sekarang ketika saya menjalankan perintah, saya dapat melihat file ini seperti ini:
This is text from some
multi-line file reminding
me how to do some
stuff
$ finger
Output dari file someinfo.txt
sedang ditampilkan di atas finger
saya perintah di atas.
Referensi
- Di bash, bagaimana cara mengikat tombol fungsi ke perintah?