命令類似於 wc 但具有 tee 行為

命令類似於 wc 但具有 tee 行為

psql我想使用andCOPY指令備份資料庫。這是我的腳本:

psql "user=${USERNAME} host=${HOSTNAME} dbname=${DBNAME} password=${PASSWORD}" -c \
"COPY (SELECT * FROM tbl) ORDER BY id ASC) TO STDOUT WITH CSV HEADER;" | \
bzip2 -z -f --best -c > /home/${DBNAME}-${FILENAME}.csv.bz2

我還想知道從資料庫複製了多少行,但 psql 沒有這樣的功能。所以我需要外部命令。我需要這樣的東西:

psql ... | wc -l | bzip2

有什麼解決辦法嗎?我找到的唯一解決方案是使用 fifo:

mkfifo /home/backup.fifo
psql ... | tee /home/backup.fifo | bzip2

現在從另一個終端視窗我可以使用wc

wc -l /home/backup.fifo

答案1

兩者bash都有zsh一個>(pipeline)特點:

psql ... | tee >(wc -l) | bzip2

請注意,>這裡不是普通的重定向,而是語法的必要部分。>如果您想將其與實際重定向結合(中間有一個空格,這樣就不會被讀取為“ >>redirect-for-append”),您將需要一秒鐘的時間。

相關內容