Shell
tar 提取取決於文件 名?
我經常從 sourceforge.net 下載帶有 wget 的壓縮包。
然後命名下載的文件,例如
SQliteManager-1.2.4.tar.gz?r=http:%2F%2Fsourceforge.net%2Fprojects%2Fsqlitemanager%2Ffiles%2F&ts=1305711521&use_mirror=switch
當我嘗試
tar xzf SQliteManager-1.2.4.tar.gz\?r\=http\:%2F%2Fsourceforge.net%2Fprojects%2Fsqlitemanager%2Ffiles%2F\&ts\=1305711521\&use_mirror\=switch
我收到以下錯誤消息:
tar (child): Cannot connect to SQliteManager-1.2.4.tar.gz?r=http: resolve failed gzip: stdin: unexpected end of file tar: Child returned status 128 tar: Error is not recoverable: exiting now
將文件重命名為
foo.tar.gz
提取後工作完美。有沒有一種方法,在提取之前我不會每次都強制重命名目標文件?
您看到的錯誤原因可以在GNU tar 文件中找到:
如果存檔文件名包含冒號 (’:’),則假定它是另一台機器上的文件
$$ … $$
也就是說,它被解釋
SQliteManager-1.2.4.tar.gz?r=http
為主機名並嘗試將其解析為 IP 地址,因此出現“解析失敗”錯誤。同樣的文件繼續說:
如果您需要使用名稱中包含冒號的文件,則可以通過使用“–force-local”選項來禁止遠端磁帶驅動器行為。