Linux伺服器 Linux伺服器

伺服器建置實務上課教材

伺服器建置實務 > 課程內容 > 第 1 堂課 - 檔案管理與 vim 初探

第 1 堂課 - 檔案管理與 vim 初探

上次更新日期 2018/10/02

操作作業系統,最重要的當然就是從檔案管理開始!檔案管理有目錄檔案、一般檔案的分類等~另外,文書編輯器的 vim 也需要理解才行!

  • 1.1: 操作習慣的建立
  • 1.2: 檔案與目錄管理
  • 1.3: vim 程式編輯器的使用
  • 1.4: 本日練習
  • 1.5: 課後練習

1.1: 操作習慣的建立

操作習慣的建立是相當重要的!可以讓你以後操作 Linux 會變得非常的簡易!幾個重要的技巧注意一下:

  1. 使用 [tab] 按鈕
    盡量使用 [tab] 按鈕 (鍵盤最左邊的按鈕) 來補齊命令或補齊檔名
    [student@localhost ~]$ ifc[tab][tab]     # 這就是命令補齊
    [student@localhost ~]$ ll /var/sp[tab]   # 這就是檔名補齊
    [student@localhost ~]$ nmcli con[tab]    # 這就是參數補齊
    
    意思是,如果一切順利的話,接在第一個文字的後面,就是命令補齊,接在檔名資料的地方,就是檔名補齊,接在指令後面的某些參數, 也可以做成參數補齊的功能喔!所以,多按幾次 [tab] 按鈕,就可以知道你有沒有打錯字。
  2. 善用 command --help
    若有看不懂的參數與指令的用法,盡量使用 command --help 的方式查詢,例如查看 date +%Y 輸出的結果,那個 %Y 的功能是什麼呢?
    [student@localhost ~]$ date --help
    
    輸出的結果往下一直查詢,你就可以看到 %Y 的說明了!
  3. 熟記 [ctrl]+c 來中斷某個程式的運作
    不知道做了什麼蠢事,就用 [ctrl]+c 來終止,例如下面的範例:
    [student@localhost ~]$ ll '/etc/ 
    >     <==這裡按下 [ctrl]+c 來中斷吧!
    

