web-dev-qa-db-fra.com

Comment rediriger la sortie de `apt-file update` dans un fichier?

J'ai une fonction zsh qui met à jour mon système (.deb paquets, pip paquets, paquets texlive, ...).

Cela ressemble à ceci:

up() {
  emulate -LR zsh
  [[ -d "${HOME}/log" ]] || mkdir "${HOME}/log"
  LOGFILE="${HOME}/log/update_system.log"
  __update_system 2>&1 | tee -a "${LOGFILE}"
}

La dernière ligne appelle la fonction __update_system et dirige sa sortie vers tee, qui doit à son tour afficher la sortie sur le terminal et l'ajouter à un fichier afin que je puisse l'examiner ultérieurement si quelque chose se passe. faux.

Une des commandes exécutées par __update_system est:

$ apt-file update

Il semble être exécuté, mais sa sortie n'est pas enregistrée dans le fichier. Toutes les autres commandes (y compris aptitude update) sont consignées.

J'ai essayé de comprendre en exécutant cette commande dans un shell:

$ apt-file update >/tmp/log

Encore une fois, apt-file update semble être exécuté, mais la sortie n'est pas consignée car /tmp/log est vide.

Je pensais que peut-être la sortie est envoyée sur l'erreur standard, alors j'ai essayé:

$ apt-file update >/tmp/log 2>&1

Mais j'ai le même résultat, un fichier vide.

J'ai essayé à Bash, ce qui m'a également donné un fichier vide.


Voici quelques détails sur mon système:

$ uname -a
Linux ubuntu 4.4.0-135-generic #161-Ubuntu SMP Mon Aug 27 10:45:01 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

À propos de zsh:

$ zsh --version
zsh 5.5.1-dev-0 (x86_64-pc-linux-gnu)

À propos de bash:

$ bash --version
GNU bash, version 4.4.0(1)-release (x86_64-unknown-linux-gnu)

À propos de apt-file:

$ aptitude show apt-file
Package: apt-file
State: installed
Automatically installed: no
Version: 2.5.5ubuntu1
Priority: optional
Section: universe/admin
Maintainer: Ubuntu Developers <[email protected]>
Architecture: all
Uncompressed Size: 92,2 k
Depends: Perl, curl, libconfig-file-Perl, libapt-pkg-Perl, liblist-moreutils-Perl, libregexp-assemble-Perl,
         libfile-temp-Perl
Suggests: openssh-client, Sudo
Description: search for files within Debian packages (command-line interface)
 apt-file is a command line tool for searching files contained in packages for the APT packaging system. You can search
 in which package a file is included or list the contents of a package without installing or fetching it.

Comment rediriger la sortie de apt-file update dans un fichier?

5
user938271
  • apt-file est un script Perl.
  • Il utilise diffindex-download . C'est un autre script Perl.
  • Celui-ci écrit à /dev/tty et non à stdout (la différence est expliquée sur ceci SO réponse )
  • Soooo ... cela va enregistrer la sortie sur logfile.log

    script -c "apt-file update" logfile.log
    
8
Rinzwind