터미널 창을 열고 명령을 실행하는 스크립트를 어떻게 만들 수 있습니까? 우분투 머신을

우분투 머신을 시작할 때 실행해야 할 스크립트가 세 개 있는데, 개발 환경에서 사용하는 서비스를 시작합니다.

이를 위해 수동으로 세 개의 터미널을 열고 명령을 입력하십시오.

세 개의 터미널을 열고 각 터미널에서 하나의 명령을 실행하는 스크립트를 작성하는 방법이 있습니까? (각 명령은 별도의 터미널 창에 있어야 출력을 볼 수 있습니다).



답변

gnome-terminal -e command

또는

xterm -e command

또는

konsole -e command

거의

terminal -e command

명령이 종료 될 때 터미널을 유지하려면 :

곤솔에는 --noclose깃발이 있습니다.

xterm에는 -hold플래그가 있습니다.

에서 gnome-terminal,로 이동 편집 -> 프로필 환경 설정 -> 제목 . 명령 탭을 클릭 하십시오. 명령이 종료 될 때 레이블이 지정된 드롭 다운 메뉴에서 터미널 유지 를 선택하십시오 . 이를 위해 새로운 프로파일을 생성하고

gnome-terminal --window-with-profile = NAMEOFTHEPROFILE -e 명령


답변

대신 하드 코딩의 gnome-terminal, konsole등등, 대안 시스템을 사용합니다. 기본 터미널 에뮬레이터를 실행하는 프로그램은 다음과 같습니다.

x-terminal-emulator

내 시스템 에서이 명령을 실행할 때마다 새로운 Konsole 인스턴스가 열립니다.

운 좋게도 터미널은 -e명령 실행 옵션 을 지원하는 것 같습니다 ( konsole및 확인했습니다 gnome-terminal). 명령 이후의 인수는 호출 된 명령으로 전달됩니다. Bash는 터미널에서 열린 상태를 유지하지 않기 위해 터미널을 얻으려면 추가 스크립트가 필요합니다.

#!/bin/sh
"$@"
exec "$SHELL"

이전 스크립트를 다른 이름으로 저장하고 /home/user/hacky실행 가능하게 한 경우 다음을 사용하여 스크립트를 실행합니다.

x-terminal-emulator -e /home/user/hacky your-script optional arguments here

전체 경로가 필요 /home/user/hacky하며 실행 가능해야합니다.

새 터미널 창에서 스크립트를 실행하려는 이전의 시도는 개정 # 2 에서 찾을 수 있습니다 x-terminal-emulator. 인수가 전달 될 수 있다는 것을 깨달았습니다 .


답변

아주 간단하게

#!/bin/bash

/etc/init.d/ccpd status

이것은 터미널에 아무것도 표시 할 필요가없는 다른 명령에 충분합니다. 그러나 여기에 상태가 표시되어야합니다.
따라서 터미널 창에서 실행 해야합니다.

#!/bin/bash

gnome-terminal -e "/etc/init.d/ccpd status"  --window-with-profile=NAMEOFTHEPROFILE

다른 포스트 목적은 []자리 표시 할 수

여기서 “NAMEOFTHEPROFILE”은 “명령이 종료 될 때 터미널을 보유”하는 프로파일의 이름으로 대체됩니다.

여기에 이미지 설명을 입력하십시오

여기에 이미지 설명을 입력하십시오


답변

@nickguletskii의 답변 과 그의 답변 아래 내 자신의 의견에 도움이되고 @grabantot의 의견에 대한 찬성에서 영감을 얻었습니다. 특히 터미널을 열어두고 수동으로 사용할 수 있도록 할 때 특히 선호하는 방법입니다.

전의. 사용법 :이 스크립트는 시작 프로그램에 추가하여이 스크립트를 실행하고 터미널을 열고 터미널에서 탭을 만들고 이름을 지정한 다음 명령을 실행하는 데 매우 유용합니다. 또는이 스크립트에 대한 심볼릭 링크를 데스크탑에 추가 할 수 있습니다. 이 유형의 접근 방식을 사용하여 바탕 화면에서 단일 아이콘을 두 번 클릭하고 여러 터미널 (내가 수행 할 작업에 따라 다양한 탭이 있음) 및 설정할 프로그램을 열 수 있습니다. 예를 들어 일상적인 작업을위한 프로그래밍 환경.

다음은 하나의 탭을 열고 제목을 “test”로 한 다음 간단한 명령을 실행하는 고안된 예 cd /etc; ls입니다. 마지막 $SHELL부분은 쉘이 열린 상태를 유지하도록하여 출력을보고 계속 사용할 수 있습니다 (스택 오버플로에서 다른 곳에서 이것을 배웠습니다).

gnome-terminal --tab --title="test" --command="bash -c 'cd /etc; ls; $SHELL'"

다음은 동일한 그놈 터미널에서 3 개의 개별 탭을 여는보다 복잡한 예입니다. 이것은 바로 데스크탑 바로 가기가 수행하는 작업 유형이므로 한 번에 여러 프로그래밍 창을 열 수 있습니다.

gnome-terminal --tab --title="tab 1" --command="bash -c 'cd /etc; ls; $SHELL'" --tab --title="tab 2" --command="bash -c 'cd ~; ls; $SHELL'" --tab --title="tab 3" --command="bash -c 'cd ~/temp3; ls; $SHELL'"

위의 명령에 대한 분석은 다음과 같습니다.

  • gnome-terminal = 그놈 터미널을 엽니 다
  • --tab = 다음에 오는 것에 대한 고유 한 탭을 엽니 다
  • --title="tab 1" =이 탭의 제목을 “탭 1”
  • --command="bash -c 'cd /etc; ls; $SHELL'"= bash -c 'cd /etc; ls; $SHELL'예를 들어 방금 만든 명령 인 명령을 실행합니다 . 그것이하는 일은 다음과 같습니다.
    • bash -c 그것은 bash ‘c’ommand라고 말합니다.
    • cd /etc = ‘c’hange’d’ irectory를 “/ etc”경로에
    • ls = ‘l’ i는이 디렉토리의 내용이 아닙니다
    • $SHELL=이 비밀스러운 tidbit는 쉘을 열어 놓아 작업 할 수 있도록하는 데 필요합니다. 쉘을 열려면 명령을 실행 한 다음 닫고 간단히이 부분을 제거하십시오. 그러나 프로그래밍 마법을 만들 수 있도록 탭을 열어두기를 원합니다. 🙂
  • 그런 다음 --tab부품 에서 다시 시작 하여 탭 2를 생성 한 다음 다시 탭 3을 생성합니다. 마음의 내용에 맞게 사용자 정의하십시오.

스크린 샷 :

여기에 이미지 설명을 입력하십시오


답변

Lekensteyn의 답변에 대한 논평. 나는 이것이 오래된 게시물이라는 것을 알고 있지만, (이 방금했던 것처럼)이 유용한 것을 발견 한 사람은 당신이 호출하는 스크립트 안에 함수를 넣어 다른 “해키 스크립트”를 만드는 대신

hacky_function()
{
"$@"
exec "$SHELL"
}

“x-terminal-emulator -e / path / to / script hacky_function optional arguments here”를 사용하여 스크립트를 호출하십시오.

스크립트 끝에 “$ @”를 넣는 것을 잊지 마십시오


답변

screen 명령을 사용 하고 -d 기존 화면 세션에서 분리 한 후 여기에 다시 연결하십시오. -m 새 화면 세션을 강제 실행하십시오. -S 기본 이름 대신 이름 지정된 세션을 작성하십시오.


답변