web-dev-qa-db-fra.com

Comment afficher à la fois une sortie de ligne de commande sur la console et enregistrer la sortie dans un fichier texte?

Comment puis-je exécuter Sudo apt-get install par BOTH voir le processus d'installation (long dans mon cas) et enregistrer sa sortie dans un fichier texte?

24
user284234

utilisez la commande script. Il va copier tout ce qui va à l'écran dans un fichier

script -c "Sudo apt-get install things" script-file.script
17
exore

Vous pouvez utiliser la commande tee pour accomplir cela.

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

Regardez ici pour plus d'informations , ou exécutez man tee

Remarque: comme d'autres l'ont mentionné, 2>&1 est nécessaire pour rediriger STDERR vers STDOUT afin de détecter les erreurs éventuelles. Voir cette question StackOverflow pour une bonne explication de ce que fait 2>&1.

52
Aaron

tee fera le travail comme requis.

Pour capturer la sortie dans un fichier, utilisez:

Sudo apt-get install your_software | tee log_file.txt

Cela ne fera que capturer la sortie, mais pas les messages d'erreur. Si vous souhaitez également enregistrer des messages d'erreur, modifiez la commande comme suit:

Sudo apt-get install your_software 2>&1  | tee log_file.txt
14
Alex C

Un des atouts de apt-get (et APT en général) est qu’ils stockent les fichiers journaux de presque tout, même la sortie du terminal de toute commande exécutée dans le /var/log/apt. Par exemple, il s’agit de la dernière entrée de mon /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

Maintenant, en comparant avec la sortie réelle:

➜  ~  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) ...

Cela m'a sauvé plusieurs lignes qui ne sont pas pertinentes dans la plupart des cas, et cela le fait automatiquement. Donc, vous n'avez besoin d'aucune commande supplémentaire pour faire ce que vous voulez faire, apt-get le fait pour vous.

8
Braiam

essayez tee commande. Vous pouvez trouver ici quelques exemples.

Utilisation simple:

  <command> | tee file

exemple:

  Sudo apt-get install whatYouWant | tee outputFile
1
Lety