Text-Processing
像 wc 一樣的命令,但具有 tee 行為
我想使用
psql
和COPY
命令備份數據庫。這是我的腳本: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 不是正常的重定向,而是語法的必要部分。>
如果您想將它與實際重定向結合起來(中間有一個空格,因此它不會被讀作>>
重定向附加),您將需要一秒鐘。