堆積迷宮積木


用網頁分享資訊

  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. 自己放一隻老鼠, 一片乳酪, 開始玩吧!