답변:
script명령을 사용하십시오 . 화면에 나오는 모든 것을 파일로 복사합니다.
script -c "sudo apt-get install things" script-file.script
script명령 출력을 파일로 보내지 만 화면에 표시하지 않습니다.
script -c "history" ~/hist.txt하고 톱 출력을 표시 Script started하고 Script done,하지만 난 화면의 실제 명령의 출력을 표시하지 않았다.
history은 외부 명령이 아닌 쉘 내장 기능입니다. 결과 : 1) 스크립트 시작, 2) 스크립트는 history 명령을 검색하고 찾지 못하므로 쉘을 통해 실행해야한다고 생각합니다. 3) 스크립트는 history 쉘을 통해 명령 을 실행합니다. 4) 새 쉘이 시작되고 실행 기록 내부 명령이 실행됩니다. 이것은 새로운 비대화 형 쉘이기 때문에 역사는 말할 것도 없습니다.
script대화식으로 실행할 수도 있습니다. script명령 프롬프트에 입력 하십시오. 새로운 쉘을 얻게되고, 입력 한 명령은 출력을 저장합니다. 입력 exit쉘을 종료하고 파일을 저장합니다. 기본적으로 출력이 호출 typescript되며 입력 여부 또는 명령 출력 여부와 상관없이 화면에 표시된 모든 내용이 포함됩니다. history명령은 여전히뿐만 아니라 새로운 쉘에서 사용할 수 있습니다.
tee명령을 사용하여 이를 수행 할 수 있습니다 .
sudo apt-get install someapp 2>&1 | tee ~/someappInstall.txt
자세한 정보는 여기를 보거나 실행하십시오.man tee
참고 : 다른 사람들이 언급했듯이 2>&1오류를 발견하려면 STDERR을 STDOUT으로 리디렉션해야합니다. 실제로 수행 하는 작업에 대한 자세한 설명은 이 StackOverflow 질문 을 참조하십시오 2>&1.
script명령을 인용 할 필요가 없기 때문에이 방법이 더 실용적 입니다. 따라서 bash 완료와 같은 장점은 달성하기가 더 쉽습니다.
-c "something ...": if가 필요하지 않습니다 : if는 쉘에 드롭하고 쉘을 종료하면 완료됩니다. 여러 명령 등을 허용합니다. 또한 더 많은 "포맷"정보를 유지하여 더 많은 것 (예 : 화면 지우기 등)을 재생할 수 있습니다 (그러나 출력을 엉망으로 만들 수 있습니다 ... ymmv)
|&대신에 사용할 수 있습니다2>&1 |
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 .)
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이 자동으로 수행합니다.
apt-get그렇죠?