共計 2234 個字符,預計需要花費 6 分鐘才能閱讀完成。
自動寫代碼機器人,免費開通
丸趣 TV 小編給大家分享一下 Linux 上無痛文件提取的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
它們有很多格式,從 .gz 到 .tbz2,這些文件的命名方式都各有一些不同。當然,你可以記住所有從存檔中提取文件的各種命令以及它們的選項,但是你也可以將所有經驗保存到腳本中,而不再擔心細節。
在本文中,我們將一系列提取命令組合成一個腳本,它會調用適當的命令根據文檔名提取文件的內容。該腳本首先以一些命令來驗證是否已經提供了一個文件名作為參數,或要求運行腳本的人提供文件名。
#!/bin/bash if [ $# -eq 0 ]; then echo -n filename read filename else filename=$1 fi if [ ! -f $filename ]; then echo No such file: $filename exit $? fi
了解了么? 如果未提供任何參數,腳本將提示輸入文件名,如果存在則使用它。然后,它驗證文件是否實際存在。如果不是,那么腳本退出。
下一步是使用 bash 的 case 語句根據存檔文件的名稱調用適當的提取命令。對于其中某些文件類型(例如 .bz2),也可以使用除 tar 之外的其它命令,但是對于每種文件命名約定,我們僅包含一個提取命令。因此,這是帶有各種存檔文件名的 case 語句:
case $filename in *.tar) tar xf $filename;; *.tar.bz2) tar xjf $filename;; *.tbz) tar xjf $filename;; *.tbz2) tar xjf $filename;; *.tgz) tar xzf $filename;; *.tar.gz) tar xzf $filename;; *.gz) gunzip $filename;; *.bz2) bunzip2 $filename;; *.zip) unzip $filename;; *.Z) uncompress $filename;; *) echo No extract option for $filename esac
如果提供給腳本的文件擴展名與腳本已知的擴展名都不匹配,那么會發出“No extract option for $filename” 的消息。如果缺少你使用的任何存檔類型,只需將它們與所需的提取命令一起添加即可。
將 bash 頭添加到腳本頂部,使其可執行,然后就可以開始了。
#!/bin/bash if [ $# -eq 0 ]; then echo -n filename read filename else filename=$1 fi if [ ! -f $filename ]; then echo No such file: $filename exit $? fi
case $filename in *.tar) tar xf $filename;; *.tar.bz2) tar xjf $filename;; *.tbz) tar xjf $filename;; *.tbz2) tar xjf $filename;; *.tgz) tar xzf $filename;; *.tar.gz) tar xzf $filename;; *.gz) gunzip $filename;; *.bz2) bunzip2 $filename;; *.zip) unzip $filename;; *.Z) uncompress $filename;; *.rar) rar x $filename ;; *)
如果你希望腳本在提取文件時顯示內容,請將詳細選項 (-v) 添加到每個命令參數字符串中:
#!/bin/bash if [ $# -eq 0 ]; then echo -n filename read filename else filename=$1 fi if [ ! -f $filename ]; then echo No such file: $filename exit $? fi
case $filename in *.tar) tar xvf $filename;; *.tar.bz2) tar xvjf $filename;; *.tbz) tar xvjf $filename;; *.tbz2) tar xvjf $filename;; *.tgz) tar xvzf $filename;; *.tar.gz) tar xvzf $filename;; *.gz) gunzip -v $filename;; *.bz2) bunzip2 -v $filename;; *.zip) unzip -v $filename;; *.Z) uncompress -v $filename;; *) echo No extract option for $filename esac
以上是“Linux 上無痛文件提取的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注丸趣 TV 行業資訊頻道!
向 AI 問一下細節
丸趣 TV 網 – 提供最優質的資源集合!