콘솔에 명령 줄의 출력을 표시하고 출력을 텍스트 파일로 저장하는 방법은 무엇입니까?


25

어떻게 실행할 수 sudo apt-get install에 의해 BOTH가 (긴 내 경우) 설치 과정을보고 하고 텍스트 파일로 출력을 저장?


약인가 apt-get그렇죠?
Braiam

@ Brai 내가 받아 들인 솔루션이 다른 모든 명령에 적용될 수 있다고 생각합니다. 그렇게 생각하십니까?

답변:


17

script명령을 사용하십시오 . 화면에 나오는 모든 것을 파일로 복사합니다.

script -c "sudo apt-get install things" script-file.script

script명령 출력을 파일로 보내지 만 화면에 표시하지 않습니다.
Aaron

2
@ BryceAtNetwork23. 명령을 시도 했습니까? 스크립트 화면에 출력을 보냅니다.
ex

1
나는했다. 나는 실행 script -c "history" ~/hist.txt하고 톱 출력을 표시 Script started하고 Script done,하지만 난 화면의 실제 명령의 출력을 표시하지 않았다.
Aaron

10
@ BryceAtNetwork23 history은 외부 명령이 아닌 쉘 내장 기능입니다. 결과 : 1) 스크립트 시작, 2) 스크립트는 history 명령을 검색하고 찾지 못하므로 쉘을 통해 실행해야한다고 생각합니다. 3) 스크립트는 history 쉘을 통해 명령 실행합니다. 4) 새 쉘이 시작되고 실행 기록 내부 명령이 실행됩니다. 이것은 새로운 비대화 형 쉘이기 때문에 역사는 말할 것도 없습니다.
ex

1
script대화식으로 실행할 수도 있습니다. script명령 프롬프트에 입력 하십시오. 새로운 쉘을 얻게되고, 입력 한 명령은 출력을 저장합니다. 입력 exit쉘을 종료하고 파일을 저장합니다. 기본적으로 출력이 호출 typescript되며 입력 여부 또는 명령 출력 여부와 상관없이 화면에 표시된 모든 내용이 포함됩니다. history명령은 여전히뿐만 아니라 새로운 쉘에서 사용할 수 있습니다.
Brian Minton

52

tee명령을 사용하여 이를 수행 할 수 있습니다 .

sudo apt-get install someapp 2>&1 | tee ~/someappInstall.txt

자세한 정보는 여기를 보거나 실행하십시오.man tee

참고 : 다른 사람들이 언급했듯이 2>&1오류를 발견하려면 STDERR을 STDOUT으로 리디렉션해야합니다. 실제로 수행 하는 작업에 대한 자세한 설명은 이 StackOverflow 질문 을 참조하십시오 2>&1.


"|"앞에 "2> & 1"을 추가하겠습니다
Olivier Dulac

2
script명령을 인용 할 필요가 없기 때문에이 방법이 더 실용적 입니다. 따라서 bash 완료와 같은 장점은 달성하기가 더 쉽습니다.
Dan

2
@Dan : 스크립트에는 -c "something ...": if가 필요하지 않습니다 : if는 쉘에 드롭하고 쉘을 종료하면 완료됩니다. 여러 명령 등을 허용합니다. 또한 더 많은 "포맷"정보를 유지하여 더 많은 것 (예 : 화면 지우기 등)을 재생할 수 있습니다 (그러나 출력을 엉망으로 만들 수 있습니다 ... ymmv)
Olivier Dulac

2
@Dan +는 함수, 별명, 내장 및 명령 그룹 및 서브 쉘과 함께 작동합니다. 허용되는 답변 IMO 여야합니다.
Darkhogg 2016 년

1
bash |&대신에 사용할 수 있습니다2>&1 |
jfs

15

tee 필요에 따라 작업을 수행합니다.

출력을 파일로 캡처하려면 다음을 사용하십시오.

sudo apt-get install your_software | tee log_file.txt

출력 만 캡처하지만 오류 메시지는 캡처하지 않습니다. 오류 메시지를 기록하려면 명령을 다음과 같이 수정하십시오.

sudo apt-get install your_software 2>&1  | tee log_file.txt

또는, 이후 bash 지원 |&연산자 , sudo apt-get install your_software |& tee log_file.txt의지 파이프 모두 표준 출력표준 에러tee. ( 다른 곳에서 이것을 제안한 JF Sebastian 에게 Kudos .)
Eliah Kagan

9

apt-get (및 일반적으로 APT)의 장점 중 하나는 거의 모든 항목에 대한 로그 파일을 저장한다는 것 /var/log/apt입니다. 예를 들어, 이것은 내 마지막 항목입니다 /var/log/apt/term.log.

Log started: 2014-06-20  16:46:08
(Reading database ... 252472 files and directories currently installed.)
Removing xdotool (1:3.20130111.1-3.1) ...
Processing triggers for man-db (2.6.7.1-1) ...
Log ended: 2014-06-20  16:46:33

이제 실제 출력과 비교하십시오.

➜  ~  sudo apt-get remove xdotool 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following package was automatically installed and is no longer required:
  libxdo3
Use 'apt-get autoremove' to remove it.
The following packages will be REMOVED:
  xdotool
0 upgraded, 0 newly installed, 1 to remove and 2 not upgraded.
After this operation, 135 kB disk space will be freed.
Do you want to continue? [Y/n] y
(Reading database ... 252472 files and directories currently installed.)
Removing xdotool (1:3.20130111.1-3.1) ...
Processing triggers for man-db (2.6.7.1-1) ...

그것은 대부분의 경우 관련이없는 여러 줄을 저장했으며 자동으로 수행됩니다. 따라서 원하는 작업을 수행하기 위해 추가 명령이 필요하지 않습니다. apt-get이 자동으로 수행합니다.


1

명령을 시도하십시오 . 당신은 찾을 수 있습니다 여기에 몇 가지 예입니다.

간단한 사용법 :

  <command> | tee file

예:

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