真是丟臉
一整晚了寫不出來
問題卡在如何判斷超過2M的檔案怎麼判定副檔名為.LOG
沒法判斷無法前進阿
麻煩知道指令的前輩指點小弟吧
感激不盡

=======================
寫一支shell log_manager.sh



a. 檢查目錄中所有大於 2M的文字檔(用find指令),將其路徑,檔名,大小以及現在時間紀錄於 /var/log/log_manager.log

,需用累加的方式



b. 如果此超過2M的文字檔副檔名為.log,則複製此檔為 xxx.log.date,其中date為現在時間,格式為

year-month-day-hour-minute,並將此檔案壓縮成 xxx.log.date.tgz後將其搬移到另一個掛載的磁碟(假設為/mnt/extradisk),而原來的文字檔內容清空

; 整個過成如果有任何錯誤也有把錯誤訊息放在 /var/log/log_manager.log



c. 執行b步驟時,如果發現掛載磁碟已經有之前備份相同大小的同檔案,則不做備份
文章關鍵字

linux下有許多的功能會需要用到pipeline來組合成
如果想要深入了解的話,我是覺的unix power tools這本書很好


雖然我猜這份題目是你的作業
不過,regular expresion加上grep是一個很好的filter
這的確是我的作業其中一部分
只是寫了一晚一直翻書
還是找不到可以判斷副檔名的工具
頭大中...
如果你能幫忙的話

卡在這中間很頭痛
因為前後都做完了
就斷中間一節
至於解法的話
我已經提示到grep加上regular expresion(正規表示法)可以當filter(過濾器)
還有pipeline(管線 '|' )的用法
請先想想,你那一題是要從什麼東西裡過濾出什麼
過濾的標準是什麼(.log ??)

學校應該有教regular expresion吧
還有在shell script裡的的代數($xxx)要怎麼樣使用


我盡量用提示的,幫太多怕會害了你


話說回來,我會這麼早起床也是在煩腦功課的問題= =
那位大神能夠教教我laker要怎麼樣畫出漂亮的layout
我總覺的我畫出來的跟同學的比起來差好多......
grep是會用
不過有些參數沒學到沒使用過(過濾器沒學過)
不過要用到正規標示法的話就麻煩了
那是艇囉唆的東西
目前也沒其他辦法
先試試看

shell script裡的的代數($xxx)
這個還會
基本上參數的使用都還可以
但是要從一堆訊息中挑出關鍵字
然後在導入別的地方
在判斷那些導入的關鍵字
這我就頭大了

.LOG是一個ASCII檔案而已
那是用來作判斷的(判斷大小)
find的使用說明裡
你會發現可以找特定名字的
find <path> -name '*.log'
再自己玩玩看
剩下的你可以試出來才對
不會regular expresion的話這一題我想不出其它方法解了
話說回來,我個人是覺的regular expresion and pipeline
是寫script最常用到也最重要的東西,其它的指令要用的時候查一查就有了
像我不管是寫c++ QT 還是 hspice 的時候,語法其實也沒記得多少
頂多只會記概念,等要用到的時候再憑自己的印象去找語法
不記得參數的話我倒覺的沒差
我自己用linux的時候也是沒什麼在背參數
因為常用到的幾個都已經寫成script了
會記得的大概就是ls -al 或rm -rf 之類的

真正重要的事是學會如何使用手邊現有的東西去解決問題


真的要加油了,等到暑假的時候真的建議去看unix power tools
中文是unix超級工具
看完保證功力大增

我儘量
十點之前沒解出來我也只能乖乖去學校向老師投降了
本來以為會使用LINUX應該很容易
沒想倒寫程式是另一個世界(shell)
趕工阿...
假設在 $FILE 存了所有大於20m的檔名
那打上echo $FILE | grep *.log 所跑出來的結果
不知道會不會是過濾後的結果
我太久沒寫了,有點忘了
比如 FILE_2 = "echo $FILE | grep *.log"
清空文字檔
echo > 目標檔

如果要時間的話
date +%H 就是指小時數
date +%M 就是是分
文章分享
評分
評分
複製連結

今日熱門文章 網友點擊推薦!