找回密碼 或 安全提問
 註冊
|註冊|登錄

伊莉討論區

搜索
發表文章前請先閱讀相關版規尊貴會員無限下載附件安全提問(回答) 和 永久尊貴會員 事宜
三上悠亞催眠gegd
mg 火影ㄐㄩㄣㄉ渚恋生人妖溫泉nhdta 77教師

休閒聊天興趣交流學術文化旅遊交流飲食交流家庭事務PC GAMETV GAME
熱門線上其他線上感情感性寵物交流家族門派動漫交流貼圖分享BL/GL
音樂世界影視娛樂女性頻道潮流資訊BT下載區GB下載區下載分享短片
電腦資訊數碼產品手機交流交易廣場網站事務長篇小說體育運動時事經濟
上班一族博彩娛樂

[繁]最強肉盾的迷宮攻

河南商丘 男子不滿店

[簡]通靈王 FLOWERS -

[繁]佐佐木與文鳥小嗶

〖高清繁〗霹靂天機貳

[繁]SYNDUALITY Noir
WINDOWS 分享區LinuxWINDOWS討論MAC OS X
查看: 17031|回復: 25

[原創] Shell script 教學[複製鏈接]

Rank: 2Rank: 2

帖子
917
積分
698 點
潛水值
18594 米
發表於 2013-4-25 03:25 PM|顯示全部樓層
本帖最後由 l12436 於 2013-5-3 09:37 AM 編輯

小弟來發一下shell script的教學,基本上就是linux指令的整合。
由於小弟的shell script都是要寫的時候才會想到要寫甚麼,我會慢慢發佈一些教學。
#!/bin/bash
list=$(ls -b | grep 'tar\.gz')
for file in $list
do
     echo $file
done

這個是小弟常用的程式碼片段,他可以搜尋我們需要的檔案。後面的grep是過濾結果,這次我們要尋找的檔案室tar.gz,也就是使用tar zcvf指令壓縮的檔案。類似的片段可以達到一次重複命名多個檔案。
...
瀏覽完整內容,請先 註冊登入會員
若瀏覽伊莉的時侯發生問題或不正常情況,請使用Internet Explorer(I.E)。

使用道具檢舉

erobyi 該用戶已被刪除
發表於 2013-4-27 08:47 PM|顯示全部樓層
如果你忘記伊莉的密碼,請在登入時按右邊出現的 '找回密碼'。輸入相關資料後送出,系統就會把密碼寄到你的E-Mail。

無意中發現,怎grep不到呢?在一些條件下?
egrep應比較好用。。。
開頭要有檔名,中間一點,以c後綴結尾。
試出來的,參考看看,多謝您的心得分享。




補充內容 (2013-4-27 08:49 PM):
無意中發現的,正好在grep一些東西。。。
附件: 你需要登錄才可以下載或查看附件。沒有帳號?註冊

使用道具檢舉

Rank: 2Rank: 2

帖子
917
積分
698 點
潛水值
18594 米
發表於 2013-4-27 09:57 PM|顯示全部樓層
如果發覺自己無法使用一些功能或出現問題,請按重新整理一次,並待所有網頁內容完全載入後5秒才進行操作。
因為grep支援正規化表示,所以有些會不一樣。
正常來講你直接使用'\.c'就好了。
若對尊貴或贊助會員有任何疑問,歡迎向我們查詢。我們的即時通或MSN: admin@eyny.com

使用道具檢舉

Rank: 2Rank: 2

帖子
917
積分
698 點
潛水值
18594 米
發表於 2013-4-27 10:02 PM|顯示全部樓層
若對尊貴或贊助會員有任何疑問,歡迎向我們查詢。我們的即時通或MSN: admin@eyny.com
本帖最後由 l12436 於 2013-4-27 10:20 PM 編輯

剛剛發現因為我的程式碼是手寫的,沒有測試過XDDD。所以可能會有錯XD
我把教學放在一樓好了
若新密碼無法使用,可能是數據未更新。請使用舊密碼看看。

使用道具檢舉

erobyi 該用戶已被刪除
發表於 2013-5-3 09:16 AM|顯示全部樓層
如果你忘記伊莉的密碼,請在登入時按右邊出現的 '找回密碼'。輸入相關資料後送出,系統就會把密碼寄到你的E-Mail。
l12436 發表於 2013-4-27 10:02 PM
下載: 訪客無法瀏覽下載點,請先 註冊登入會員

