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

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

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

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

답변1

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

pwd키를 누를 때 명령을 실행하고 싶다고 가정해 보겠습니다 F12.

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

이제 F12프롬프트를 누르면 다음 과 같습니다 $.

$ pwd
/home/saml

키보드 단축키 결정

다음 기술을 사용하여 특정 키보드 단축키에 대한 이스케이프 코드를 확인할 수 있습니다. 대부분의 시스템에서는 Ctrl+를 누르고 V손을 뗀 다음 코드를 원하는 키를 누릅니다. M이를 대체 할 수 있는 다른 시스템이 있습니다.V

Ctrl+를 누른 V다음 둘 다 해제 Ctrl하고 V마지막으로 F12터미널 창을 누르면 다음이 반환됩니다.

$ ^[[24~

이 출력은 다음과 같이 해석될 수 있으며 이것이 핵심 ^[입니다 . Esc따라서 명령을 사용하여 이 특정 키를 지정하려면 해당 키에 a를 사용한 다음 위의 다른 모든 항목을 bind사용해야 합니다 . 따라서 명령은 다음과 같습니다.\eEscbind

$ 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.

인용하다

관련 정보