터미널 금고에 붙여 넣을 수있는 방법이 있습니까?


16

터미널에 파일 이름 / 등을 항상 붙여넣고 때로는 클립 보드의 내용이 예상과 다른 경우가 있습니다.

종종 결과는 명령 프롬프트에 붙여진 수백 줄의 텍스트 (예를 들어, 소스 코드)가 만들어지고 신을 유발하는 것은 단지 어떤 불쾌감을 알뿐입니다.

bash가 붙여 넣은 것을 맹목적으로 실행하지 못하게하는 방법이 있습니까? 텍스트를 붙여 넣고 실행하고 싶은지 결정할 수 있기를 바랍니다.


답변:


10

bash를 사용한다고 가정 : emacs 단축키를 활성화 set -o emacs하면 Emacs를 사용하여 명령 줄을 편집 할 수도 있습니다.

  • Ctrl-XCtrl-E프롬프트에서 입력 하여 Emacs를 시작하십시오
  • 클립 보드 내용을 Emacs 버퍼에 붙여 넣기
  • Ctrl-XCtrl-CEmacs를 종료하고 명령을 자동으로 실행하는 데 사용하십시오 .

나는 당신이 Ctrl대신 의미한다고 가정합니다 Cmd. 또한하지 않고 사용하는 set -o emacs것 같습니다 $EDITOR. 감사! 이것은 완벽 해요.
Abhi Beckert

5

가장 간단한 해결책은 텍스트 편집기를 버퍼로 사용하여 내용을 다시 확인한 다음 텍스트 편집기에서 터미널로 복사하는 것입니다. 이를 위해 TextEdit을 사용하는 경우 URL이 아닌 링크로 붙여 넣기와 같은 문제가 발생하지 않도록 일반 텍스트 모드 ( 형식 메뉴 → 일반 텍스트 만들기 ; ⇧⌘T) 인지 확인하십시오 .

주목해야 할 또 다른 사항은 Bash가 개행 문자 앞에 오는 모든 항목을 실행하려고 시도하므로 텍스트 블록을 복사하는 경우 마지막 문자 뒤에 선택 항목이 끝나지 않고 선.

당신은 이것을 원합니다 : 줄 바꿈없이 선택

이거 말고: 줄 바꿈으로 선택

물론 텍스트 내에 줄 바꿈이 포함 된 항목 ( 예 : 여러 단락)을 복사하는 경우 선택 항목을 수동으로 편집해야합니다.


문제는 매일 수백 번 터미널에 물건을 붙여 넣는 것입니다. 중간에 텍스트 편집기를 사용하면 엉덩이에 고통이 될 것입니다
Abhi Beckert

공격자는 화면에 표시되지 않은 채 캐리지 리턴을 텍스트에 포함 할 수 있으므로 텍스트를 선택하는 방법에 대한 예가 반드시 보호 기능을 제공하지는 않습니다.
sh1

1

나도 알아!

내 해결책은 Launchbar 의 클립 보드 관리자를 핫키와 함께 붙여 넣는 것 Cmd+\입니다. 그러면 최근 클리핑 목록이 표시되어 붙여 넣기 전에 결과를 미리 볼 수 있습니다. 예상 한 내용이 표시되지 않으면 Cmd를 해제하기 전에 이스케이프를 수행했습니다. 화살표 키를 사용하여 텍스트 클리핑을 '입력'하여 내용을 한 줄씩 볼 수 있습니다.

예를 들어 Alfred (powerpack addon) 및 Quicksilver (free)와 같은 대부분의 발사기 가이 작업을 수행한다고 생각합니다.


1

클립 보드 관리자를 살펴볼 수 있습니다. 나는 Jumpcut 이라는 무료의 가벼운 것을 사용합니다 . 키보드에서 여러 클립 보드를 보관하고 실제로 내용을 붙여 넣기 전에 클립 보드에 저장된 내용을 확인할 수 있습니다.

클립 보드 관리자가 많으므로 Jumpcut이 보트를 떠 다니지 않으면 다른 플레이어가 필요에 더 잘 맞을 것입니다


1

브라켓 페이스트를 사용하십시오 .