剛剛發現因為我的程式碼是手寫的,沒有測試過XDDD。所以可能會有錯XD
我把教學放在一樓好了 ...


都無關係啊。。。
...
瀏覽完整內容,請先 註冊登入會員





附件: 你需要登錄才可以下載或查看附件。沒有帳號?註冊

使用道具檢舉

Rank: 2Rank: 2

帖子
917
積分
698 點
潛水值
18594 米
發表於 2013-5-3 09:23 AM|顯示全部樓層
若對尊貴或贊助會員有任何疑問,歡迎向我們查詢。我們的即時通或MSN: admin@eyny.com
本帖最後由 l12436 於 2013-5-3 09:27 AM 編輯
erobyi 發表於 2013-5-3 09:16 AM
下載: 訪客無法瀏覽下載點,請先 註冊登入會員

都無關係啊。。。
明白整體的意思就好
好像都那樣寫,因為好眼熟。。。
...
瀏覽完整內容,請先 註冊登入會員
分享使你變得更實在,可以使其他人感到快樂,分享是我們的動力。今天就來分享你的資訊、圖片或檔案吧。

使用道具檢舉

erobyi 該用戶已被刪除
發表於 2013-5-3 11:46 AM|顯示全部樓層
l12436 發表於 2013-5-3 09:23 AM
下載: 訪客無法瀏覽下載點,請先 註冊登入會員

這個其實我已經知道了==,我是用linux快4年的老手了,我的桌上型電腦已經沒有安裝windows了。所以這個部份 ...



這不是egrep,這就是grep啊,basic 的grep(grep-G)
...
瀏覽完整內容,請先 註冊登入會員
若瀏覽伊莉的時侯發生問題或不正常情況,請使用Internet Explorer(I.E)。

使用道具檢舉

Rank: 2Rank: 2

帖子
917
積分
698 點
潛水值
18594 米
發表於 2013-5-3 09:02 PM|顯示全部樓層
回覆中加入附件並不會使你增加積分,請使用主題方式發佈附件。
erobyi 發表於 2013-5-3 11:46 AM
下載: 訪客無法瀏覽下載點,請先 註冊登入會員

這不是egrep,這就是grep啊,basic 的grep(grep-G)
在下不是用egrep。。。

哈,基本上我不太會用他的進階功能,因為到目前為止我寫的script還沒需要用到他。...
瀏覽完整內容,請先 註冊登入會員

使用道具檢舉

sleepless-man 該用戶已被刪除
發表於 2013-5-11 09:23 AM|顯示全部樓層
若新密碼無法使用,可能是數據未更新。請使用舊密碼看看。
好強的功力
真的是蠻厲害的

感謝大大分享~

使用道具檢舉

ardisia 該用戶已被刪除
發表於 2013-5-27 03:17 PM|顯示全部樓層
若新密碼無法使用,可能是數據未更新。請使用舊密碼看看。
大概就是以下幾個的組合

getopts
bash 的基本指令
sed /awk
regular expression  (特別重要)

就可以寫出很好用的shell script




分享使你變得更實在,可以使其他人感到快樂,分享是我們的動力。今天就來分享你的資訊、圖片或檔案吧。

使用道具檢舉

Rank: 2Rank: 2

帖子
917
積分
698 點
潛水值
18594 米
發表於 2013-5-27 09:59 PM|顯示全部樓層
ardisia 發表於 2013-5-27 03:17 PM
下載: 訪客無法瀏覽下載點,請先 註冊登入會員

大概就是以下幾個的組合

getopts

是,不過我的都是用基礎指令堆起來了,當然,只有了解基礎的shell不夠,我後來寫的程式只了解基礎很難實作出我要的程式。...
瀏覽完整內容,請先 註冊登入會員

使用道具檢舉

Rank: 2Rank: 2

帖子
917
積分
698 點
潛水值
18594 米
發表於 2013-6-25 11:09 PM|顯示全部樓層
最近多完了一個東西
adduser='
        <window title="input argument" window_position="1" default_height="320" default_width="480">
                <vbox>
                        <text>
                                <label>argument</label>
