이전 명령의 출력에서 ​​텍스트 사용


16

2015 년 4 월 편집 :이 같은 질문이 있으면 http://xiki.org/를 확인하는 것이 좋습니다.


나는 이것이 터미널이 작동하는 방식이 아니라는 것을 알고 있지만 이미 이전 명령 출력의 터미널 창 기록에 이미있는 텍스트를 사용하여 텍스트를 복사 (수정, 수정 등)하는 쉬운 방법이 있기를 바랍니다.

나는 이것을 다음과 같이 상상했다.

나는 bash 쉘에서 명령을 입력하려고하고 있으며 화면에 이미 위의 몇 줄을 입력해야한다는 것을 알고 있습니다. 마우스를 찾아서 선택할 수는 있지만 싫어합니다. 내가 지금 정말로 원하는 것은 내 터미널 전체가 거대한 Vim 버퍼가되었다는 것입니다. 프롬프트, 입력 한 명령 및 해당 명령의 출력입니다. 모두. 그런 다음 몇 줄을 위로 이동하고 약간 편집하고 텍스트를 잡아 당길 수 있습니다. 그런 다음 bash 셸 모드로 돌아가서 현재 명령 행에 눌린 것을 붙여 넣습니다.

몇 가지 옵션이 있다는 것을 알고 있습니다.

  • 당연히 필요한 명령을 일부 명령의 출력에서 ​​파일로 또는 다음 명령으로 바로 파이프합니다. 그러나이를 위해서는 미리 계획을 세우거나 히스토리에서 명령을 다시 실행해야합니다 (출력이 호출간에 변경되지 않는다고 가정).

  • 마우스로 이동하여 복사 할 텍스트를 선택하십시오. 절름발이, 성가신, 나는 그것을하지 않았 으면 좋겠다. (이것은 GUI 스택 교환 사이트가 아닌가? =)

  • 내 (Mac OS X) 터미널 응용 프로그램의 "텍스트를 다른 이름으로 내보내기 ..."옵션을 사용하고 터미널 텍스트를 파일로 저장합니다. 그런 다음 파일을 열고 작업하십시오. 근데 왜 디스크에 파일로 저장하는 단계를 거쳐야합니까?

문제는이 상황에서 무엇을합니까? 이 시나리오에서 유용 할 수있는 트릭, 도구, 쉘 기능이 있습니까? 마우스를 사용하도록 자신을 사임하거나 입력해야 할 내용을 다시 입력하겠습니까?

문제는 내가 유닉스 방식으로 일을하지 않고 있지만 c'mon, 이것은 2010 년이며 커서에서 몇 줄 떨어진 텍스트를 쉽게 복사 할 수 없다는 것입니다.



답변:


4

스크립트를 사용하고 (-f를 사용하여 매번 플러시하는지 확인) 파일에 모든 출력을 가질 수 있습니다.

터미널 멀티플렉서 (스크린, tmux 등)를 사용하십시오. 예를 들어 http://web.mit.edu/gnu/doc/html/screen_11.html# 화면의 경우

명령 : 복사 복사 / 스크롤 백 모드로 들어갑니다. 이를 통해 현재 창과 해당 기록에서 붙여 넣기 버퍼로 텍스트를 복사 할 수 있습니다. 이 모드에서는 아래에 설명 된대로 컨트롤과 함께 생생한 전체 화면 편집기가 활성화됩니다.

다른 터미널 멀티플렉서는 확실히 고급 기능을 갖추고 있습니다.


확인. 방금 '터미널 멀티플렉서'가 필요한 것임을 알게되었습니다. 감사. 또한 'script'명령 힌트에 감사드립니다.
Sergio Acosta

5

tmux (터미널 멀티플렉서)에서는 Ctrl + A- [를 눌러 Vi 버퍼 모드로 전환하여 화면을 탐색하고 버퍼를 앞뒤로 스크롤하며 텍스트를 복사 할 수 있습니다. 기본 단축키는 실제로 Ctrl + B- [그러나 그것은 분명히 재구성되어야했습니다. 또한 기본 버퍼 모드는 Emacs이지만 Vi로 구성 할 수 있습니다.

tmux를 확인하십시오. 실제로 훌륭한 현대 터미널 멀티플렉서입니다. 버퍼 작업 외에도 여러 창에서 화면을 분할하고 여러 터미널 등에서 동일한 세션에 연결할 수 있습니다. 궁극적 인 편의를 위해 실제 쉘이 무엇인지 알려주는 경우 로그인 쉘로 만들 수도 있습니다.

OpenBSD에서 tmux는 심지어 기본 시스템의 일부가되었습니다.

자세한 내용은 tmux 매뉴얼 페이지를 참조하십시오. http://tmux.sourceforge.net/의 스크린 샷도 참조하십시오.


tmux가 가장 멋지다!
개브.

4

emacs에서 Mx 쉘 은 이전 출력의 에디션을 처리합니다. 이전 명령 출력 또는 일반 버퍼와 같은 버퍼의 일부를 붙여 넣기하여 쉽게 복사 할 수 있습니다. 나는 vim에 상응하는 것이 있어야한다고 확신합니다.


1
그것은 내가 원하는 것에 매우 가깝지만 이미 Emacs 또는 Vim에 있어야합니다. +1
Sergio Acosta

예, 기본 용어 + 셸이 될 수 있습니다. :) 그런 다음 일반적인 텍스트 탐색 키를 최소한으로 사용합니다. 더 많은 특수 키를 배우면 다음 Emacs 기능에 eshell액세스 할 수 있습니다 .
imz-Ivan Zakharyaschev

1

여기에 언급 된 것처럼 이맥스 eshell는 기본 용어 + 쉘이 될 수 있습니다. :) 그런 다음 일반적인 텍스트 탐색 키를 최소한으로 사용합니다. 더 많은 특수 키를 배우면 다음 Emacs 기능에 eshell액세스 할 수 있습니다.



1

vim을 CLI로 사용 하시겠습니까? 몇 줄의 출력을 선택하고 :!를 통해 파이프하십시오.


미안합니다, 당신을 따르지 않습니다. 좀 더 자세히 설명해 주시겠습니까?
roaima
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.