堆積迷宮積木


用網頁分享資訊

  1. 建立一個新的 目錄 directory, 並進到裡面去工作:
            mkdir public_html
            ls -l
            pwd
            cd puTAB
            ls -l
            pwd
    
  2. 用 lynx 瀏覽器本網頁, 並下載這篇 網頁樣版
  3. 把網頁樣版裡面的 <BASE HREF="..."> 這句話刪除掉。
  4. 更改檔名: mv teTAB index.html 再用 ls -l 檢查一下。
  5. 打開你家的門, 並打開 public_html 子目錄的門與燈, 最後用 firefox 看你的網頁: http://localhost/~帳號/index.html
  6. 簡單修改一下網頁內容, 並在 firefox 內按 「重新整理」。
  7. 把你製作的迷宮放到網頁上與大家分享: mv ../1.maz . 這句話意思是將 parent directory 上一層目錄 ".." 底下的 1.maz 檔案搬到 current directory 目前工作目錄 "." 來。 並且修改 index.html, 裡面放一個 超連結 hyperlink 指向這個檔案。 從 firefox 裡面試一下看是否成功。
  8. 請確認你的迷宮大小為 10x20: wc -clL 1.maz 應該印出 10 210 21 1.maz 如果不是的話, 等一下其他同學就會把你的迷宮丟在一旁不用了。
  9. 上面這個指令是什麼意思? 請下 man wc 看手冊。 空格鍵是下一頁; b 是上一頁; q 是離開; 更多操作鍵, 請見 less 簡介。

不要急著學習/製作花俏的網頁, 目前請以文件內容為重 -- 金玉其表底下的東西 比較重要。

整批收割

  1. 以下動作請在另外一個新建的子目錄進行, 以免混亂。 例如 mkdir ~/maze-zoo ; cd ~/maze-zoo
  2. 先用 lynx 看同學做的網頁: lynx http://localhost/~同學的帳號/ 並按 \ 檢視原始碼。 確認沒有問題之後, 離開。 (瀏覽網頁時, 如果目錄後面沒有接檔名, 伺服器那邊通常會自動去找 index.html)
  3. lynx -source http://localhost/~同學的帳號/ 壯觀吧...
  4. 把剛才在螢幕上一閃而過的同學網頁存檔: lynx -source http://localhost/~同學的帳號/ > a.html 這個 > 叫做 輸出重新導向 output redirection, 用意是將原本要印在標準輸出裝置 standard output (其實就是 「螢幕」 啦) 上的資料, 改印到檔案裡面去。 用 ls -l 檢查一下, 甚至用 lynx a.html 看一下複製回來的內容。
  5. 請用相同的方式抓同學的迷宮 1.maz, 但存檔名稱改為 "同學的學號.maz" , 並檢視其內容。
  6. 學用 for 迴圈: for f in abc pqr xyz ; do echo $f ; done
  7. 用 for 迴圈一次抓三位同學的迷宮: for f in 學號甲 學號乙 學號丙 ; do lynx -source http://localhost/~$f/1.maz > $f.maz ; done
  8. 檢視老師提供的 「所有同學名冊」: less ... (用 vim 看也可以; 不過現在只是要看, 並沒有要修改, 所以用更簡單的 less 就夠了。)
  9. 整批收割: for f in $(cat ...) ; do lynx -source http://localhost/~$f/1.maz > $f.maz ; done

「學視障者用的文字瀏覽器有什麼用?」 「學命令列有什麼用?」 這些問題終於得到一點解答 :-) 希望大家從今天起可以打破滑鼠選單的迷思。 重複, 機械化, 有規律的動作, 就不應該是人做的事! 用滑鼠來做, 並沒有比較高明。

拼圖

  1. 看看是否每個迷宮都正確? wc -clL *.maz
  2. 顯然並不是。 挑出至少形狀正確的迷宮: wc -clL *.maz | perl -ne 'print if /10 *210/' (記得用上箭頭!) 不必擔心指令太長, 反正忘記了可以回來抄; 重點是理解 /.../ 裡面的東西: * 表示前面那個字元重複任意次。
  3. 同上, 但把檔名留下來就好: wc -clL *.maz | perl -ne 'print if /10 *210 *21/' | perl -pe 's/.* //' 這裡的 . 表示任何 一個 字元; 所以最後那個子句的意思是: 把 「任意字元出現任意次」 直到遇到最後一個空格為止, 全部刪除掉。
  4. 在上句最後面加上 > ok.lst 存檔。
  5. 隨便挑 6 個檔案, 我們要像拼積木一樣把它們拼起來:
        paste -d : 學號甲.maz 學號乙.maz 學號丙.maz > a
        paste -d : 學號丁.maz 學號戊.maz 學號己.maz > b
        cat a b > big.maz
    
  6. 用 less 分別看一下 a 與 b 的內容, 然後進 vim 編輯 big.maz。 等一下如有任何閃失, 記得 u 是 undo (還原)
  7. 先把所有冒號去掉: 遊標移到第一列, 按 shift-V 進入 visual line mode, 再按 G 移到最後一列, 最後打 ":s/://g"
  8. 再把所有老鼠變成空格: ":1,$ s/@/ /g" 這裡的 1,$ 表示從第一列到最後一列。
  9. 最後把所有乳酪變成空格: ":% s/C/ /g" (以上三種 "選取全部範圍" 的方式, 效果都一樣。)
  10. 自己放一隻老鼠, 一片乳酪, 開始玩吧!

命令列讀本

  1. 目錄
  2. 前言
  3. 瀏覽
  4. 套件
  5. 圖片整形
  6. 老鼠迷宮
  7. 迷宮積木
  8. 誰常上機?
  9. 網頁做簡報
  10. tidy 網頁
  11. 編碼
  12. 客製
  13. Regexp
  14. 目錄比較
  15. 聯集差集

附錄

  1. GUI 求生
  2. 基本指令
  3. 阿貴管理