...
瀏覽完整內容,請先 註冊登入會員

使用道具檢舉

阿爾托利亞saber 該用戶已被刪除
發表於 2013-6-26 12:01 AM|顯示全部樓層
如果發覺自己無法使用一些功能或出現問題,請按重新整理一次,並待所有網頁內容完全載入後5秒才進行操作。
證想學呢 謝謝大大分享啊
如果瀏覽伊莉時速度太慢或無法連接,可以使用其他分流瀏覽伊莉,www01.eyny.com(02,03)。

使用道具檢舉

erobyii 該用戶已被刪除
發表於 2013-6-28 10:24 AM|顯示全部樓層
若對尊貴或贊助會員有任何疑問,歡迎向我們查詢。我們的即時通或MSN: admin@eyny.com
本帖最後由 erobyii 於 2013-6-28 10:34 AM 編輯

教學03
  1. arg="$@"
  2. argu=(${argu// / })
  3. for (( i=0; i<${#argu[@]}; i=i+1 ))
  4. do
  5.   if [ -f "${argu[$i]}" ]; then
  6.     mv "${argu[$i]}" "${argu[$i]//tar.gz/tgz}"
  7.   fi
  8. done
複製代碼


程式碼要用code才行,像這樣。比較整齊。。。
===================================
研究一下教學03。。。

教學03

arg="$@"               
argu=(${argu// / })                                #1 把傳入的參數做成數組
for (( i=0; i<${#argu[@]}; i=i+1 ))        #2 for 中間的是 array 長度
do
  if [ -f "${argu[$i]}" ]; then                    #3 若有檔案存在,就mv xxx xxx.tgt
    mv "${argu[$i]}" "${argu[$i]//tar.gz/tgz}"
  fi
done


1.  argu=(${argu// / }) 是否有錯?

2. $@ 就是 positional parameter,會變成這種形式 $1 $2 $3

3. ${argu//xxx/yyy} 就是若 argu 有match xxx,便以yyy代之。//   就是 greedy match

4 ${#argu[@]}  就是數組長 ${#xxx},開頭有個#,都長度有關係。。

5 ${argu[$i]}  就是數組元素



P.S. 版主您好,我的密碼本不小心全刪了,不是多重分身,這樣可以嗎?



補充內容 (2013-6-28 10:38 AM):
linux 工具的學習也是好重要

補充內容 (2013-6-29 08:22 AM):
多謝大大...
瀏覽完整內容,請先 註冊登入會員
若瀏覽伊莉的時侯發生問題或不正常情況,請使用Internet Explorer(I.E)。

使用道具檢舉

Rank: 2Rank: 2

帖子
917
積分
698 點
潛水值
18594 米
發表於 2013-6-28 08:13 PM|顯示全部樓層
如果發覺自己無法使用一些功能或出現問題,請按重新整理一次,並待所有網頁內容完全載入後5秒才進行操作。
erobyii 發表於 2013-6-28 10:24 AM
下載: 訪客無法瀏覽下載點,請先 註冊登入會員

教學03

1.有,把${argu// / }改成${arg// / },因為程式是手打的,沒有測試。
2.那個單純只是擷取所有的參數,可以使用for list in $@去讀取。
...
瀏覽完整內容,請先 註冊登入會員





回覆中加入附件並不會使你增加積分,請使用主題方式發佈附件。

使用道具檢舉

您需要登錄後才可以回帖 登錄 | 註冊

Powered by Discuz!

© Comsenz Inc.

重要聲明:本討論區是以即時上載留言的方式運作,對所有留言的真實性、完整性及立場等,不負任何法律責任。而一切留言之言論只代表留言者個人意見,並非本網站之立場,用戶不應信賴內容,並應自行判斷內容之真實性。於有關情形下,用戶應尋求專業意見(如涉及醫療、法律或投資等問題)。 由於本討論區受到「即時上載留言」運作方式所規限,故不能完全監察所有留言,若讀者發現有留言出現問題,請聯絡我們。有權刪除任何留言及拒絕任何人士上載留言,同時亦有不刪除留言的權利。切勿上傳和撰寫 侵犯版權(未經授權)、粗言穢語、誹謗、渲染色情暴力或人身攻擊的言論,敬請自律。本網站保留一切法律權利。
回頂部