매크로와 유사한 사용자 정의 쉘 명령을 생성할 수 있습니까?

매크로와 유사한 사용자 정의 쉘 명령을 생성할 수 있습니까?

여러 개의 긴 키 입력을 시작하는 단일 단축 명령을 실행할 수 있습니까?

예를 들어,

$ kontact & rekonq

내 터미널로 전달되면 두 개의 애플리케이션이 열립니다. 이 작업을 포함하고 실행하는 데 걸리는 시간을 단축하는 명령을 직접 만들 수 있습니까?

답변1

나는 당신이 찾고있는 것이 쉘 스크립트라고 생각합니다. 쉘 스크립트를 사용하면 기본적으로 쉘에 입력할 수 있는 모든 것을 명령으로 변환할 수 있습니다. 예를 들어, 이 두 프로그램을 셸에서 실행하려면 다음을 실행합니다.

$ kontact &
$ rekonq &

이를 쉘 스크립트에 넣으려면 텍스트 편집기에서 새 파일을 열고 다음 줄을 입력하십시오.

#!/bin/bash
kontact &
rekonq &

이것이 셸에 입력하는 것과 매우 유사하다는 것을 알 수 있습니다. 유일한 차이점은 #!/bin/bash상단 정렬입니다(웹 사이트에서 다른 색상으로 렌더링하는 데 도움이 되었습니다). 이 줄은 이것이 bash에 의해 실행되어야 하는 스크립트임을 시스템에 알려줍니다.

마지막으로 파일을 저장한 후 실행 가능하게 만들어야 합니다.chmod +x file-name

이제 가정적으로 이것을 쉘에 입력하는 것으로 저장하면 두 프로그램이 모두 시작되어야 합니다./home/your-username/bin/run-my-programs~/bin/run-my-programs

많은 배포판에는 bin명령 검색 경로에 $HOME의 디렉터리를 자동으로 추가하는 로그인 스크립트가 있으므로 쉽게 실행하려는 쉘 스크립트를 배치하기에 좋은 장소입니다. 그러나 로그인할 때 존재하는 경우에만 이 작업을 수행합니다 $HOME/bin. 그런 다음 경로를 생략하고 run-my-programs. 분명히, 시스템의 다른 프로그램과 충돌하지 않도록 스크립트 이름을 지정할 때 주의해야 합니다. ls예를 들어, 스크립트 이름을 이렇게 지정하면 혼란스럽고 놀랄 것입니다!


위의 쉘 스크립트는 실제로 그다지 유용하지 않습니다. 프로그램이 더 복잡할 때 더 유용합니다. 예를 들어, 직장에서 사용하는 실제 스크립트는 다음과 같습니다.

#!/bin/sh

xterm -geometry 80x24+0+0 -T 'Bennu-DBA' -e ssh bennu -t 'screen -d -R -S status' &

xterm -geometry 80x24+0+342 -e screen -S 'bservers' -c ~/.screenrc-bservers &
xterm -geometry 80x9+0+684 -T 'df-graph' -xrm '.xterm.vt100.allowTitleOps: no' &

( cd ~/src/haruhi.metrics.net/operations/backup/bennu && xterm -geometry 80x24+0+827 -T 'Bennu-Conf' ) &
( cd ~/src/haruhi.metrics.net/operations/backup/phoenix && xterm -geometry 80x24+509+827 -T 'Bennu-Conf' ) &

xterm -geometry 177x77+509+0 -T 'Console' -e screen -c ~/.screenrc-bconsole  &

이렇게 하면 창을 수동으로 배치하고 크기를 조정하는 데 필요한 많은 작업(모든 -geometry옵션)이 절약됩니다. 모든 -e옵션은 해당 옵션 내에서 적절한 프로그램을 시작합니다.

답변2

당신은별명?

$ alias macro="kontact & rekonq"
$ macro

어디매크로바로가기의 이름입니다.

답변3

예. 이것은 매우 일반적입니다. 일반적으로 .sh확장자를 사용하여 실행하려는 명령을 텍스트 파일에 넣으십시오 (이것은 관례이며 필수는 아닙니다). 이 작업을 수행해야 할 수도 있습니다 chmod +x <filename>. 그런 다음 <filename>.shor 을 실행하면 됩니다 ./<filename>.sh. 나는 일반적으로 bin/이와 같은 스크립트를 위해 홈 디렉터리 외부에 디렉터리를 만듭니다.

답변4

한 줄, 추가( 사용 >>)별명라인을 입력 .bash_profile하면 재부팅 시 항상 사용할 수 있습니다.

이는 .bash에게 다시 로드하라고 지시합니다(원천) 구성을 수행한 다음 reset현재 콘솔에서 이러한 변경 사항을 사용할 수 있도록 합니다.

&&명령이 성공할 때까지 왼쪽에서 오른쪽으로 대기 중이므로 이러한 명령은 병렬이 아닌 순서대로 실행됩니다.


echo 'alias macro="kontact & rekonq"' >> ~/.bash_profile && . ~/.bash_profile && reset

지금 입장할 수 있습니다:

macro

관련 정보