단축키를 눌렀을 때 쉘에서 스크립트를 실행하는 방법


14

바로 가기 키를 눌렀을 때 쉘에서 스크립트를 어떻게 실행할 수 있습니까?

본질적으로 내가 필요한 것은 바로 가기 키를 누를 때 스크립트가 파일에서 읽고 해당 내용을 터미널에 표시해야한다는 것입니다.


사용했던 방법을 시도했지만 bind '"\e[24~":"airmon-ng start wlan0\n"'터미널을 닫은 후에는 재설정 된 것으로 보이며 모든 단축키가 사라졌습니다.

답변:


20

내장 명령을 사용하여 bind키보드 단축키를 매핑하여 명령 / 쉘 스크립트를 실행할 수 있습니다.

키를 pwd누를 때 명령을 실행한다고 가정 해 봅시다 F12.

$ bind '"\e[24~":"pwd\n"'

이제 F12프롬프트에서를 누르면 $:

$ pwd
/home/saml

키보드 단축키 결정

다음 기술을 사용하여 주어진 키보드 단축키에 대한 이스케이프 코드를 결정할 수 있습니다. 대부분의 시스템에서 Ctrl+ V를 눌렀다가 놓은 다음 코드를 원하는 키를 누릅니다. M대신 작동하는 다른 시스템이 있습니다.V

누르면 Ctrl+ 것은 V다음 모두 해제 Ctrl하고 V마지막으로 눌러 F12터미널 창에서이 반환합니다 :

$ ^[[24~

이 출력은 다음과 같이 해석 될 수 ^[는 IS Esc키를 누릅니다. 따라서 bind명령 을 사용하여이 특정 키를 지정 하려면 a \e를 사용하여 Esc키와 그 밖의 모든 것을 표시 해야합니다 . 따라서 bind명령은 다음과 같습니다.

$ bind '"\e[24~":"....."'

중간에 명령 실행

또한 bind -x프롬프트에서 무언가를 입력하는 동안 명령을 실행하는 키보드 단축키를 설정할 수 있으며 이러한 명령의 출력이 표시되지만 프롬프트에서 입력 한 내용은 그대로 유지됩니다.

$ bind -x '"\eW":"..."'

참고 : 이 방법은 1 문자를 출력하는 키보드 단축키에서만 작동하므로 F12여기서는 작동하지 않습니다.

키보드 단축키 Alt+ Shift+ 의 별칭을 지정하십시오 W.

$ bind -x '"\eW":"who"'

내가 명령을 입력한다고 가정 해보십시오 finger.

$ finger

이제 키보드 단축키 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

진행중인 것은 bind정의 된 명령을 실행하여 who출력을 가져 와서 프롬프트 앞에 삽입하는 것입니다. 당신이 그것을 반복하면 무슨 일이 일어나고 있는지 볼 것입니다.

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

너의 문제

따라서 bind -x위 의 방법 을 사용하고 cat프롬프트에서이 텍스트 파일을 표시 하는 것이 좋습니다 .

$ bind -x '"\eW":"cat someinfo.txt"'

이제 명령을 실행할 때이 파일을 다음과 같이 볼 수 있습니다.

This is text from some 
multi-line file reminding
me how to do some 
stuff
$ finger 

파일의 출력이 someinfo.txt위의 finger명령 위에 표시됩니다 .

참고 문헌


내용을 표시하고 실행하지 않아도됩니다.
user3539

따라서 내용을 표시하는 스크립트에 바인딩하십시오.
Lars Rohrbach

1
Ctrl + m이 작동하지 않습니다. 마치 Enter 키를 누른 것처럼 작동합니다. 내가 생각 하는 대안 (나는 bash 초보자입니다)을 입력하고 echo ' (작은 따옴표 뒤에 공백) Ctrl + v를 누른 다음 원하는 키를 누른 다음 여기에 설명 된대로 작은 따옴표를 공백으로 두십시오 . 예 :echo ' ^[OD '
aliteralmind
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.