2012-08-25 2 views
1

bash 스크립트에서 Cmd + C을 누른 것처럼 복사 명령을 호출 할 수 있습니까? 기본적으로 글로벌 단축키로 실행하는 간단한 스크립트를 작성하고 현재 실행중인 앱에서 현재 선택 항목을 가져 와서 대체하고 결과를 붙여 넣어야합니다. 이것이 가능한가?터미널에서 복사 및 붙여 넣기 명령을 호출합니다.

내가 지금까지 생각해 낼 수있는 가장 좋은 점은 pbpastepbcopy을 사용하고 있지만 가능한 경우 자동화하고 싶습니다.

+1

대신 서비스를 만드는 것이 좋습니다. 서비스는 현재 선택을 취하고 수정하도록 고안되었으며 시스템을 통해 단축키 기능을 사용할 수 있습니다. – ughoavgfhw

답변

1

텍스트 선택을 수정하려는 경우 AppleScript를 사용할 수 있습니다.

osascript -e 'try 
    set old to the clipboard 
end try 
try 
    delay 0.3 
    tell application "System Events" to keystroke "c" using command down 
    delay 0.2 
    set text item delimiters to linefeed 
    set input to (paragraphs of (the clipboard as text)) as text 
    set the clipboard to do shell script "shopt -u xpg_echo; echo -n " & quoted form of input & " | rev" without altering line endings 
    tell application "System Events" to keystroke "v" using command down 
    delay 0.05 
end try 
try 
    set the clipboard to old 
end try' 

명령보다 다른 수정 자 키가있는 바로 가기로 스크립트를 실행하면 첫 번째 지연은 수정 자 키를 해제하기위한 것입니다. 두 번째 지연은 0.05와 같이 줄일 수도 있지만 길게 선택하거나 예를 들어 웹보기는 종종 더 긴 지연이 필요합니다. 세 번째 지연이 없으면 the clipboard은 텍스트가 붙여 넣기 전에 old으로 설정되는 경우가 있습니다.

the clipboard as textdo shell script 기본적으로 행 끝을 캐리지 리턴으로 변환합니다. echosh은 기본적으로 작은 따옴표 안에 백 슬래시를 해석하기 때문에 shopt -u xpg_echo이 필요합니다. 입력이 getconf ARG_MAX 바이트보다 길면 echo을 사용할 수 없으므로 임시 파일에 쓰거나 pbpaste을 사용해야합니다.

pbpastepbcopy 당신은 UTF-8LC_CTYPE를 설정하여 그것을 방지 할 수 do shell script가 사용하는 환경에서 기본적으로 물음표가 비 ASCII 문자를 대체합니다.

메뉴 표시 줄 항목을 클릭하면 이벤트가 더 느려지는 경우가 많으며 메뉴 모음이 없거나 전체 화면 창에서 작동하지 않는 응용 프로그램에서는 작동하지 않습니다.

또 다른 옵션은 Automator 서비스를 만드는 것입니다. 그러나 그들은 또한 실행되기 전에 약간의 지연이 있습니다. 서비스 메뉴가 메뉴 막대에 한 번 표시 될 때까지 서비스에 대한 바로 가기가 항상 작동하지 않는 버그가 있습니다. 또한 프론트 엔드 응용 프로그램에 메뉴 모음이나 서비스 메뉴가없는 경우 서비스를 사용할 수 없습니다.

+0

감사합니다. – DrummerB

관련 문제