回答:
script
コマンドを使用します。画面に表示されるすべてのものをファイルにコピーします
script -c "sudo apt-get install things" script-file.script
script
コマンド出力をファイルに送信しますが、画面には表示しません。
script -c "history" ~/hist.txt
と鋸出力が示すScript started
とScript done
、私は、画面上の実際のコマンドの出力を見ていません。
history
は、シェルの組み込みコマンドであり、外部コマンドではありません。何が起こるかです:1)スクリプトが起動し、2)スクリプトが履歴コマンドを検索し、それを見つけられないので、シェルを介してこれを実行する必要があると推測します。3)スクリプトはhistory
シェルを介してコマンドを実行します 4)新しいシェルが起動し、history internalコマンドを実行します。これは新しい非対話型シェルであるため、履歴には何も言うことはありません。
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はシェルにドロップし、シェルを終了すると終了します。複数のコマンドなどを許可します。さらに、より多くの「フォーマット」情報を保持し、より多くのもの(画面のクリアなど)の再生を許可します(ただし、出力を台無しにすることもあります... ymmv)
|&
の代わりに2>&1 |
bashで
tee
必要に応じてジョブを実行します。
出力をファイルにキャプチャするには、次を使用します。
sudo apt-get install your_software | tee log_file.txt
これは出力のみをキャプチャし、エラーメッセージはキャプチャしません。エラーメッセージも記録する場合は、コマンドを次のように変更します。
sudo apt-get install your_software 2>&1 | tee log_file.txt
apt-get(および一般的なAPT)の利点の1つは、ほとんどすべてのログファイルを保存することです/var/log/apt
。たとえば、これはmyの最後のエントリです/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
よね?