時間過得真是快!二月份入職,現在已經四月份了! 1.tar命令的小坑:當使用通配符*的時候,tar命令報錯: Not found in archive Root Cause: tar 命令的執行會先把 *.tar 翻譯成 a.tar; b.tar; c.tar.... 然後再添加進整個命令,形成 t ...
時間過得真是快!二月份入職,現在已經四月份了!
==================================================
1.tar命令的小坑:當使用通配符*的時候,tar命令報錯: Not found in archive
Root Cause: tar 命令的執行會先把 *.tar 翻譯成 a.tar; b.tar; c.tar.... 然後再添加進整個命令,形成 tar -xvf a.tar b.tar c.tar .... 的結構再執行tar,然而該指令還有一個功能是解壓縮某包中特定的文件,即 tar -xvf a.tar xxx.rmvb xxx.docx 。所以我們預期的輸出應該是a; b; c; 三個tar文件都被解壓縮成功,實際輸出卻變成在a當中尋找b和c並將二者單獨解壓縮出來,而在本案例中,a文件並沒有b; c; 兩個內容,所以出現了上述報錯。
Solution :在bash中使用管道和xargs: ls *.gz |xargs -n1 tar -xzf
使用迴圈
2.tar命令的小坑:當命令順序出錯的時候,報錯 You must....
tar -fxz spa.service_dc.tgz
│tar: You must specify one of the '-Acdtrux', '--delete' or '--test-label' options
│Try 'tar --help' or 'tar --usage' for more information.
由於Linux下打包工具的壓縮格式真的超級多(tar/tgz/tar.gz/tar.bz2/tar.xz),而tar 著一條命令能幹的事情也不少,所以剛接觸還真的會有些頭禿。
他的命令中可帶的選項,分為下麵幾種:
1.必選選項,有且只有一個,必須放在選項的第一個位置,否則報上面的錯。
-c 新建; -x 解壓; -t 查看壓縮文檔內容; -r追加; -u 更新包中的文件
2.壓縮選項,沒有的話就是單純的用tar打個包(不附帶壓縮功能),這類選項是可選的
-z 使用gzip進行之前選項的操作,對應的文件尾碼是*.tgz / *.tar.gz
-j 使用bzp2的演算法進行操作,對應的文件是*.tar.bz2
3.額外選項,建議放在最後一個選項的位置
-v 顯示操作步驟(都把什麼東西解壓出來了)
-f 使用文件名,文件名必須緊跟在這個選項後面!
3.
tar (child): ./tarFile/2019-03-19_00_17_45/spb.service_dc.tgz: Cannot open: No such file or directory
tar (child): Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error is not recoverable: exiting now