linux 如何取消缓冲区和捕获LFTP EOF命令的输出?

yrdbyhpb  于 2023-06-05  发布在  Linux
关注(0)|答案(1)|浏览(506)

我有以下命令来镜像一些文件与LFTP:

unbuffer lftp $PROTOCOL://$URL -u ${USER},${PASS} << EOF > ${LOGSTDOUT}
set dns:fatal-timeout never
set sftp:auto-confirm yes
set mirror:use-pget-n 50
set mirror:parallel-transfer-count 2
set mirror:parallel-directories yes
set mirror:include-regex $REGEX
set log:enabled/xfer yes
set log:file/xfer $LOG
set xfer:use-temp-file yes
set xfer:temp-file-name *.lftp
mirror -c -v --loop --Remove-source-dirs "$REMOTEDIR" "$LOCALDIR"
quit
EOF

我正在尝试捕获此命令的输出。我已经使用xfer输出到一个日志文件中,但遗憾的是,这并没有显示出我想要的方便的进度%。
有什么想法吗我上面的unbuffer尝试是不成功的。

vecaoik1

vecaoik11#

感谢@pjh的建议,我使用script得到了以下解决方案:

env TERM=dumb script -a $LOGSTDOUT -c "$(cat <<- EOF
    lftp $PROTOCOL://$URL -u ${USER},${PASS} << EOFF
    set dns:fatal-timeout never
    set sftp:auto-confirm yes
    set mirror:use-pget-n 50
    set mirror:parallel-transfer-count 2
    set mirror:parallel-directories yes
    set mirror:include-regex $REGEX
    set log:enabled/xfer yes
    set log:file/xfer $LOG
    set xfer:use-temp-file yes
    set xfer:temp-file-name *.lftp
    mirror -c -v --loop --Remove-source-dirs "$REMOTEDIR" "$LOCALDIR"
    quit
    EOFF
EOF
)"

env TERM=dumb是我发现的一个随机行,它从输出到文件中删除ANSI转义码。

相关问题