Terminal.app에서 현재 입력 행을 선택하거나 복사하십시오.


2

OS X의 Terminal.app에서 입력 줄의 모든 입력 텍스트를 선택하는 단축키가 있습니까?


복사 의도 또는 교체 할 의도로 선택 하시겠습니까?
NReilingh

무엇보다도
erikvold

복사하고 바꾸려면 정말로 조사 할 것을 권합니다. edit-and-execute-command. 적절한 최소 스크립트를 사용하여 두 가지 작업을 모두 수행 할 수 있어야합니다. EDITOR.
Daniel Beck

2
커맨드 라인에는 실제로 선택된 텍스트에 대한 개념이 없으며 입력을 계속할 경우 마우스로 선택한 텍스트를 바꿀 수 없기 때문에 약간 비린내가됩니다. 귀하의 질문에 대한 대답은 "아니오"이지만 Daniel의 제안은 귀하가 대체물을 해킹하는 데 도움이 될 수 있습니다. 다른 도움이 될만한 것들 : control-a와 control-e를 사용하면 프롬프트에서 입력 한 내용의 시작과 끝으로 이동할 수 있으며 Automator, Services 및를 사용하여 터미널에 대한 자체 키 입력 단축키를 설계 할 수 있습니다. AppleScript GUI 스크립팅.
NReilingh

@Nilinginging Pinging you; 당신이 내 제안에 대해 생각할 때 내가 생각할 수있는 것에 관심이있을 수 있습니다.
Daniel Beck

답변:


1

필터를 시도 할 수 있습니다. edit-and-execute-command() ( 조작 )를 통해 적절한 $EDITOR 또는 $VISUAL:

$ touch foo.sh
$ open foo.sh

세트 foo.sh 콘텐츠를 다음에 저장하고 저장하십시오.

#!/usr/bin/env bash
# copy current command input to clipboard -- requires local session
cat $1 | pbcopy

# clear the prompt, so no command gets executed when closing this script
# comment out the following line to execute the command you entered instead
echo -n "" > $1
exit 0

그런 다음 실행 가능하게 만들고 시각적으로 설정하십시오.

$ chmod +x foo.sh
$ export VISUAL=/Users/danielbeck/foo.sh

~에 bash 프롬프트 (또는 readline 전원이 켜진 프롬프트로 생각합니다.) 현재 명령 입력을 복사하여 복사 할 수 있습니다. Ctrl-X Ctrl-E 호출하다 edit-and-execute-command().

너를 편집해라. ~/.inputrc 파일을 클릭하여 단축키를 변경하십시오. 너를 편집해라. .bash_profile 이걸 너의 것으로 지키려고. $EDITOR / $VISUAL - 단점은 명백합니다. $EDITOR 다시 불행히도


또는 무엇을 복제 할 수 있습니까? 이 사용자는하고있다. ,하지만 그는 zsh, 아니라 bash.


터미널 자체는 현재 줄의 어떤 부분이 프롬프트인지, 입력 내용이 무엇인지 알지 못합니다. 예를 들어 행에 액세스하는 중입니다. AppleScript를 통해 일반적으로 작동하지 않습니다.

그러나 현재 탭의 전체 출력을 읽고 마지막 행을 가져올 수 있으며 필터링을 통해 프롬프트 탭 부분을 제거하려고합니다.

내 프롬프트는로 끝납니다. $, 다음 명령이 작동합니다.

tell application "Terminal" tell selected tab of window 1 to do shell script "echo '" & history & "' | sed '/^$/d' | tail -n1 | cut -d$ -f2-"

현재 윈도우의 현재 탭을 가져옵니다. history 속성을 추가하고 필터링 할 수 있습니다. sed 빈 줄을 모두 지우려면 다음을 사용하여 마지막 줄을 가져옵니다. tail, 그런 다음 모든 것을 제거하고 첫 번째를 포함하여 $ (즉, 내 프롬프트)를 사용하여 cut.

이 프로그램의 출력은 현재 명령 행입니다. 정말 무의미한 운동 :

~ $ osascript Library/Scripts/get_line.scpt 
 osascript Library/Scripts/get_line.scpt

마지막에 클립 보드에 복사하려면 다음과 같이 변경하십시오.

tell application "Terminal" to tell selected tab of window 1 to do shell script "echo '" & history & "' | sed '/^$/d' | tail -n1 | cut -d$ -f2- | pbcopy"

당신이 사용할 수있는 자동화 ~을 만들려면 서비스 받는 사람 입력 없음 신청서 단말기 하나의 AppleScript 스크립트 실행 위의 코드로 구성된 액션. 저장하고 키보드 단축키를 선택적으로 할당하십시오. 시스템 환경 설정»키보드»키보드 단축키»서비스 .


마지막 예제에서 프롬프트 문자열을 제거하는 더 좋은 방법을 찾았습니까?
Lri

@ 리 당신은 별도로 bash 방법, echo $PS1 출력에서 제거 된 좋은 템플리트를 작성하기 위해 프로파일 파일을로드 한 후. 불행히도 $PWDdate 이 방법을 깨뜨릴 것이다. 또는 백업 할 수 있습니다. $PS1 다른 변수에 일시적으로 저장하고 명령을 실행 한 후에 복원하십시오.
Daniel Beck
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.