另外也請記得,你能夠輸入指令的地方就只有在提示字元出現時 ($ 或 #) 才能夠輸入指令,否則應該就是在某個軟體運作當中,那就請不要隨便輸入指令喔。

進行底下的操作:
  1. 歷史命令呼叫方式為『 history 』你使用:
    • h[tab][tab]
    • hi[tab][tab]
    • his[tab][tab]
    看看個別出現什麼情況
  2. 未來你要執行 history 時,可以怎麼輸入指令?
  3. 要找『 cal 』這個指令的說明,可以怎麼處理?
  4. 承上,看到語法項目寫的情況如下:
    Usage:
     cal [options] [[[day] month] year]
    
    選項:
     -1, --one        show only current month (default)
     -3, --three      show previous, current and next month
     -s, --sunday     Sunday as first day of week
     -m, --monday     Monday as first day of week
     -j, --julian     output Julian dates
     -y, --year       show whole current year
     -V, --version    display version information and exit
     -h, --help       display this help text and exit
    
    注意看那個 Usage 的部份,一堆中括號的意義代表什麼?這點很重要喔!要熟記中括號的意義!
  5. 有個指令名稱為『 cat 』,請進行如下的動作:
    • 使用 cat --help 查詢意義與用法
    • 輸入 cat 之後,再出現的畫面中,隨便輸入幾個字元就按下 [enter]
    • 中斷離開 cat 指令
    • 輸入『 cat /proc/cpu???? 』那個 ??? 是忘記檔名了!該怎麼辦?
    • 同樣的,在 /proc 裡面有個 cmd 開頭的檔名,那是什麼檔名?呼叫出該檔名的內容!
  6. 輸入『 date +??? 』之後,可以出現『 20181001 』,意即是 YYYYMMDD (西元年月日) 的樣式,請找出來 ??? 應該為何?

1.2: 檔案與目錄管理

一般來說,我們建立的資料大多為一般檔案,包括文字檔、資料庫檔、電子試算檔、簡報檔等等。那目錄 (資料夾) 的功能是什麼? 其實目錄存在的目的是讓我們可以將檔案進行分類~例如鳥哥經常使用年份將檔案進行歸檔,這樣資料比較好搜尋!底下我們就來實做如何管理目錄、檔案等。

  • 檔名與工作目錄的觀察

觀察檔名請用 ls 或 ll 來進行觀察,例如觀察家目錄下的檔名有哪些?

[student@localhost ~]$ ll
列出本目錄 (pwd) 之後,你會發現最頂端為斜線 (/),那就是根目錄,檢查根目錄下有哪些檔名?
[student@localhost ~]$ pwd
/home/student   (最左邊有 / )
[student@localhost ~]$ ll /

觀察到的檔名中,最左邊的字元,基本上有兩種檔案格式:

  • d 開頭:該檔名為目錄檔
  • - 開頭:該檔名為一般檔案
例題:請上機使用指令查詢系統相關資訊後並回答下列問題:
  1. 請問 /etc/hosts 是一般檔案還是目錄檔案?如何觀察?
  2. 請問 /var/spool/mail 是一般檔案還是目錄檔案?如何觀察(你應該要觀察上一層檔名才對)
  • 工作目錄的切換與觀察

切換工作目錄可以使用『 cd 目錄 』來轉換,例如切換到 /dev/shm 目錄下,並列出該目錄名稱

[student@localhost ~]$ ll            (記憶一下出現的資訊)
[student@localhost ~]$ cd /dev/shm   (切換路徑了)
[student@localhost shm]$ pwd         (檢查一下路徑所在)
[student@localhost shm]$ ll          (同樣是 ll ,跟剛剛的輸出結果為啥不同)

此時按下『 ll 』指令時,出現的資料會跟你在家目錄的資料不同。這也就是說,當你要執行任何指令動作時,可能經常得要使用 pwd 去檢查你的工作目錄才行! 否則,你的資料很可能會遺失在整個檔案系統海當中。

例題:請實做後回答底下的問題:
  1. 簡單的回想與說明一下,上面的範本中,為何兩次 ll 的結果會不同?
  2. 當直接輸入『 cd 』而已,後面不加目錄參數時,工作目錄會跑去哪個目錄?
  • 目錄的建置

建立新目錄,可以使用『 mkdir 目錄名稱』,例如建立 /dev/shm/student 目錄的方法:

[student@localhost ~]$ cd /dev/shm        (一般來說,我們習慣跳到底層目錄處理任務)
[student@localhost shm]$ pwd              (一定要確認目錄所在處)
[student@localhost shm]$ mkdir student    (開始建立)
[student@localhost shm]$ ll               (你應該會看到有出現 student 檔名才對!)

事實上,上述的範例你也可以單純的使用『 mkdir /dev/shm/student 』一行指令來處理,且在任何地方均可以執行成功。只是一般來說, 為了確認上層目錄的存在,習慣上,我們還是會先移動工作目錄到上層 (/dev/shm) 之後,再建立新目錄。

實際做出下列操作結果:
  1. 能否直接建立 /dev/shm/unit01/check/ 目錄?
  2. 若無法一個指令建立成功,你該如何處理?
  • 一般檔案的複製與觀察

檔案的複製,可以使用『 cp 來源檔 目的目錄 』來處理,例如,你要將 /etc/hosts 複製到 /dev/shm/student/ 目錄下,該如何處理?

# 1. 先確認有沒有存在 /dev/shm/student
[student@localhost ~]$ cd /dev/shm
[student@localhost shm]$ ll           (要確認存在,若不存在請 mkdir student 即可)
[student@localhost shm]$ cd student   (再進入子目錄當中)
[student@localhost student]$          (準備輸入指令了!)

# 2. 將檔案複製過來 
[student@localhost student]$ ll /etc/hosts     (來源檔案是否存在)
[student@localhost student]$ cp /etc/hosts .   (開始複製,注意參數一定有兩個以上)
[student@localhost student]$ ll                (做完一定要檢查!看看複製有沒有成功)

務必記得 cp (copy) 指令的參數一定有兩個以上,一個是來源,一個是目標。所以,不能是『 cp /etc/hosts 』而已!此外,複製時,你一定要檢查:

  • 來源檔是否存在 (本例中就是用 ll /etc/hosts 做檢查)
  • 目標目錄是否存在 (本例中就是用 cd /dev/shm/student 做處理)

等等,為什麼 cp 的參數後面不是使用 /dev/shm/student ,而是使用『 . 』呢?你覺得哪個打字比較方便?呵呵! 所以,有幾個目錄很重要,你一定要記憶一下:

  • /:根目錄,所有檔案的起源
  • .:本目錄的意思
  • ..:上一層目錄的意思
  • ~:使用者家目錄的意思思

我們經常會在網頁的超連結當中使用到 .. 或 / 就是這個路徑的功能!

實做底下的題目:
  1. 切換工作目錄到 /dev/shm/unit01/check 當中
  2. 觀察 /etc/crontab (1)是否存在? (2)是否為一般檔案
  3. 將上述檔案複製到本目錄下,並且觀察是否複製成功
  4. 相同的步驟觀察 /etc/cron.d (1)是否存在? (2)是否為一般檔案
  5. 將上述檔案複製到本目錄下,並且觀察是否複製成功
  • 檔名的絕對路徑與相對路徑

基本上,檔名的撰寫有所謂的絕對路徑與相對路徑之分。從根目錄 (/) 開始撰寫起來的檔名,在你的系統上面一定只有一個!例如 /home/student 一定只有一個, 這就是絕對路徑。但是從非根目錄撰寫起來的檔名,就是相對路徑的檔名!所謂的『相對路徑』就是相對於你工作目錄的路徑了!

# 1. 先觀察 /home/student, /student 有沒有差異?
[student@localhost ~]$ ll -d /home/student
[student@localhost ~]$ ll -d /student

# 2. 再觀察 /dev/shm/student 與 /student 有沒有差異?
[student@localhost ~]$ ll -d /dev/shm/student
[student@localhost ~]$ ll -d /student

# 3. 移動工作目錄到 /dev/shm 之後,觀察 /dev/shm/student 與 ./student 有沒有差異?
[student@localhost ~]$ cd /dev/shm
[student@localhost shm]$ ll  -d  /dev/shm/student
[student@localhost shm]$ ll  -d  ./student
完成底下的實做:
  1. 如何切換路徑到 /var/spool 去?
  2. 如何觀察此目錄下的所有檔名?與檔名的類型 (目錄/檔案)
  3. 承上,有沒有找到名為 mail 與 postfix 的檔名?另外,如何進入 mail 這個目錄?
  4. 觀察此目錄以及上層目錄的檔名資料
  5. 能不能切換路徑到剛剛看到的那個 postfix 目錄去?
  6. 觀察有沒沒有 /usr/local/etc 目錄的存在?若有,請切換到該目錄去,同時觀察 (1)提示字元的目錄名稱與 (2)此目錄下的檔名
  7. 切換路徑到 /etc 底下去,然後 (1)提示字元的目錄名稱與 (2)此目錄下的檔名
  8. 回到家目錄
透過這個實做,讓你了解到為什麼我們經常會需要觀察檔名、使用 pwd 觀察工作目錄的重要性!
  • 目錄檔案的複製與觀察

我們剛剛在複製 /etc/cron.d 時,由於該檔名是個目錄檔,所以, cp 預設會忽略目錄,只是忽略,倒不是什麼嚴重的錯誤!別擔心! 如果想要複製目錄就得要使用『 -a 』或『 -r 』的選項,所以來處理一下剛剛的 /etc/cron.d 的複製吧!

# 1. 目標要複製到 /dev/shm/unit01/check 底下,所以,我們先切換過去該目錄:
[student@localhost ~]$ cd /dev/shm/unit01/check

# 2. 確認 /etc/cron.d 是檔案還是目錄
[student@localhost check]$ ll -d /etc/cron.d     (-d 很重要,只觀察目標而已!不列出內部檔名)
[student@localhost check]$ cp /etc/cron.d .      (再做一次錯誤的)
[student@localhost check]$ cp -a /etc/cron.d .   (正確的做一次看看!)
[student@localhost check]$ ll                    (你要能看到 cron.d 存在才行!)

因為我們使用一般帳號的身份,因此許多檔案複製可能有權限方面的問題,不要緊張!那是正常的!

請嘗試將 /etc/sysconfig 這個檔名複製到 /dev/shm/student 底下去!複製完畢請觀察!
  1. 先切換目錄到 /dev/shm/student 底下
  2. 先觀察有沒有 /etc/sysconfig 的存在,是目錄還是檔案呢?
  3. 開始複製!
  4. 複製完畢請觀察!
  • 檔案的刪除行為

檔案的刪除使用 rm 來刪除喔!不過如果要刪除目錄,得要加上 -r 的選項才行!不過,刪除 rm 這個指令是很嚴重的指令!因為, Linux 跟 Windows 不一樣,你刪除之後,基本上,動作是不可逆的~也就是說,被刪除的檔案就不見了!他並不會被放置到資源回收桶! 所以,操作 rm 時,請務必小心在意!

# 1. 刪除 /dev/shm/student/hosts: (1)先確認 hosts 是存在的, (2)然後刪除他
[student@localhost student]$ cd /dev/shm/student  (最好再次確認工作目錄所在)
[student@localhost student]$ ll hosts             (要確認有這個檔名的存在)
[student@localhost student]$ rm hosts             (確認無誤才刪除)
[student@localhost student]$ ll                   (確認確實已經不存在這個檔案了才對)

# 2. 嘗試刪除目錄:
#    先確認 sysconfig 裡面存在 network-scripts,並且進入 sysconfig,嘗試刪除 network-scripts
[student@localhost student]$ ll -d sysconfig         (先確認有此目錄)
[student@localhost student]$ cd sysconfig            (進入此目錄吧!)
[student@localhost sysconfig]$ ll                    (確認存在 network-scripts)
[student@localhost sysconfig]$ rm network-scripts    (先做一次失敗的)
[student@localhost sysconfig]$ rm -r network-scripts (再做一次應該會成功的)
[student@localhost sysconfig]$ ll                    (確認 network-scripts 不在了)

上述的動作中,請特別觀察使用『 rm 目錄』與『 rm -r 目錄』的差別。

完成底下的實做:
  1. 進入 /dev/shm/unit01/check 目錄
  2. 列出所有在該目錄下的檔名,並找出一般檔案以及目錄檔案
  3. 刪除一般檔案
  4. 刪除目錄檔案
  5. 在列出所有檔名,看看是否已經不存在上述的檔案資料了。

1.3: vim 程式編輯器的使用

如同第 0 堂課所說的,未來我們在伺服器的角度上,大多使用純文字界面來處理 Server 的各項事物,因此,應該不會給你 gedit 這一類的圖形編輯器。 那我們如何編輯文字檔?此時就得要透過 vim 了!事實上,vim 不是文書編輯器而已,他主要是『程式編輯器』,可以透過檔案的副檔名來查看系統的語法是否正確! 他就是文字版的 notepad++ 的意思!只是,在 vim 的環境中,不要使用滑鼠,除非你要複製貼上,否則,一定不要使用滑鼠支援喔! 都是透過鍵盤來處理各項任務即可。

  • 啟用 vim 的方法:『 vim filename 』

使用『 vim 檔名』就可以編輯檔案!例如再次複製 /etc/hosts 到 /dev/shm/student 之後,使用 vim hosts 查看一下該檔案的內容:

[student@localhost ~]$ cd /dev/shm/student   (切換工作目錄)
[student@localhost student]$ cp /etc/hosts . (複製檔案到本目錄下)
[student@localhost student]$ ll              (在開始之前,務必確認檔案是存在的!)
[student@localhost student]$ vim hosts       (編輯剛剛 ll 看到的 hosts 檔案)
vim 的起始畫面

畫面其實還是分為上下兩個部份的,最下方那一行是目前的狀態列!所以,實際的內容是在上頭,最後一行並不是實際的內容!要注意喔! 同時,最後一行的右邊還有一些額外的資訊可以參考!要離開這個檔案,只要按下『 :q 』就可以離開 vim 的環境了。

  • vim 的三種模式狀態

一開始進入 vim 時,你進入到一般模式,在該模式下,你不能編輯文字~只能進行複製、貼上、搜尋與取代等任務,除非按下 i 或 o 才會進入編輯打字模式。 那要儲存的時候,還得要切回一般模式後,才能夠開始儲存!基本上,三種模式的關係有點像這樣:

vim 模式的切換

最簡單的 vim 使用方式可以這樣說:

  1. 使用『 vim filename 』去打開那個 filename 的檔案 (也可以不存在)
  2. 你需要編輯了,按下 i 來打字 (最下方一行會顯示插入模式)
  3. 打字完成了,按下 [esc] 回到一般指令模式 (最下方一行的插入不見了)
  4. 要儲存了按下 :w 來寫入 (最下方一行顯示寫入了)
  5. 打字完成也儲存了,離開就按 :q 即可

讓我們來練習一下 vim 這個編輯器吧!很重要!一個簡單的練習!多練習幾次囉!

  1. 開啟檔案: vim hosts
  2. 觀察檔案: 看最底下一行,會顯示這個檔案內有幾行與幾個字元,還有游標在哪裡的資訊
  3. 進入編輯模式: 按下 i 之後,看最後一行左下方有沒有變成『插入 (insert)』模式,可以編輯了
  4. 編輯文字: 在第一行新增一段文字『 welcome to my class 』
  5. 離開編輯模式: 按下 [esc] 看看左下方最後一行是否已經離開插入模式
  6. 命令列模式: 在一般模式按下『 : 』,就是冒號,游標會移動到最後一行最左方
  7. 儲存: 最後一行出現『 :w 』就是儲存
  8. 觀察檔案資料: 按下『 :w ↵ 』之後,系統會告訴你有沒有儲存成功!
  9. 離開檔案: 最後一行按下『 :q↵ 』之後,就可以離開 vim 檔案了!
  10. 觀察檔案內容: 最終使用『 cat hosts 』看一下檔案內容, cat 不是貓,而是叫出檔案內容的指令

現在,讓我們來建立一個新檔案,在裡面建立新內容:

  1. 回到家目錄: cd
  2. 開啟新檔: vim unit01_vim.txt
  3. 觀察新檔案的資訊: 注意看到左下方,會告訴你是個 NEW 的新檔案
  4. 進入編輯模式: 按下 i 吧
  5. 開始編輯: 輸入你的姓名、學號等等有的沒的!
  6. 離開編輯模式: [esc]
  7. 儲存: :w
  8. 離開: :q
  • 強制離開或強制儲存

有的時候你可能會打錯字,或者是按錯按鈕,會導致 vim 出現問題。這個時候你可以選擇不儲存離開。問題是,你更動過檔案,因此,要離開時, vim 會一直跟你說,你無法直接離開,那怎辦?

  1. 繼續編輯: vim unit01_vim.txt
  2. 進入編輯模式: i
  3. 直接編輯: 隨便打幾個字元
  4. 離開編輯模式: [esc]
  5. 不儲存離開: :q
  6. 觀察錯誤: 左下方會告訴你,可以使用 ! 強制離開的訊息!
  7. 強制離開: :q!
  • vim 常用按鈕

在 vim 裡面有幾個常見的按鈕這裡先彙整一下~有空你可以回來這裡慢慢看!

慣用的指令說明
i, [esc] i 為進入編輯模式, [esc] 為離開編輯模式
G 移動到這個檔案的最後一列
gg 移動到這個檔案的第一列
dd dd 為刪除游標所在行,5dd 為刪除 5 行,ndd 為刪除 n 行
yy yy 為複製游標所在行,5yy 為複製 5 行,nyy 為複製 n 行
p 在游標底下貼上剛剛刪除/複製的資料
u 復原前一個動作
:w 將目前的資料寫入硬碟中
:q 離開 vim
:q! 不儲存 (強制) 離開 vim

可以稍微了解一下,如果有大檔案的時候,要怎麼進行 vim 的游標移動

  1. 複製檔案: 先來到 /dev/shm/student 目錄,並將 /etc/services 複製到本目錄
  2. 開啟檔案: vim services
  3. 觀察檔案: 看左下角,這個檔案共有幾行?
  4. 移動游標: 將游標移動到第 2000 行,該如何移動最快
  5. 移動游標: 將游標移動到最後一行,然後移動到第一行,如何移動最快
  6. 複製資料: 將游標移動到第 2000 行,然後複製游標底下的 10 行內容
  7. 貼上資料: 將游標移動到第 1 行,然後貼上剛剛複製的資料
  8. 刪除資料: 將游標移動到第 5 行,然後刪除 3 行資料
  9. 儲存離開: 將資料儲存之後,離開 vim 。

1.4: 本日練習

現在來複習一下今日的動作,作為本日的點名與查驗資訊。請在目前的雲端機器上面完成底下的實做,要完成且讓老師檢查完畢後,才可以離開教室喔!

  1. 使用指令 help 功能,找出資訊後,將結果使用 vim 建立檔案紀錄的流程:
    1. 先使用 date +%Y%m%d 找出今天的日期
    2. 在 student 家目錄,用 vim 開啟名為 unit01.ans.txt 的檔案
    3. 第 1 行寫你的姓名與學號
    4. 第 2, 3, 4 行寫下 (或複製貼上) %Y, %m, %d 的意義
    5. 使用另一個終端機視窗,然後使用『 vim /etc/services 』唯讀的打開該檔案,找到第 10000 行 (查看上面的 vim 常用指令), 透過滑鼠功能,將第 10000 行與 10001 行複製之後,貼到 unit01.ans.txt 的第 6 行以後 (第 5 行保留空白)
    6. 完畢之後 unit01.ans.txt 儲存離開,另一個視窗則直接關閉 vim 即可。 (要確認檔名存在!且檔名要正確!)
  2. 目錄分類功能:
    1. 在 student 家目錄,建立名為 unit01/class1 unit01/class2 unit01/class3 這三個目錄
    2. 前往 unit01/class1 這個目錄,然後將 /etc/sysconfig 複製到本目錄下
    3. 前往 ~/unit01/class2 這個目錄,然後將 /etc/passwd /etc/group /etc/fstab /etc/hosts 4 個檔案複製到本目錄下
    4. 前往 ~/unit01/class3 這個目錄,然後將 ~/.bashrc ~/.bash_history 複製到本目錄下
  3. 檔案內容的新增:
    1. 前往 ~/unit01/class2 這個目錄
    2. 使用 vim 打開 fstab 這個檔案
    3. 在第二行新增一行,內容為『 This is 2nd time I use vim 』
    4. 做完之後直接儲存後離開
  4. 檔案的刪除
    1. 前往 ~/unit01/class1 目錄
    2. 刪除 sysconfig/cbq sysconfig/ksm sysconfig/kernel 等不必要的檔案
  5. 資料檢查:
    1. 請按右上角的設定,去啟動網路
    2. 使用 ifconfig 這個指令,找出你的 IP 後,告訴老師你的 IP 號碼 (例如 172.16.8.8),老師會線上檢查你是否完成作業了!

1.5: 課後練習

請撰寫一個 word 檔案,檔名為:『 unit01-A050cxxx-你的名字.docx 』,內容回答下列問題,然後每週作業上傳到對應的 EP 上面去:

  1. 完成底下的問題:
    1. 在 bash 終端機環境下, [tab] 按鈕有那三個功能?
    2. 如何查詢 cp 的指令參數與語法 (寫下操作指令即可)
    3. 如何列出歷史命令
    4. 如何查看 /etc/fstab 的內容?(不使用 vim 的情況下)
    5. 請問 /etc/crontab 與 /etc/default 分別是檔案還是目錄?
    6. 如何切換工作目錄到 /var/spool/postfix 去?
    7. 承上,如何使用相對路徑的方式,切換目錄到 /var/spool/mail 去?
  2. vim 實做題:
    1. 將 /etc/services 複製到 student 家目錄的 unit01 目錄下 (/home/student/unit01)
    2. 進入 unit01 目錄
    3. 開始編輯 services 檔案
    4. 第一行新增你的姓名與學號
    5. 將第 5~10 行刪除
    6. 儲存檔案
    7. 將畫面拍下來貼到 word 檔案上。
    8. 離開 vim 畫面。
  3. 檔案管理實做題:
    1. 前往 student 家目錄,並進入 unit01 的目錄內
    2. 建立名為 exam 的目錄,並且進入該目錄 (/home/student/unit01/exam/)
    3. 建立三個目錄,名稱分別為: check1 check2 check3
    4. 將 /etc/passwd 複製到 check1 內
    5. 將 /etc/cron.d 複製到 check2 內
    6. 將 /etc/yum.repos.d 複製到 check3 內
    7. 使用『 ll -R /home/student/unit01/exam 』這個指令,將指令的結果拍下來,貼上 word 檔案。

同場加映:不用上傳的資料,請 google 一下打字時,手指與鍵盤指法的對應,然後自由練習底下的資訊:

  • 小寫的 a~z (abcdefg...xyz) ,共打 10 次
  • 小寫的 0~9,a~z (012..89abcdefg...xyz) ,共打 10 次
  • 不要啟動大寫燈,用組合按鍵輸入 A-Z (ABCD...XYZ),共 10 次

每天上課各練一次,最慢 10 天,你的打字就會嚇嚇叫了!