키보드 만 사용하여 이전 터미널 명령의 출력을 저장할 수 있습니까?


12

방금 지난 2 시간 동안 GUI없이 라이브 CD에서 dd명령 (또는 유사한 "다시 수행하기 어려운"시나리오) 을 실행했습니다. 내가 가진 건 내 신뢰할 수있는 "다중 창"( CTRL+ALT+F#) Bash 터미널입니다.

아아, 명령 중에 dd몇 가지 불쾌한 오류 메시지와 조금 더 많은 정보를 유지하고 싶었습니다. 데이터를 쓸 수있는 USB 드라이브가 연결되어 있지만 명령이 이미 실행 된 후 이전 출력을 텍스트 파일로 저장하려면 어떻게해야합니까?

이것이 멋진 GUI 내부의 터미널 에뮬레이터라면 마우스를 사용하여 텍스트를 선택하고 복사하여 문서에 붙여 넣었을 것입니다. 그리고 명령이 오류를 일으킨다는 것을 알았을 때, 파일로 파이프를 연결하여 시작했을 것입니다. 그러나 추가 출력이 놀랍습니다.

명령을 다시 실행하지 않고 이전 명령의 텍스트 출력을 파일로 저장하려면 어떻게합니까? 이것이 가능합니까?


화면에서 텍스트를 선택하는 방법을 찾고 있었지만 지금까지는 프롬프트에 입력 한 텍스트를 사용하여이 작업을 수행하는 방법 만 찾고 있습니다.
IQAndreas

출력 리디렉션을 사용해 보셨습니까?
eyoung100

2
@ eyoung100 "파이핑"의 또 다른 단어인가요? 에서처럼 dd if=/dev/sda of=/backups/sda.img > result.txt. 그렇다면 문제는 이미 dd명령을 실행 한 것 입니다. 모든 비용으로, 나는 어떤 상황에서는 불가능한 명령을 다시 실행하지 않기를 원합니다.
IQAndreas

2
이것이 Linux라고 가정합니다 : install gpm . (필요한 경우 시작하십시오 (예 :) service start gpm). 마우스 왼쪽 버튼을 누른 상태에서 영역을 쓸어 내십시오. cat > outputfile마우스 오른쪽 버튼을 입력 하고 클릭하여 방금 선택한 영역을 붙여 넣습니다.
Mark Plotnick

1
목적이 "정보를 유지하는 것"이라면, 최후의 수단은 카메라를 잡고 스크린 사진을 찍는 것입니다. (그리고 이론적으로는 OCR을 실행할 수도 있습니다.)
Scott

답변:


15

리눅스 커널은 해당 /dev/vcsa*[ttynum]장치에 VTS의 화면 로그를 저장해야 합니다.

다음이 작동하는 이유입니다.

echo hey >/dev/tty2
dd bs=10 count=1 </dev/vcs2

... 인쇄 ...

hey       

해당 /dev/vcsa[ttynum]장치는 형식화 된 텍스트의 인코딩 된 버전을 화면에 저장하는 반면 /dev/vcs[ttynum]일반 덤프는 저장됩니다. vcsa[ttynum]장치가 각 화면에 문자와 그 속성뿐만 아니라 참조 청각 장애의 표시 각각의 논리 페이지의 선두에 문자열 설명 바이트 쌍 인코딩됩니다 라인을, 열은 계산합니다.

@kasperd가 지적했듯이 실제로 \aBEL이 모든 문자 사이에 인코딩 되었다고 가정하면 잘못되었습니다 . 기본 색상 조합은 종 문자와 일치합니다.

당신의 목적을 위해 /dev/vcs[ttynum]아마도 가장 사용하기 쉽습니다. 여기의 l차이에서 OOK는 :

echo hey >/dev/tty2
dd bs=10 count=1 </dev/vcs2 |
sed -n l

...인쇄물...

hey       $

...과...

echo hey >/dev/tty2
dd bs=10 count=1 </dev/vcsa2 |
sed -n l

...인쇄물...

0\200\000\004h\ae\ay\a$

1
vcsa모든 문자 사이에 같은 문자를 넣지는 않습니다. 화면에 어떤 문자가 있고 어떤 색이 있는지 알려주는 바이트 쌍을 제공합니다. 기본 색상 조합은 벨 문자와 일치합니다.
kasperd

@kasperd-감사합니다. 더 낫습니까?
mikeserv

그게 낫다. 👍
kasperd

2

(에에 / 로그) 다른 단자와 실행으로 이동 sudo screendump N > screenoutput.txt, N원하는 터미널의 수입니다.

백 로그가 없습니다. 그 가상 콘솔이 하나를 유지하면 본 적이 없습니다. 그러나 그것은 당신이 그 터미널에서 볼 수있는 모든 것을 얻습니다.


그것이 작동한다면, 아마도 /dev/vcsa*[1-9]*- (수퍼 유저 권한에 대한 것입니다) 에서 그것을 가져 오기 때문일 것입니다 . 리눅스 콘솔은 대부분의 3. * 시리즈에 대한 백 로그를 지원했다고 생각합니다. 어떻게 장치 를 사용할/dev/vcsa*[1-9]* 수 있는지 잘 모르겠지만 방법이있을 수 있습니다 .
mikeserv

전환하면 백 로그가 지워지고 현재 화면에 표시된 항목 만 유지되므로 다른 콘솔로 전환하지 않는 것이 좋습니다.
Gilles 'SO- 악의를 멈춰라'

@ mikeserv 예. 음, 매뉴얼 페이지가 사용하는 말 것 모두 /dev/vcs$i/dev/vcsa$i. 읽기 쉬운 결과를 제공합니다. ;-)
Sidhekin

@Gilles Ah, 백 로그가 있습니까? 그러나 screendump같은 콘솔에 있어도 이해가되지 않습니다.
Sidhekin

1
Shift-PageUp을 한 번 이상 입력하면 스크롤 백을 볼 수 있습니다. gpm을 통해 마우스를 사용하는 것 이외의 스크롤 백에서 텍스트를 스너프하는 방법을 모르겠습니다.
Mark Plotnick
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.