바로 가기 키를 눌렀을 때 쉘에서 스크립트를 어떻게 실행할 수 있습니까?
본질적으로 내가 필요한 것은 바로 가기 키를 누를 때 스크립트가 파일에서 읽고 해당 내용을 터미널에 표시해야한다는 것입니다.
답변
내장 명령을 사용하여 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
명령 위에 표시됩니다 .