tar 命令顯示進度條

2022-03-17 10:03:25 字數 1294 閱讀 6409

實現該功能需要安裝 pv,然後把需要處理的資料通過管道傳給 pv,最後再進行操作。

傳給 pv 的目的是為了知道已經處理的資料量大小,同時需要通過 -s 指定總共需要處理的資料量大小。

pv 的安裝一般的軟體管理工具都有提供:

如 centos 下 yum install pv

ubuntu : apt-get install pv

mac:brew install pv

pv 的詳細用法可參考:

mac:

tar -cf - questions.sql | pv -s $(($(du -sk questions.sql | awk '') * 1024)) | gzip > question.tar.gz

其他系統(ubuntu、centos ...):

tar -cf - questions.sql | pv -s $(du -sk questions.sql | awk '') | gzip > question.tar.gz

該命令將 questions.sql 壓縮到 question.tar.gz。

命令詳解:

tar -cf 我們知道 -f 是指定目標檔案,這裡 -f 後面是 - , 代表將需要壓縮的資料輸出到 stdout(標準輸出),這樣管道的後面才可以接收到需要處理的資料。

pv 命令的作用是,將輸入複製一遍然後輸出到 stdout,這樣最後的 gzip 命令才有資料可以處理,最後通過 gzip 命令把前面的輸出處理之後儲存到 question.tar.gz。

pv -s 後面一串的命令是獲取需要處理的所有資料的大小(單位:位元組),mac 下 du -sk 獲取到的數值是以 k 為單位的,而其他 *nix 系統則不一樣,引數需要改為 du -sb,同時也不需要再乘以 1024。

pv question.tar.gz | tar -zxf -

解壓命令沒那麼多引數,因為需要解壓的檔案大小已經確定,不需要我們手動計算一遍。

上面的命令通過 pv 讀取需要解壓的檔案到 stdout,然後通過管道傳遞給 tar 命令,tar 命令從標準輸入獲取要處理的資料進行解壓。

附 tar 壓縮顯示進度小指令碼: 

#!/bin/bash

if [[ $1 = '' ]]; then

echo "引數缺失,用法 'tarpv 檔名/目錄名'"

exit 1

fitar -cf - "$1" | pv -s $(($(du -sk "$1" | awk '') * 1024)) | gzip > $1.tar.gz

cp命令顯示進度條 Linux cp 顯示進度

bin bash param list param num total size 0 for i 0 i do r 1 echo cannot read 1.exit 1 size du s 1 awk total size total size size shift done target 1 s...

進度條顯示

最近的專案需求中涉及到了顯示進度的圖示,因此就簡單實現了一下,拿出來獻醜了 方法實現很簡單,主要是使用了framelayout的特殊性來實現的疊加顯示的 有次需求的同學們可以參考一下呦3 成功的 失敗的 進行中的 初始化 param attrs private void initview attri...

如何顯示進度條?

在許多程式中,程式需要自己做些事情而不受使用者輸入的干擾。這時就需要給使用者一些可見的顯示,以表明程式正在做一些事情及完成的進度。在wxpython中,這通常使用乙個進度條來管理,如圖9.5所示。圖9.5 例9.5顯示了產生圖9.5的 例9.5 生成乙個進度條 import wx if name m...