2012-03-01 3 views
2

열려있는 모든 터미널 탭에서 동일한 명령을 실행할 수 있습니까? 나는 보통 많은 서버에 로그인하고 모든 서버에서 동일한 명령을 수행하려고합니다. Xshell (Windows에서만 사용 가능)은 열려있는 모든 터미널에서 같은 명령을 실행할 수있는이 기능을 가지고있었습니다. Mac에서 가능한지 궁금합니다.Mac의 모든 터미널에서 동일한 명령을 실행하십시오.

+0

이것은 프로그래밍에 관한 질문보다 시스템 관리 질문과 비슷합니다 ... – Perry

답변

0

Apple의 터미널에서 요구하는 것을 달성 할 방법이 없습니다.

아마도 alternative에 가깝게 필요한 것을 찾을 수 있습니다.

0

이 용도로 터미널을 사용하는 대신 SSH를 사용하십시오. 터미널에서 실행해야하는 명령 인 경우, 어쨌든 어딘가에서 sshing을하고있는 중입니다. 중간 사람을 제거하십시오.

당신이

for host in host1 host2 host3 ..; do 
    ssh -i ~/.ssh/my_private_key [email protected]${host} "echo HAXXXXXXXXXXXX | wall" 
done 

이 매우 원유 메커니즘과 같은 일을 할 수있는 하나의 쉘 스크립트에서 다음 원격 시스템에 공개 키를 넣고, 암호없이 SSH 키 쌍을 생성하지만, 물리적에 필요 이상으로 광년있어 각 명령에 대한 터미널을 엽니 다.

저는 실제로 OSX에서 원하는 것을 할 수있는 것을 알고 있습니다. 솔직히 말해서 하이퍼 링크를 제공하는 것은 부끄러운 생각입니다.

3

가장 확실하게 가능합니다. 나는 그것을 아주 자주한다. 이것은 해결 :

onall() { 
    if [[ $1 == "--help" ]]; then 
     echo "Usage: onall <command>" 
     return 0 
    fi 
    osascript -e "tell application \"Terminal\" 
     repeat with w in windows 
      repeat with t in tabs of w 
       do script \"${1//\"/\\\"}\" in t 
      end repeat 
     end repeat 
    end tell" 
} 

osascript는 애플 스크립트 코드와 -e 옵션을 스크립트로 다음 문자열을 사용하도록 지시를 실행하는 명령 줄 프로그램입니다. ${1//\"/\\\"}은 명령의 모든 인용 부호를 이스케이프합니다.

.bash_profile에있는 그대로 사용하거나 다른 파일을 사용하거나 함수에서 꺼내어 스크립트에 넣거나 스크립트를 실행 파일로 만들어 어딘가에 둘 수 있습니다 통로.

주 1 : 전체 명령은 첫 번째 인수에 있어야합니다.

참고 2 : 따옴표가있는 명령을 사용하는 경우 따옴표를 이스케이프 처리해야합니다. 예 : onall echo "*" 예기치 않은 결과를 얻을 수 없습니다. 대신, 사용 onall "echo \"*\""

관련 문제