대괄호 붙여 넣기는 터미널이 단순히 입력하는 대신 붙여 넣었 음을 쉘에 알려주는 기능이므로 Enter 키를 누를 때까지 명령을 실행할 수 없습니다.

Terminal.app가이를 지원하지만 모든 터미널이 지원하는 것은 아닙니다.

마찬가지로, 모든 쉘이이를 지원하지는 않습니다. OS X과 함께 제공되는 bash 버전은 괄호 붙여 넣기를 지원하지 않습니다 (작성 당시 v3.2.57).

그러나 zsh 는 괄호 붙여 넣기를 지원합니다.

zsh- 브래킷 페이스트

Zsh는 대부분 bash와 호환되며 (실제로 모호한 기능을 사용하지 않으면 스크립트가 작동 할 수 있음) 여러 가지 방법으로 더 좋습니다 (예 : 여러 줄 명령 편집 기능도 있음)!

zsh- 멀티 라인 명령


괄호 붙여 넣기를 어떻게 활성화합니까?
Abhi Beckert

1
zsh를 사용하는 경우 기본적으로 켜져 있습니다. 하나의 라이너에 붙여 넣으십시오! 첫 번째 스크린 샷과 같이 반전 강조 표시되어야하며 삭제를 한 번 누르면 전체 내용이 삭제됩니다.
SilverWolf-복직 모니카

실제로 우연히 발견 한 다음 왜 그것이 bash에 없는지 궁금했습니다. 기본 배쉬가 실제로 오래되었습니다. (:
SilverWolf-복직 모니카

0

이 작은 Bash 스크립트를 어딘가에 넣을 수 있습니다 PATH.

#!/bin/bash

read -p "Are you sure you wish to execute \`$(pbpaste)\`? (Y/n) "    
[[ $REPLY =~ ^[Yy]?$  ]] && pbpaste | bash

이러한 내용 /usr/local/pbexecute을 예를 들어 실행 파일로 만들면 pbexecute명령 줄에서 안전하게 실행할 수 있습니다. 그러면 클립 보드의 내용을 실행하기 전에 확인 메시지가 나타납니다.

다른 방법은 셸 내에서 클립 보드의 내용으로 텍스트 편집기를 시작하고 종료시 편집 된 내용을 자동으로 실행하는 것입니다. 예를 들면 다음과 같습니다.

#!/bin/bash

PBTEMP=$(mktemp -t pbtemp)
pbpaste > $PBTEMP
nano -t $PBTEMP
source $PBTEMP
rm $PBTEMP

탈출 한 왜 진드기가? ''를 사용하면 잘 작동합니다.
nohillside

@patrix 내가 백틱을 피하지 않으면 bash는 메시지를 표시하는 동안 이미 틱을 실행합니다.
Gerry

백틱을 생략하지 않아도 트릭을 수행해서는 안됩니까?
nohillside

@patrix 오, 물론, 그것은 당신이 프롬프트를 어떻게 포맷하고 싶은지에 대한 선호의 문제입니다. 백틱은 명령 대체 연산자이며 일반적으로 명령을 시각적으로 마크 업하는 데 사용되므로 백틱을 선택했습니다 (StackExchange 편집 참조).
Gerry

나는 이것으로 괜찮습니다 :-) 그것은 단지 복잡한 것 같습니다
nohillside

0

아래 Preferences -> Profiles -> Basic -> Advanced에서 "캐리지 리턴으로 개행 붙여 넣기"를 선택하십시오. (기본은 한 프로필의 이름입니다. 다른 프로필을 사용하는 경우 해당 프로필을 대신 선택해야합니다.)

에서 일부 쉘 (zsh을하고 나를 위해 bash는 작업, tcsh에서는하지 않습니다)이 그것의 일부가 쉘에 전달되기 전에 붙여 무엇을 당신에게 (Ctrl-C를 통해) 중단 편집 또는를하게됩니다.

환경 설정이 작동하려면 새 터미널 창을 만들어야 할 수도 있습니다.

복잡한 명령을 붙여 넣거나 편집 할 때뿐만 아니라 열로 구분 된 텍스트를 보거나 옵션 키로 끌어서 사각형을 선택하고 복사하기 위해이 기능을 항상 사용합니다.


방금 TextEdit도 사각형 선택을 수행한다는 것을 알았습니다.
Joshua Goldberg
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.