dd
방금 명령을 실행하는 데 지난 2시간을 보냈습니다.(또는 유사한 "다시 실행하기 어려운" 시나리오를 상상해 보세요)GUI가 없는 Live CD에서 나오는 것은 믿을 수 있는 "다중 창"( CTRL+ALT+F#
) Bash 터미널뿐입니다.
아아, 명령 중에 dd
몇 가지 불쾌한 오류 메시지가 표시되었으며 유지하고 싶은 추가 정보가 있었습니다. 데이터를 쓸 수 있는 USB 드라이브를 연결했는데 명령을 실행한 후 이전 출력을 텍스트 파일에 어떻게 저장합니까?
이것이 멋진 GUI의 터미널 에뮬레이터라면 마우스를 사용하여 텍스트를 선택하고 복사한 다음 문서에 붙여 넣을 수 있습니다. 명령이 오류를 생성한다는 것을 알았다면 먼저 이를 파일로 출력했지만 아쉽게도 추가 출력은 놀랍습니다.
명령을 다시 실행하지 않고 이전 명령의 텍스트 출력을 파일에 어떻게 저장할 수 있습니까?가능합니까?
답변1
Linux 커널은 해당 장치에 vts 화면 로그를 저장해야 합니다 /dev/vcsa*[ttynum]
.
이것이 바로 다음 방법이 작동하는 이유입니다.
echo hey >/dev/tty2
dd bs=10 count=1 </dev/vcs2
...인쇄...
hey
해당 /dev/vcsa[ttynum]
장치는 서식이 지정된 텍스트의 인코딩된 버전을 화면에 저장하며 /dev/vcs[ttynum]
순수 덤프가 됩니다. 장치는 vcsa[ttynum]
각 화면 문자와 해당 속성을 설명하는 바이트 쌍과 참조된 tty를 나타내는 각 논리 페이지의 시작 부분에 있는 문자열을 인코딩합니다.행, 열계산.
@kasperd가 지적했듯이 이전에는 각 문자 사이에 BEL이 인코딩되어 있다고 가정했는데 \a
이는 잘못된 것이지만 실제로는 다음과 같습니다.기본 색상 조합은 벨 문자와 일치합니다.
귀하의 목적에 따라 /dev/vcs[ttynum]
사용하는 것이 가장 쉬운 방법일 것입니다. l
차이점을 살펴보겠습니다 .
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$
답변2
다른 터미널로 이동(/login)하여 원하는 터미널 번호가 있는 sudo screendump N > screenoutput.txt
곳을 실행하세요.N
잔고가 없어서 걱정이에요. 그 가상 콘솔 중 하나가 남아 있다면 나는 그것을 본 적이 없습니다. 하지만 이를 통해 해당 터미널의 모든 것을 볼 수 있습니다.