2015-10-23 25 views
0

我想使用tee命令將bzip命令的stdop重定向到日誌文件,但它不起作用,並在tee命令中給出'-a'的錯誤。請參閱下面的錯誤,bzip命令不能與「tee -a」一起使用

> bzip2 file -c 1> tee -a logfile 

bzip2: Bad flag `-a' 
bzip2, a block-sorting file compressor. Version 1.0.5, 10-Dec-2007. 

    usage: bzip2 [flags and input files in any order] 

    -h --help   print this message 
    -d --decompress  force decompression 
    -z --compress  force compression 
    -k --keep   keep (don't delete) input files 
    -f --force   overwrite existing output files 
    -t --test   test compressed file integrity 
    -c --stdout   output to standard out 
    -q --quiet   suppress noncritical error messages 
    -v --verbose  be verbose (a 2nd -v gives more) 
    -L --license  display software version & license 
    -V --version  display software version & license 
    -s --small   use less memory (at most 2500k) 
    -1 .. -9   set block size to 100k .. 900k 
    --fast    alias for -1 
    --best    alias for -9 

    If invoked as `bzip2', default action is to compress. 
       as `bunzip2', default action is to decompress. 
       as `bzcat', default action is to decompress to stdout. 

    If no file names are given, bzip2 compresses or decompresses 
    from standard input to standard output. You can combine 
    short flags, so `-v -4' means the same as -v4 or -4v, &c. 

問題是什麼?爲什麼bzip正在考慮tee命令的'-a'標誌。

回答

0

嘗試:

bzip2 -c file | tee -a logfile 

|(管)重定向左命令的標準輸出向右命令的標準輸入。

-c是bzip2中的一個選項,表示Compress or decompress to standard output.。看到man bzip2

+0

可能需要'bzip2的-c'輸出到stdout(管道)。 – nos

+0

它不工作> bzip2 -c文件| tee -a日誌文件 BZh9rE8P。輸出是BZh9rE8P,不壓縮文件。在真實場景中,我不能更改命令的'1> tee -a logfile'部分,原因是它在函數中使用(例如,$ @ 1> tee -a logfile)$ @用於在函數中執行許多命令。 –

+0

如果你想壓縮文件,你不能使用'-c',只是'bzip2 file | tee'...此外''tee -a logfile'明顯是錯誤的,並且總會導致'-a logfgile'給bzip2。 – secolive

0

您的問題是1>是不是就bzip2命令的管道輸出到tee命令,而是將輸出重定向到其將被命名爲tee文件。此外,你可能不想使用-c。你應該使用管道|代替,如下:

bzip2 file | tee -a logfile 

另外,爲什麼bzip2的是抱怨的原因是因爲你上面提到的命令將被精確地解釋爲這一個:

bzip2 file -a logfile 1> tee 

因此,tee之後的所有參數實際上都被添加到bzip2命令中。

+0

感謝您的解釋。命令'bzip2文件-c | tee -a logfile'也不起作用。它打印一些垃圾行並且不創建壓縮文件。在真實場景中,我不能更改上面命令的'1> tee -a logfile'部分,原因是它在函數中使用(例如,$ @ 1> tee -a logfile)$ @用於執行許多命令在功能 –

+0

你不應該使用-c我猜;相應地更新後。此外,你應該糾正這個功能,因爲它顯然是錯誤的。 – secolive

0

正如其他人所指出的那樣,你要管,不能輸出重定向:

bzip2 file | tee -a logfile 

然而,bzip2不產生任何輸出;它只是用壓縮版本的文件替換給定的文件。你可能想管標準錯誤日誌文件:(2>&1份標準錯誤到標準輸出,然後可以通過管道輸送)

bzip2 file 2>&1 | tee -a logfile