Text-Processing

像 wc 一樣的命令,但具有 tee 行為

  • April 26, 2012

我想使用psqlCOPY命令備份數據庫。這是我的腳本:

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

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

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

請注意,>here 不是正常的重定向,而是語法的必要部分。>如果您想將它與實際重定向結合起來(中間有一個空格,因此它不會被讀作>>重定向附加),您將需要一秒鐘。

引用自:https://unix.stackexchange.com/questions/35999