답변:
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
그렇죠?