課堂練習解答
step2: 建立目錄test1, 在test1下建立檔案aaa, bbb, ccc 練習1 step1: 列出家目錄下的檔案 cd (回到家目錄) ls (列出目前目錄下的所有檔案) step2: 建立目錄test1, 在test1下建立檔案aaa, bbb, ccc mkdir test1 cd test1 使用pico來編輯文字檔aaa,bbb,ccc step3: 將範例檔example上傳至test1目錄下
step3: 將範例檔example上傳至test1目錄下 練習1 (con’t) step3: 將範例檔example上傳至test1目錄下 使用FileZilla之類的FTP client軟體 ip輸入cs工作站的ip, port為預設的21, id和密碼為cs工作站的id和密碼 step4: 建立目錄test2, 將test1目錄下aaa檔案copy至test2下 mkdir test2 cp test1/aaa test2 (假設test1和test2同在家目錄下, 而目前我們在家目錄底下)
step5: 在example下搜尋TA指定的字串 練習1 (con’t) step5: 在example下搜尋TA指定的字串 grep “this is” example (假設TA指定的字串為this is) step6: 刪除test1目錄下所有檔案 rm –r test1 (如果test1目錄下有檔案, 一定要用-r的選項才能將test1刪掉)
step2: 利用今天教的calc來計算example1和example2總共有多少行數和多少字數 練習2 step2: 利用今天教的calc來計算example1和example2總共有多少行數和多少字數 請利用wc指令來個別計算example1和example2的行數和字數 將wc指令的輸出導向某個檔案(ex: input) wc –l example1 > input wc –l example2 >> input 將input作為calc的輸入 calc < input 在本解答裡, 以計算行數為例, 要改成計算字數只需將選項改成-w
練習2 (con’t) wc會輸出哪個檔案有幾行, 所以會從input讀進來4個參數, 分別為example1行數, example1檔名,example2行數, example2檔名 為了讀取example2行數不出錯, 所以也要處理example1的檔名 calc.c的原始碼
step3: 如果不想讓別人來複製calc檔案, 可以將該目錄的權限作怎麼樣的設定? 練習2 step3: 如果不想讓別人來複製calc檔案, 可以將該目錄的權限作怎麼樣的設定? chmod 733 (將別人對於calc的讀取權限關掉) step4: 如果不想讓別人知道有calc檔案的存在, 該如何設定? 將其他人對於此目錄的執行權限關掉, 別人就無法使用cd進到此目錄 chmod g-x 目錄 chmod o-x 目錄 step3,4不是唯一解法,可自由發揮
step1:使用者在執行script時, 會給數個參數 練習3 (版本1) step1:使用者在執行script時, 會給數個參數 ex: practice.sh test1 test2 step2: 根據使用者給的參數, 在家目錄尋找是否有此目錄, 若是, 請列出此目錄裡面的所有檔案
版本1的解答
step3: 讓使用者輸入某個檔案名, 查詢此檔案是否為可執行檔 練習3 (版本2) step1: 使用者在執行script時, 會給一個參數, 是一個目錄名稱(要真實存在的目錄, 且目錄下有3個以上的檔案, 此目錄在家目錄下) ex: practice.sh test1 step2: 列出此目錄下的檔案 step3: 讓使用者輸入某個檔案名, 查詢此檔案是否為可執行檔 可以讓使用者一直輸入, 直到使用者輸入stop才停止輸入
step4: step3的迴圈停止後, 列出剛剛使用者所查詢的檔案 Ex: list=“$list $name” 使用list變數來存使用者所輸入的檔案, 最簡單的方式是將原本list和name這兩個string相加, 再重新assign給list變數 step5: 跳出選單讓使用者選擇要輸入哪個檔案, 且如何處置此檔案 選項1: 在此檔案搜尋是否有hello字串 選項2: 將此檔案copy至家目錄下 選項3: 將此檔案刪除
版本2的輸出
step4,5的部分
只要一打開終端機, 就會秀出自己的個人化設定 修改自己的.bashrc 練習4 只要一打開終端機, 就會秀出自己的個人化設定 修改自己的.bashrc Step1: 向使用者打招呼, 秀出今日日期 Step2: 事先將今日行程寫在檔案裡, 檔名為日期, 此檔案可以存在家目錄下 Step3: 依據今日日期, 去讀該檔, 先檢查是否有此檔案的存在, 若有, 則用cat讀取此檔, 將今日行程show在螢幕上; 若無, 則告訴使用者今日沒安特定行程
Step4: 將以下幾個指令改名 Step5: 將所改名的指令列出來 1. 將檔案權限改成可執行檔 2. 列出所有檔案(包含隱藏檔) 3. 將目錄刪掉 Step5: 將所改名的指令列出來
.bashrc的解答
假設我們接下了管理CS工作站的任務, 為了迎接cs14級的到來, 我們事先幫他們都把帳號建立好 練習5 假設我們接下了管理CS工作站的任務, 為了迎接cs14級的到來, 我們事先幫他們都把帳號建立好 請寫一個script, 幫助我們可以方便地建立大量的使用者 此練習只需要建立10個使用者, 帳號為u9962101~u9962110 密碼和帳號相同
沒有bonus的解答
將密碼設定都寫在script裡, 實在是太不彈性 比較好的作法, 是將密碼獨立出來另外存在一個文字檔 如何一一讀取文字檔裡的密碼 Bonus (+5%) 將密碼設定都寫在script裡, 實在是太不彈性 比較好的作法, 是將密碼獨立出來另外存在一個文字檔 如何一一讀取文字檔裡的密碼 使用輸入輸出導向(> or >> or < )和read指令
有bonus的解答 將使用者的密碼寫在另外一個檔案pw ex.sh < pw (假設此script的檔名為ex.sh)