원하지 않는 변경 행이있는 터미널에서 긴 한 줄 텍스트를 복사


14

locate ... | less 실제로는 단일 행이지만 긴 경로를 출력합니다.이 경로는 터미널에서 여러 행으로 표시됩니다.

마우스로 텍스트를 선택하고 Ctrl+ Shift+ 를 눌러 터미널에서 경로를 복사합니다 C. 텍스트 파일에 붙여 넣으면 터미널에 표시되는 것과 똑같은 방식으로 텍스트에 원치 않는 변경 행이 표시됩니다.

그러나 때로는 locate ... | less원치 않는 줄 바꿈을 도입하지 않고 긴 경로 출력을 복사 할 수 있으며 때로는 할 수 없다는 것을 기억합니다. 다른 일을하는지 알 수 없습니다.

문제가 발생하지 않도록하는 방법이 궁금합니다. 감사!

내 OS : Ubuntu 12.04.

내 터미널 : Gnome Terminal 3.4.1.1



그러나 Ctrl + Shift + C는 때때로 변경 행을 복사하지 않고 긴 행을 복사 할 수 있습니다. 여전히 다른 문제라고 생각합니다.
Tim

Q는 왜이 동작을 제어하는지 왜 또는 어떻게 제어합니까?
slm

예. 출력을 파일로 보내지 않고 바로 가기 키 (가장 빠른 방법이라고 생각합니다)를 사용하여 터미널에서 텍스트를 복사합니다.
Tim

행동이 한 가지 방법과 다른 방법에 대한 자세한 내용이 있습니까?
slm

답변:


3

터미널에 표시되는 내용을 복사하는 대신 (화면에 맞는 내용 만) 실제 텍스트를 복사하십시오. xsel 또는 xclip 외부 유틸리티 중 하나를 사용하여 (대개 동일한 기능을 갖습니다.이 답변에서 xsel을 사용하겠습니다) X 클립 보드에서 또는 X 클립 보드로 데이터를 복사합니다. 클립 보드에 복사하려면 표준 입력에서 원하는 내용을 전달하십시오. 클립 보드에서 붙여 넣을 때 내용이 표준 출력에 기록됩니다.

적은 수의 |명령을 사용하여 명령을 통해 여러 줄을 파이프합니다. 실행할 첫 번째 줄로 스크롤하고을 입력 mm하여 마크를 설정하고 마지막 줄로 스크롤 한 다음을 |mxsel -b누릅니다 Enter. ^파일의 시작 부분과 파일 $끝 부분에 대해 두 가지 표시가 미리 정의 되어 있습니다. 따라서 전체 파일을 복사하려면을 사용하십시오 <|$xsel -b. 한 줄을 복사하려면 mm|mxsel -b및을 사용하십시오 Enter.

-b클립 보드 대신 기본 선택 항목에 복사 하는 옵션을 제거하십시오 .


3

이것의 실제 동작은 다음과 같습니다.

안에 less있고 매우 긴 줄이있는 파일이있는 경우 긴 줄을 아래로 스크롤 한 다음 위로 스크롤하면 전체 텍스트를 복사 할 때 여러 줄이 나타납니다. 그런 다음 분할 된 줄을 터미널 아래쪽으로 스크롤하고 다시 위로 스크롤하면 줄 바꿈이 다시 제거됩니다.

시각화의 경우 :

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


2

텍스트가 터미널에 직접 출력 된 경우 줄 바꿈 없이 추가 줄 바꿈 없이 출력 줄을 복사 할 수 있습니다 . 터미널은 실제 라인 끝이 어디에 있는지 추적 할 수 있습니다.

그러나 행이 less유사한 pager프로그램에 의해 출력 된 경우, 터미널은 줄 바꾸기가 어디에 있는지 알 수 없습니다. 호출기는 터미널을 문자의 전체 화면으로 사용하고 터미널에 "이 문자를 넣습니다"및 스크롤과 같은 조작을 알려줍니다. 그러나 터미널에는 줄 바꿈이 어디에 있는지 알 수있는 방법이 없습니다.


2
때로는 줄 바꿈을 복사하지만 때로는 그렇지 않습니다. 시간이 지남에 따라 일관성이 없습니다. 오늘 두 가지 상황에서 Ctrl-shift-c를 사용할 locate <something> | less때 두 가지가 발생했습니다.
Tim

Less는 화면 자체를 정상적으로 그려서 터미널이 줄의 끝을 보지 못하도록합니다. 그러나 실제로 화면 높이에 맞는 짧은 파일에 대해서는 아무것도 수행하지 않도록 구성 할 수 있습니다. 따라서 사례 간 차이가 다른 모드에서는 적었을 수 있습니다. (를 보시고 echo $LESS, 아마도 더 흥미로운 옵션이있을 것입니다.)
Volker Siegel

@Tim 이것은 몇 년 동안 나를 괴롭 혔습니다. 어쩌면 @niknah의 대답이 원인을 암시합니까? 나는 종종 -S모드를 전환하기 때문에 어쩌면 더 나빠질 수도 있습니다.
Dan Gravell

1
@Tim : OS 및 그 이하 버전에서 사실이거나 그렇지 않을 수있는 것을 발견했습니다. 복사 동작은 대상 줄에 도착한 방법에 따라 다릅니다. 앞으로 검색하면 복사본에 줄 바꿈 줄 바꿈이 포함되지 않습니다 (즉, 원래 긴 줄 내용을 복사합니다). 그러나 대상 줄에 도달하기 위해 파일을 거꾸로 검색 한 경우 복사본에 줄 바꿈이 포함되고 긴 줄이 여러 개의 개별 줄로 분할됩니다. Mac과 Linux에서 일관된 것으로 보입니다.
erik.weathers

2

에서 less여러 줄 바꿈을 선택한 다음 복사하면 한 줄로 표시됩니다.

PgUp동일한 텍스트 를 누른 다음 복사하면 여러 줄로 표시됩니다.

PgDn괜찮아요, 화살은 괜찮아요 그러나 PgUp텍스트가 분할됩니다.


그것이 행동의 실제 원인이 아닙니다. 내 답변보기 : unix.stackexchange.com/a/445590/105308
bobbel

0

복사하여 붙여 넣는 것이 목표라면 or cat대신에 사용 하고 터미널은 실제로 표시되는 것이 아니라 그대로 캡처합니다.lessmore

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.