
使用 eg 时rsync
,我希望tee
它的输出能够实时查看当前进度,并有日志供以后使用。仅使用管道,| tee logfile
日志文件将包含许多行
0 files...<CR>
100 files...<CR>
200 files...<CR>
其中回车<CR>
符用于让实时输出替换当前行。对于这stdout
部分来说tee
,这正是所需的行为,但是有什么方法可以让日志文件删除 a<CR>
和最后一个之间的任何内容<LF>
吗? (我并不是要求rsync
具体的答案,这只是一个例子!)也许sed
中间有一些管道?
答案1
你可以这样做:
... | tee /dev/stderr | grep -v $'\r' > logfile
或者:
.... | tee >(grep -v $'\r' > logfile)
这将有效地消除进步线的情况下rsync
。 bash 和 zsh$'...'
也>(...)
支持 ksh 语法,但不是标准的sh
。