У меня есть функция zsh, которая обновляет мою систему (.deb
пакеты, pip
пакеты, texlive пакеты...).
Это похоже на это:
up() {
emulate -LR zsh
[[ -d "${HOME}/log" ]] || mkdir "${HOME}/log"
LOGFILE="${HOME}/log/update_system.log"
__update_system 2>&1 | tee -a "${LOGFILE}"
}
Последняя строка звонит __update_system
функция и каналы ее вывод к tee
, который в свою очередь должен отобразить вывод на терминале и добавить его в файл, так, чтобы я мог рассмотреть его позже, если что-то пошло не так, как надо.
Одна из команд, выполняемых __update_system
:
$ apt-file update
Это, кажется, выполняется, но его вывод не зарегистрирован файл. Все другие команды (включая aptitude update
) зарегистрированы.
Я пытался понять путем выполнения этой команды в оболочке:
$ apt-file update >/tmp/log
Снова, apt-file update
кажется, выполняется, но вывод не зарегистрирован как /tmp/log
пусто.
Я думал, что, возможно, вывод отправляется на стандартной погрешности, таким образом, я попробовал:
$ apt-file update >/tmp/log 2>&1
Но я получил тот же результат, пустой файл.
Я попробовал в ударе, который также дал мне пустой файл.
Вот некоторые детали о моей системе:
$ 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
О zsh:
$ zsh --version
zsh 5.5.1-dev-0 (x86_64-pc-linux-gnu)
Об ударе:
$ bash --version
GNU bash, version 4.4.0(1)-release (x86_64-unknown-linux-gnu)
О нас 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 <ubuntu-devel-discuss@lists.ubuntu.com>
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.
Как перенаправить вывод apt-file update
в файл?
apt-file
сценарий жемчуга./dev/tty
а не к stdout
(различие объяснено на этом, ТАК ответьте),Таким образом... это зарегистрирует вывод к logfile.log
script -c "apt-file update" logfile.log