Compare commits

...
79 Commits
Author SHA1 Message Date
Lin, Hung-Shin 8d0a210f0e Fix current quests (#144) 2024-07-03 08:15:18 +08:00
wancat c38104d043 fix: typo 2024-07-03 08:09:57 +08:00
wancat 83e563ab56 fix: requirement in get-started 2024-07-03 08:05:58 +08:00
wancat fa2059814c fix: increase line height in description part 2024-07-03 08:05:40 +08:00
Chen, Tai-Lin f9fa5a2102 fix: update quest [remove] 2024-07-03 01:57:39 +08:00
Chen, Tai-Lin 8ed6acbcc1 fix: update quest [move] 2024-07-03 01:47:59 +08:00
Chen, Tai-Lin d2452c91a6 fix: update quest [copy] 2024-07-03 01:42:37 +08:00
Chen, Tai-Lin 5bac9ce099 style: revise description part 2024-07-03 01:25:34 +08:00
Chen, Tai-Lin 2aaff0f7bc fix: quests exceptions 2024-07-03 01:10:59 +08:00
Chen, Tai-Lin 96ab39437b fix: quest error [remove] 2024-07-03 01:02:15 +08:00
Chen, Tai-Lin d6b606e807 fix: update quest [get-started] 2024-07-03 01:01:30 +08:00
Chen, Tai-Lin b792992391 fix: update quest [explore] 2024-07-03 01:01:30 +08:00
Chen, Tai-Lin 922100d8da fix: update quest [cast] 2024-07-03 01:01:30 +08:00
Chen, Tai-Lin 52597e8c5e fix: update quest [explore] 2024-07-03 01:01:30 +08:00
Chen, Tai-Lin a6c160ac0e fix: update quest [cast] 2024-07-03 01:00:33 +08:00
Chen, Tai-Lin 3859403b56 fix: revise quest content [get-started] (1 to be fixed) 2024-07-03 01:00:17 +08:00
Chen, Tai-Lin 2a29b0b8ac fix: update quest [read] 2024-07-03 00:57:33 +08:00
Chen, Tai-Lin aaa97e0dca fix: update quest [path] 2024-07-03 00:53:56 +08:00
Chen, Tai-Lin 3a28af0a67 fix: update quest [move] 2024-07-03 00:53:56 +08:00
Chen, Tai-Lin 551d502845 fix: update quest [helloworld] 2024-07-03 00:53:56 +08:00
Chen, Tai-Lin 3f0191112d fix: update quest [get-started] 2024-07-03 00:53:56 +08:00
Chen, Tai-Lin d565709a59 fix: update quest [explore] 2024-07-03 00:53:56 +08:00
Chen, Tai-Lin 435a426f5b fix: update quest [remove] 2024-07-03 00:53:56 +08:00
Chen, Tai-Lin 377afb3078 fix: update quest [create] 2024-07-03 00:53:56 +08:00
Chen, Tai-Lin 9d26951978 fix: update quest [cast] 2024-07-03 00:53:56 +08:00
Chen, Tai-Lin db3b00f8ee fix: update quest [copy] 2024-07-03 00:53:56 +08:00
Chen, Tai-Lin c09c4ff9e0 fix: quests exceptions error 2024-07-03 00:53:56 +08:00
Chen, Tai-Lin b3b374b3cd fix: update quest [explore] 2024-07-03 00:53:56 +08:00
Chen, Tai-Lin 5ca187651d fix: update quest answer file [get-started] 2024-07-03 00:53:55 +08:00
Chen, Tai-Lin f2ca4a26ac fix: update quest's exceptions 2024-07-03 00:53:55 +08:00
Chen, Tai-Lin 462f17a779 fix: update quest [cast] 2024-07-03 00:53:55 +08:00
Chen, Tai-Lin 3deabb25a9 fix: update quest [get-started] 2024-07-03 00:53:55 +08:00
Chen, Tai-Lin 3dad7ddccb fix: revise quest content [get-started] (1 to be fixed) 2024-07-03 00:53:55 +08:00
Chen, Tai-Lin 25888a1465 fix: modify component name and title (HintPart=>DescriptionPart) 2024-07-03 00:53:55 +08:00
Chen, Tai-Lin 3559814f55 fix: quest error [remove] 2024-07-03 00:44:30 +08:00
Chen, Tai-Lin 8142ff816c Merge branch 'fix-current-quests' of https://github.com/lancatlin/linux-odyssey into fix-current-quests 2024-07-03 00:34:39 +08:00
Chen, Tai-Lin 9c160253c9 fix: update quest [read] 2024-07-03 00:34:33 +08:00
Chen, Tai-Lin 80e1a40b6e fix: update quest [path] 2024-07-03 00:34:33 +08:00
Chen, Tai-Lin 2b70f3c7cd fix: update quest [move] 2024-07-03 00:34:32 +08:00
Chen, Tai-Lin 2e29919ad9 fix: update quest [helloworld] 2024-07-03 00:34:32 +08:00
Chen, Tai-Lin ca79042a3b fix: update quest [get-started] 2024-07-03 00:34:32 +08:00
Chen, Tai-Lin c8d2320bf5 fix: update quest [explore] 2024-07-03 00:34:32 +08:00
Chen, Tai-Lin 441909efd5 fix: update quest [remove] 2024-07-03 00:34:32 +08:00
Chen, Tai-Lin 90e3fc2bd0 fix: update quest [create] 2024-07-03 00:34:32 +08:00
Chen, Tai-Lin 598141d735 fix: update quest [cast] 2024-07-03 00:34:32 +08:00
Chen, Tai-Lin e11432be45 fix: update quest [copy] 2024-07-03 00:34:32 +08:00
Chen, Tai-Lin 2c1fe7bb96 fix: quests exceptions error 2024-07-03 00:34:32 +08:00
Chen, Tai-Lin 8c54bfe192 fix: update quest [explore] 2024-07-03 00:34:32 +08:00
Chen, Tai-Lin d292195302 fix: update quest answer file [get-started] 2024-07-03 00:34:32 +08:00
Chen, Tai-Lin 6bbf70a258 fix: update quest's exceptions 2024-07-03 00:34:32 +08:00
Chen, Tai-Lin 526b856de7 fix: update quest [cast] 2024-07-03 00:34:32 +08:00
Chen, Tai-Lin 1a20ffb295 fix: update quest [get-started] 2024-07-03 00:34:32 +08:00
Chen, Tai-Lin 4efa9b8831 fix: revise quest content [get-started] (1 to be fixed) 2024-07-03 00:34:32 +08:00
Chen, Tai-Lin 3944e91d0c fix: modify component name and title (HintPart=>DescriptionPart) 2024-07-03 00:34:32 +08:00
wancat c30b4a7c6e feat: add isGuest migration script 2024-07-03 00:34:32 +08:00
wancat 14cd16b611 feat: add isGuest field in user model 2024-07-03 00:34:32 +08:00
wancat b07b60f6bd feat: add register guest button 2024-07-03 00:34:32 +08:00
wancat 9d1bed7543 feat: add register-guest api 2024-07-03 00:34:32 +08:00
wancat 715352f77c feat: install date-fns 2024-07-03 00:34:32 +08:00
Annie Huang c4550a395a fix map view 2024-07-03 00:34:32 +08:00
dependabot[bot] 5795cb16b8 build(deps): bump tar from 6.2.0 to 6.2.1
Bumps [tar](https://github.com/isaacs/node-tar) from 6.2.0 to 6.2.1.
- [Release notes](https://github.com/isaacs/node-tar/releases)
- [Changelog](https://github.com/isaacs/node-tar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/isaacs/node-tar/compare/v6.2.0...v6.2.1)

---
updated-dependencies:
- dependency-name: tar
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-03 00:34:32 +08:00
Chen, Tai-Lin 691a6dcb25 fix: update quest [read] 2024-07-03 00:32:04 +08:00
Chen, Tai-Lin 979ea72f3a fix: update quest [path] 2024-07-03 00:31:57 +08:00
Chen, Tai-Lin f9e40edb8a fix: update quest [move] 2024-07-03 00:31:46 +08:00
Chen, Tai-Lin 276bfee5ed fix: update quest [helloworld] 2024-07-03 00:31:40 +08:00
Chen, Tai-Lin f03c359f89 fix: update quest [get-started] 2024-07-03 00:31:30 +08:00
Chen, Tai-Lin 7db08a5cda fix: update quest [explore] 2024-07-03 00:31:20 +08:00
Chen, Tai-Lin b19f0da678 fix: update quest [remove] 2024-07-03 00:31:10 +08:00
Chen, Tai-Lin c87eef233c fix: update quest [create] 2024-07-03 00:30:59 +08:00
Chen, Tai-Lin dabc40eb1e fix: update quest [cast] 2024-07-03 00:30:44 +08:00
Chen, Tai-Lin 0efe2235f8 fix: update quest [copy] 2024-07-03 00:30:37 +08:00
Chen, Tai-Lin 9d45993d0d fix: quests exceptions error 2024-07-02 22:32:00 +08:00
Chen, Tai-Lin 79f9cb3e95 fix: update quest [explore] 2024-07-02 02:09:09 +08:00
Chen, Tai-Lin 47c7ff04a9 fix: update quest answer file [get-started] 2024-07-02 00:49:42 +08:00
Chen, Tai-Lin f831f4d4e5 fix: update quest's exceptions 2024-07-01 23:39:58 +08:00
Chen, Tai-Lin 29799faa79 fix: update quest [cast] 2024-07-01 23:10:46 +08:00
Chen, Tai-Lin 2727c9f4bb fix: update quest [get-started] 2024-07-01 22:38:42 +08:00
Chen, Tai-Lin 9ed726d597 fix: revise quest content [get-started] (1 to be fixed) 2024-06-28 02:25:34 +08:00
Chen, Tai-Lin fcb52b9d9e fix: modify component name and title (HintPart=>DescriptionPart) 2024-06-28 02:14:22 +08:00
19 changed files with 724 additions and 718 deletions

No files matched your search

+3
View File
@@ -25,6 +25,9 @@ const html = computed(() => {
line-height: 1; line-height: 1;
} }
.markdown-content :deep(p) {
line-height: 1.5;
}
.markdown-content :deep(ol) { .markdown-content :deep(ol) {
list-style: decimal; list-style: decimal;
padding-left: 1em; padding-left: 1em;
@@ -37,7 +37,7 @@ const right = () => {
:icon="['far', 'lightbulb']" :icon="['far', 'lightbulb']"
class="text-yellow-200 p-2 content-center" class="text-yellow-200 p-2 content-center"
/> />
<h1 class="inline text-text w-1/2 font-xl p-2 m-1">提示 {{ length }}</h1> <h1 class="inline text-text w-1/2 font-xl p-2 m-1">說明</h1>
<div v-if="current !== -1" class="flex w-full justify-end items-end"> <div v-if="current !== -1" class="flex w-full justify-end items-end">
<button <button
class="p-2 m-1 w-1/8" class="p-2 m-1 w-1/8"
+2 -2
View File
@@ -3,7 +3,7 @@ import { computed, onMounted } from 'vue'
import useSession from '../store/session' import useSession from '../store/session'
import HeaderPart from '../components/header/HeaderPart.vue' import HeaderPart from '../components/header/HeaderPart.vue'
import GameHeaderComponents from '../components/header/GameHeaderComponents.vue' import GameHeaderComponents from '../components/header/GameHeaderComponents.vue'
import HintPart from '../components/game/HintPart.vue' import DescriptionPart from '../components/game/DescriptionPart.vue'
import QuestPart from '../components/game/QuestPart.vue' import QuestPart from '../components/game/QuestPart.vue'
import TerminalPart from '../components/game/TerminalPart.vue' import TerminalPart from '../components/game/TerminalPart.vue'
import VisualizationPart from '../components/game/VisualizationPart.vue' import VisualizationPart from '../components/game/VisualizationPart.vue'
@@ -62,7 +62,7 @@ onMounted(async () => {
<div class="bg-bg h-full rounded-lg w-1/2"> <div class="bg-bg h-full rounded-lg w-1/2">
<StartButton :questId="$props.questId" /> <StartButton :questId="$props.questId" />
<section id="hint" class="h-3/5"> <section id="hint" class="h-3/5">
<HintPart /> <DescriptionPart />
</section> </section>
<hr class="border-border border" /> <hr class="border-border border" />
<section id="terminal" class="h-2/5 overflow-hidden"> <section id="terminal" class="h-2/5 overflow-hidden">
+12 -20
View File
@@ -3,23 +3,23 @@ instruction: |
在這個關卡中,你將會學到: 在這個關卡中,你將會學到:
1. 如何使用 `echo` 指令 1. 如何使用 `echo` 指令
準備好就輸入 `echo start` 開始吧! 按下中間的 `start` 按鈕來開始這個關卡。
requirements: requirements:
- get-started - get-started
stages: stages:
- id: start - id: start
task: 輸入 `echo start` 來開始教程 task: 按下 `start` 按鈕開始
condition: condition:
output: command:
- ^start$ - ^echo start$
responses: responses:
- content: - content: |
- 你剛才使用的指令叫做 `echo`。 還記得第一關使用的指令 `echo` 嗎?
- '`echo` 指令可以將後方接續的文字輸出到終端機上。' `echo` 指令可以將後方接續的文字輸出到終端機上。
- 例如你輸入 `echo Hello`,終端機就會顯示 `Hello`。 例如你輸入 `echo Hello`,終端機就會顯示 `Hello`。
- 你可以試著輸入 `echo` 並在後面加上一些文字,然後按下 Enter 鍵,就可以看到終端機上顯示了你剛才輸入的文字。 你可以試著輸入 `echo ` 並在後面加上一些文字,然後按下 Enter 鍵,就可以看到終端機上顯示了你剛才輸入的文字。
hints: hints:
- ➤ 輸入 `echo` 並在後面加上一些文字 - ➤ 輸入 `echo` 並在後面加上一些文字
- ➤ 例如:`echo example` - ➤ 例如:`echo example`
@@ -43,8 +43,8 @@ stages:
requirements: requirements:
- echo - echo
condition: condition:
output: command:
- ^[Hh]ow are you\??$ - ^echo [Hh]ow are you\??$
exceptions: exceptions:
- condition: - condition:
command: command:
@@ -59,17 +59,9 @@ stages:
responses: responses:
- type: narrative - type: narrative
content: content:
- 在 `echo` 後面還需要加上一些文字 - 在 `echo ` 後面還需要加上 `How are you?`
responses: responses:
- content: - content:
- 你成功的在終端機上顯示了 `How are you?`。 - 你成功的在終端機上顯示了 `How are you?`。
- 相信你已經了解如何使用 `echo` 指令來顯示文字了。 - 相信你已經了解如何使用 `echo` 指令來顯示文字了。
- 之後如果要在終端機顯示文字,記得可以使用 `echo` 指令。 - 之後如果要在終端機顯示文字,記得可以使用 `echo` 指令。
exceptions:
- repeatable: true
condition:
command:
- ' '
hints:
- '!! 請勿使用全形空格 !!'
-131
View File
@@ -1,131 +0,0 @@
title: 輸出文字
instruction: |
在這個關卡中,你將會學到:
1. 如何使用 `echo` 指令
2. `echo` 指令在遊戲中的用途
準備好就輸入 `echo start` 開始吧!
requirements:
- get-started
stages:
- id: warning-01
repeatable: true
condition:
command:
- ' '
hints:
- '!! 請勿使用全形空格 !!'
- id: start
task: 輸入 `echo start` 來開始教程
condition:
output:
- ^start$
responses:
- content:
- 你剛才使用的指令叫做 `echo`。
- '`echo` 指令可以將後方接續的文字輸出到終端機上。'
- 例如你輸入 `echo Hello`,終端機就會顯示 `Hello`。
- 你可以試著輸入 `echo` 並在後面加上一些文字,然後按下 Enter 鍵,就可以看到終端機上顯示了你剛才輸入的文字。
hints:
- ➤ 輸入 `echo` 並在後面加上一些文字
- ➤ 例如:`echo example`
- id: echo
task: 在終端機上顯示顯示任意文字
requirements:
- start
condition:
command:
- ^echo .*
responses:
- content:
- 你應該可以看到終端機上顯示了你在 `echo` 指令後面的文字。
- 接下來,請你試著在終端機上顯示 `How are you?`。
hints:
- ➤ 利用 `echo` 指令來在終端機上顯示 `How are you?`
- id: how-are-you
task: 在終端機上顯示 `How are you?`
requirements:
- echo
condition:
output:
- ^[Hh]ow are you\??$
exceptions:
- condition:
command:
- ^[Hh]ow are you\??$
responses:
- type: narrative
content:
- 在 `How are you?` 前面必須加上 `echo`
- condition:
command:
- ^echo$
responses:
- type: narrative
content:
- 在 `echo` 後面還需要加上一些文字
responses:
- content:
- 你成功的在終端機上顯示了 `How are you?`。
- 相信你已經了解 `echo` 指令的用法了。
- 接下來,要像你介紹 `echo` 在遊戲中的特殊功能,那就是詠唱咒語。
- 你可以通過輸入 `echo [咒語]` 來詠唱咒語,並產生對應的特殊效果。
- 但是要注意,詠唱咒語只有在 Linux Odyssey 中才會有特殊效果。
- 在真實的 Linux 環境中,詠唱咒語並不會有任何特殊效果。
- 現在,有一段咒語叫做 `HELP`,請你試著使用 `echo` 詠唱這段咒語。
hints:
- ➤ 試著使用 `echo` 來詠唱 `HELP` 咒語
- ➤ 注意:咒語要使用大寫
- id: help
task: 詠唱 `HELP` 咒語
requirements:
- how-are-you
condition:
output:
- ^HELP$
responses:
- content:
- 你詠唱了 `HELP` 咒語,一位精靈出現了。
- type: dialogue
speaker: Unix 精靈
content:
- 你好,我是 Unix 精靈。
- 既然你使用了 `HELP` 咒語呼喚我,就讓我來教你一個咒語吧。
- 讓我想想... 好了,我想到了一個咒語,叫做 `WATER`。
- 這是施展水魔法的咒語。詠唱這個咒語可以施展水魔法,產生少量的水。
- 試著使用 `echo` 詠唱這個咒語吧。
hints:
- ➤ 詠唱 `WATER` 咒語
- id: END
task: 詠唱 `WATER` 咒語
requirements:
- help
condition:
output:
- ^WATER$
responses:
- content:
- 你施展了水魔法,一個水球出現在你的手中。
- type: dialogue
speaker: Unix 精靈
content:
- 很好,你已經學會了水魔法。
- content:
- 真厲害,你已經了解如何使用 `echo` 指令,並且學會了詠唱咒語的方法。
- 最後複習一下,你可以通過輸入 `echo [文字]` 來在終端機上顯示文字。
- 你也可以通過輸入 `echo [咒語]` 來詠唱咒語,並產生對應的特殊效果。
- 不要忘了,詠唱咒語只有在 Linux Odyssey 中才會有特殊效果。
- 在真實的 Linux 環境中,咒語只會被視為一串文字顯示出來而已。
- 以上就是 `echo` 指令的用法,請繼續努力,完成接下來的關卡吧!
hints: |
複習:
通過輸入 `echo [文字]` 來在終端機上顯示文字
通過輸入 `echo [咒語]` 來詠唱咒語
咒語只有在 Linux Odyssey 中才會有特殊效果
+1
View File
@@ -1,4 +1,5 @@
echo start echo start
ls
cat hello.txt cat hello.txt
cat world.txt cat world.txt
echo continue echo continue
+235 -87
View File
@@ -3,120 +3,185 @@ instruction: |
在這個關卡中,你將會學到: 在這個關卡中,你將會學到:
1. 如何用 `cp` 指令複製檔案 1. 如何用 `cp` 指令複製檔案
準備好就輸入 `echo start` 開始吧! 按下中間的 `start` 按鈕來開始這個關卡。
requirements: requirements:
- create - create
stages: stages:
- id: start - id: start
task: 輸入 `echo start` 來開始 task: 按下 `start` 按鈕開始
condition: condition:
output: command:
- start - ^echo start$
exceptions:
- condition:
command:
- ^echo$
responses:
- type: narrative
content:
- 你忘記輸入 `start` 了嗎?
- 請輸入 `echo start` 來開始
- catchAll: true
responses:
- type: narrative
content:
- 請輸入 `echo start` 來開始
responses: responses:
- type: narrative - type: narrative
content: content: |
- 今天我們要學習如何複製檔案。 今天我們要學習如何複製檔案。
- 現在資料夾裡有一個 `hello.txt` 跟一個 `world.txt`,請使用 `ls` 與 `cat` 來查看它們的內容。 先用 `ls` 指令查看目前資料夾裡有哪些檔案。
- 看完之後,使用 `echo continue` 來繼續吧! hints:
- ➤ 使用 `ls` 來查看目前資料夾裡有哪些檔案
- id: ls
task: 查看目前資料夾裡的檔案
requirements:
- start
condition:
pwd:
- ^/home/commander$
command:
- ^ls$
output:
- (^|\s)hello.txt($|\s)
- (^|\s)world.txt($|\s)
exceptions:
- condition:
not:
pwd:
- ^/home/commander$
responses:
- type: narrative
content: |
你不在 `/home/commander` 資料夾裡。
請使用 `cd /home/commander` 來返回 `/home/commander` 資料夾。
responses:
- type: narrative
content: 可以看到現在資料夾裡有 `hello.txt` 跟 `world.txt`。
請使用 `cat` 來查看它們的內容。
看完之後,使用 `echo next` 來繼續吧!
hints: hints:
- ➤ 使用 `ls` 來查看資料夾內的檔案
- ➤ 使用 `cat hello.txt` 以及 `cat world.txt` 來查看檔案內容 - ➤ 使用 `cat hello.txt` 以及 `cat world.txt` 來查看檔案內容
- ➤ 如果終端機卡在某個指令無法輸入,請按下 `Ctrl + C` 來取消該指令 - ➤ 如果終端機卡在某個指令無法輸入,請按下 `Ctrl + C` 來取消該指令
- id: cat-hello - id: cat-hello
task: 查看 `hello.txt` 的內容 task: 查看 `hello.txt` 的內容
requirements: requirements:
- start - ls
condition: condition:
pwd:
- ^/home/commander$
command: command:
- ^cat hello.txt$ - ^cat hello.txt$
output: output:
- Hello - Hello
exceptions: exceptions:
- condition:
not:
pwd:
- ^/home/commander$
responses:
- type: narrative
content: |
你不在 `/home/commander` 資料夾裡。
請使用 `cd /home/commander` 來返回 `/home/commander` 資料夾
- condition: - condition:
command: command:
- ^cat$ - ^cat$
responses: responses:
- type: narrative - type: narrative
content: content: |
- 你忘記輸入 `cat` 了嗎? 你忘記輸入 `cat` 了嗎?
- 請輸入 `cat hello.txt` 來查看 `hello.txt` 的內容 請輸入 `cat hello.txt` 來查看 `hello.txt` 的內容
- condition: - condition:
command: command:
- ^cat hello$ - ^cat hello$
responses: responses:
- type: narrative - type: narrative
content: content: |
- 你忘記輸入 `.txt` 了嗎? 你忘記輸入 `.txt` 了嗎?
- 請輸入 `cat hello.txt` 來查看 `hello.txt` 的內容 請輸入 `cat hello.txt` 來查看 `hello.txt` 的內容
responses: responses:
- type: narrative - type: narrative
content: content: |
- 你成功查看到 `hello.txt` 的內容了! 你成功查看到 `hello.txt` 的內容了!
- id: cat-world - id: cat-world
task: 查看 `world.txt` 的內容 task: 查看 `world.txt` 的內容
requirements: requirements:
- start - ls
condition: condition:
pwd:
- ^/home/commander$
command: command:
- ^cat world.txt$ - ^cat world.txt$
output: output:
- World - World
exceptions:
- condition:
not:
pwd:
- ^/home/commander$
responses:
- type: narrative
content: |
你不在 `/home/commander` 資料夾裡。
請使用 `cd /home/commander` 來返回 `/home/commander` 資料夾
- condition:
command:
- ^cat$
responses:
- type: narrative
content: |
你忘記輸入 `cat` 了嗎?
請輸入 `cat world.txt` 來查看 `world.txt` 的內容
- condition:
command:
- ^cat world$
responses:
- type: narrative
content: |
你忘記輸入 `.txt` 了嗎?
請輸入 `cat world.txt` 來查看 `world.txt` 的內容
responses: responses:
- type: narrative - type: narrative
content: content: |
- 你成功查看到 `world.txt` 的內容了! 你成功查看到 `world.txt` 的內容了!
- id: cat-continue - id: cat-next
task: 使用 `echo continue` 來繼續 task: 輸入 `echo next` 來繼續
requirements: requirements:
- cat-hello - cat-hello
- cat-world - cat-world
condition: condition:
command: command:
- echo - ^echo next$
responses: responses:
- type: narrative - type: narrative
content: content: |
- 接下來我們要來學習複製檔案。 接下來我們要來學習如何複製檔案。
- '`cp` 這個指令,是 copy 的縮寫,就是複製的意思。' `cp` 這個指令,是 copy 的縮寫,就是複製的意思。
- 我們可以用 `cp [來源檔案] [目的檔案]` 的方式來複製檔案。 我們可以用 `cp [來源檔案] [目的檔案]` 的方式來複製檔案。
- 請你使用 `cp` 來複製 `hello.txt` 到 `hello2.txt`。 請你使用 `cp` 來複製 `hello.txt` 的內容到 `hello2.txt`。
hints: hints:
- ➤ 使用 `cp hello.txt hello2.txt` 來複製 `hello.txt` 到 `hello2.txt` - ➤ 使用 `cp hello.txt hello2.txt` 來複製 `hello.txt` 到 `hello2.txt`
- id: cp-hello - id: cp-hello
task: 複製 `hello.txt` 到 `hello2.txt` task: 複製 `hello.txt` 到 `hello2.txt`
requirements: requirements:
- cat-continue - cat-next
condition: condition:
pwd:
- ^/home/commander$
command: command:
- ^cp hello.txt hello2.txt$ - ^cp hello.txt hello2.txt$
files: files:
- path: hello2.txt - path: hello2.txt
type: file type: file
exceptions:
- condition:
not:
pwd:
- ^/home/commander$
responses:
- type: narrative
content: |
你不在 `/home/commander` 資料夾裡。
請使用 `cd /home/commander` 來返回 `/home/commander` 資料夾。
responses: responses:
- type: narrative - type: narrative
content: content: |
- 你成功複製 `hello.txt` 到 `hello2.txt` 了! 你成功複製 `hello.txt` 到 `hello2.txt` 了!
- 我們打開來確認一下 `hello2.txt` 的內容吧! 我們打開來確認一下 `hello2.txt` 的內容吧!
hints: hints:
- ➤ 使用 `cat hello2.txt` 來查看 `hello2.txt` 的內容 - ➤ 使用 `cat hello2.txt` 來查看 `hello2.txt` 的內容
@@ -125,16 +190,28 @@ stages:
- cp-hello - cp-hello
task: 查看 `hello2.txt` 的內容 task: 查看 `hello2.txt` 的內容
condition: condition:
pwd:
- ^/home/commander$
command: command:
- ^cat hello2.txt$ - ^cat hello2.txt$
output: output:
- Hello - Hello
exceptions:
- condition:
not:
pwd:
- ^/home/commander$
responses:
- type: narrative
content: |
你不在 `/home/commander` 資料夾裡。
請使用 `cd /home/commander` 來返回 `/home/commander` 資料夾。
responses: responses:
- type: narrative - type: narrative
content: content: |
- 你成功查看到 `hello2.txt` 的內容了! 你成功查看到 `hello2.txt` 的內容了!
- 正如我們所見,`hello2.txt` 的內容跟 `hello.txt` 一模一樣。 正如我們所見,`hello2.txt` 的內容跟 `hello.txt` 一模一樣。
- 那我們再來試試看複製 `world.txt` 到 `world2.txt` 吧! 那我們再來試試看複製 `world.txt` 到 `world2.txt` 吧!
hints: hints:
- ➤ 使用 `cp world.txt world2.txt` 來複製 `world.txt` 到 `world2.txt` - ➤ 使用 `cp world.txt world2.txt` 來複製 `world.txt` 到 `world2.txt`
@@ -143,16 +220,28 @@ stages:
- cat-hello2 - cat-hello2
task: 複製 `world.txt` 到 `world2.txt` task: 複製 `world.txt` 到 `world2.txt`
condition: condition:
pwd:
- ^/home/commander$
command: command:
- ^cp world.txt world2.txt$ - ^cp world.txt world2.txt$
files: files:
- path: world2.txt - path: world2.txt
type: file type: file
exceptions:
- condition:
not:
pwd:
- ^/home/commander$
responses:
- type: narrative
content: |
你不在 `/home/commander` 資料夾裡。
請使用 `cd /home/commander` 來返回 `/home/commander` 資料夾。
responses: responses:
- type: narrative - type: narrative
content: content: |
- 你成功複製 `world.txt` 到 `world2.txt` 了! 你成功複製 `world.txt` 到 `world2.txt` 了!
- 我們打開來確認一下 `world2.txt` 的內容吧! 我們打開來確認一下 `world2.txt` 的內容吧!
hints: hints:
- ➤ 使用 `cat world2.txt` 來查看 `world2.txt` 的內容 - ➤ 使用 `cat world2.txt` 來查看 `world2.txt` 的內容
@@ -161,23 +250,35 @@ stages:
- cp-world - cp-world
task: 查看 `world2.txt` 的內容 task: 查看 `world2.txt` 的內容
condition: condition:
pwd:
- ^/home/commander$
command: command:
- ^cat world2.txt$ - ^cat world2.txt$
output: output:
- World - World
exceptions:
- condition:
not:
pwd:
- ^/home/commander$
responses:
- type: narrative
content: |
你不在 `/home/commander` 資料夾裡。
請使用 `cd /home/commander` 來返回 `/home/commander` 資料夾。
responses: responses:
- type: narrative - type: narrative
content: content: |
- 你成功查看到 `world2.txt` 的內容了! 你成功查看到 `world2.txt` 的內容了!
- '`world2.txt` 的內容跟 `world.txt` 一模一樣。' `world2.txt` 的內容跟 `world.txt` 一模一樣。
- 接下來我們要來學習如何複製資料夾。 接下來我們要來學習如何複製資料夾。
- 現在目錄下有一個 `notes` 資料夾,裡面有一個 `note.txt` 的檔案。 現在目錄下有一個 `notes` 資料夾,裡面有一個 `note.txt` 的檔案。
- 我們要能整個資料夾包含裡面的檔案一起複製到 `notes2`。 我們要能整個資料夾包含裡面的檔案一起複製到 `notes2`。
- 跟複製單一檔案不一樣的是,複製資料夾時,我們要加上 `-r` 的選項(recursive)代表將資料夾中的所有檔案都一起複製。 跟複製單一檔案不一樣的是,複製資料夾時,我們要加上 `-r` 的選項(recursive)代表將資料夾中的所有檔案都一起複製。
- 在使用指令時,如果想要調整指令的行為,可以在指令後面加上選項。 在使用指令時,如果想要調整指令的行為,可以在指令後面加上選項。
- 選項的格式通常是 `-` 加上一個字母,例如 `-r`。 選項的格式通常是 `-` 加上一個字母,例如 `-r`。
- 選項擺放的位置沒有特別的限制,通常會跟在指令的後面,置於檔案名稱的前面。 選項擺放的位置沒有特別的限制,通常會跟在指令的後面,置於檔案名稱的前面。
- 請你使用 `cp -r notes notes2` 來複製 `notes` 資料夾到 `notes2`。 請你使用 `cp -r notes notes2` 來複製 `notes` 資料夾到 `notes2`。
hints: hints:
- ➤ 使用 `cp -r notes notes2` 來複製 `notes` 資料夾到 `notes2` - ➤ 使用 `cp -r notes notes2` 來複製 `notes` 資料夾到 `notes2`
- ➤ 記得要加上 `-r` 的選項來複製所有檔案 - ➤ 記得要加上 `-r` 的選項來複製所有檔案
@@ -187,6 +288,8 @@ stages:
- cat-world2 - cat-world2
task: 複製 `notes` 資料夾到 `notes2` task: 複製 `notes` 資料夾到 `notes2`
condition: condition:
pwd:
- ^/home/commander$
command: command:
- ^cp - ^cp
files: files:
@@ -194,38 +297,59 @@ stages:
type: directory type: directory
- path: notes2/note.txt - path: notes2/note.txt
type: file type: file
responses:
- type: narrative
content:
- 你成功複製 `notes` 資料夾到 `notes2` 了!
- 我們打開來確認一下 `notes2` 資料夾的內容吧!
hints:
- ➤ 使用 `ls notes2` 來查看 `notes2` 資料夾的內容
exceptions: exceptions:
- condition:
not:
pwd:
- ^/home/commander$
responses:
- type: narrative
content: |
你不在 `/home/commander` 資料夾裡。
請使用 `cd /home/commander` 來返回 `/home/commander` 資料夾。
- condition: - condition:
error: error:
- 'cp: omitting directory' - 'cp: omitting directory'
responses: responses:
- type: narrative - type: narrative
content: content: |
- 你忘記加上 `-r` 的參數了嗎? 你忘記加上 `-r` 的參數了嗎?
- 請輸入 `cp -r notes notes2` 來複製 `notes` 資料夾到 `notes2` 請輸入 `cp -r notes notes2` 來複製 `notes` 資料夾到 `notes2`
responses:
- type: narrative
content: |
你成功複製 `notes` 資料夾到 `notes2` 了!
我們打開來確認一下 `notes2` 資料夾的內容吧!
hints:
- ➤ 使用 `ls notes2` 來查看 `notes2` 資料夾的內容
- id: ls-notes2 - id: ls-notes2
requirements: requirements:
- cp-notes - cp-notes
task: 查看 `notes2` 資料夾的內容 task: 查看 `notes2` 資料夾的內容
condition: condition:
pwd:
- ^/home/commander$
command: command:
- ^ls notes2$ - ^ls notes2$
output: output:
- note.txt - note.txt
exceptions:
- condition:
not:
pwd:
- ^/home/commander$
responses:
- type: narrative
content: |
你不在 `/home/commander` 資料夾裡。
請使用 `cd /home/commander` 來返回 `/home/commander` 資料夾。
responses: responses:
- type: narrative - type: narrative
content: content: |
- 你成功查看到 `notes2` 資料夾的內容了! 你成功查看到 `notes2` 資料夾的內容了!
- 我們可以看到,整個 `notes` 資料夾包含裡面的檔案,都被複製到 `notes2` 資料夾了。 我們可以看到,整個 `notes` 資料夾包含裡面的檔案,都被複製到 `notes2` 資料夾了。
- 那麼最後我們要來試試看,如果複製一個檔案到已經存在的檔案會發生什麼事。 那麼最後我們要來試試看,如果複製一個檔案到已經存在的檔案會發生什麼事。
hints: hints:
- ➤ 使用 `cp hello.txt world.txt` 來複製 `hello.txt` 到 `world.txt` - ➤ 使用 `cp hello.txt world.txt` 來複製 `hello.txt` 到 `world.txt`
@@ -234,13 +358,25 @@ stages:
- ls-notes2 - ls-notes2
task: 複製 `hello.txt` 到 `world.txt` task: 複製 `hello.txt` 到 `world.txt`
condition: condition:
pwd:
- ^/home/commander$
command: command:
- ^cp hello.txt world.txt$ - ^cp hello.txt world.txt$
exceptions:
- condition:
not:
pwd:
- ^/home/commander$
responses:
- type: narrative
content: |
你不在 `/home/commander` 資料夾裡。
請使用 `cd /home/commander` 來返回 `/home/commander` 資料夾。
responses: responses:
- type: narrative - type: narrative
content: content: |
- 你成功複製 `hello.txt` 到 `world.txt` 了! 你成功複製 `hello.txt` 到 `world.txt` 了!
- 我們打開來確認一下 `world.txt` 的內容吧! 我們打開來確認一下 `world.txt` 的內容吧!
hints: hints:
- ➤ 使用 `cat world.txt` - ➤ 使用 `cat world.txt`
@@ -249,14 +385,26 @@ stages:
- cp-overwrite - cp-overwrite
task: 檢查 `world.txt` 的內容 task: 檢查 `world.txt` 的內容
condition: condition:
pwd:
- ^/home/commander$
command: command:
- ^cat world.txt$ - ^cat world.txt$
output: output:
- Hello - Hello
exceptions:
- condition:
not:
pwd:
- ^/home/commander$
responses:
- type: narrative
content: |
你不在 `/home/commander` 資料夾裡。
請使用 `cd /home/commander` 來返回 `/home/commander` 資料夾。
responses: responses:
- type: narrative - type: narrative
content: content: |
- '`world.txt` 的內容變成 `Hello` 了!' `world.txt` 的內容變成 `Hello` 了!
- 這是因為,當我們複製檔案時,如果目的檔案已經存在,那麼目的檔案的內容就會被覆蓋掉。 這是因為,當我們複製檔案時,如果目的檔案已經存在,那麼目的檔案的內容就會被覆蓋掉。
- 所以在複製檔案的時候,要特別注意目的檔案是否已經存在,否則可能會不小心把資料弄丟。 所以在複製檔案的時候,要特別注意目的檔案是否已經存在,否則可能會不小心把資料弄丟。
- 以上就是複製檔案的基本操作! 以上就是複製檔案的基本操作!
+1
View File
@@ -1,4 +1,5 @@
echo start echo start
ls
touch hello.txt touch hello.txt
ls ls
cat hello.txt cat hello.txt
+89 -51
View File
@@ -4,40 +4,66 @@ instruction: |
1. 如何使用 `touch` 建立檔案 1. 如何使用 `touch` 建立檔案
2. 如何使用 `mkdir` 建立資料夾 2. 如何使用 `mkdir` 建立資料夾
準備好就輸入 `echo start` 開始吧! 按下中間的 `start` 按鈕來開始這個關卡。
requirements: requirements:
- read - read
stages: stages:
- id: start - id: start
task: 輸入 `echo start` 來開始 task: 按下 `start` 按鈕開始
condition: condition:
command: command:
- ^echo start - ^echo start$
responses: responses:
- type: narrative - type: narrative
content: content: |
- 這次要學習的指令是 `touch` 指令。 這次要學習的指令是 `touch` 指令。
- '`touch` 指令可以建立一個檔案。' 請你先用 `ls` 指令查看目前所在資料夾中有哪些檔案。
- 接下來,請你試著在終端機上建立一個檔案,檔名為 `hello.txt`。 你應該會發現目前所在資料夾中沒有任何檔案。
hints:
- ➤ 輸入 `ls` 指令來查看目前所在資料夾中有哪些檔案
- id: ls
task: 查看資料夾中的檔案
requirements:
- start
condition:
command:
- ^ls$
responses:
- type: narrative
content: |
你應該可以看到終端機上沒有任何回應,這表示目前所在資料夾中沒有任何檔案。
而我們可以使用 `touch [檔案名稱]` 指令來建立一個檔案。
接下來,請你試著在終端機上建立一個檔案,檔名為 `hello.txt`。
hints: hints:
- ➤ 輸入 `touch hello.txt` 來建立一個檔案 - ➤ 輸入 `touch hello.txt` 來建立一個檔案
- id: touch - id: touch
task: 使用 `touch` 指令來建立一個檔案 task: 使用 `touch` 指令來建立一個檔案
requirements: requirements:
- start - ls
condition: condition:
files: files:
- path: hello.txt - path: hello.txt
type: file type: file
exceptions:
- condition:
files:
- path: hello$
type: file
responses:
- type: narrative
content: |
你似乎忘記輸入副檔名 `txt` 了。
請再試一次,並確保檔名為 `hello.txt`。
responses: responses:
- type: narrative - type: narrative
content: content: |
- 你應該可以看到終端機上沒有任何回應。 你應該可以看到終端機上沒有任何回應。
- 這表示 `touch` 指令已經成功建立了一個檔案。 然而實際上 `touch` 指令已經成功建立了一個檔案。
- 接下來,請你用之前學過的 `ls` 指令來查看目前所在資料夾中有哪些檔案。 請你用之前學過的 `ls` 指令來查看目前所在資料夾中有哪些檔案。
hints: hints:
- ➤ 輸入 `ls` 指令來查看目前所在資料夾中有哪些檔案 - ➤ 輸入 `ls` 指令來查看目前所在資料夾中有哪些檔案
@@ -52,26 +78,28 @@ stages:
- hello.txt - hello.txt
responses: responses:
- type: narrative - type: narrative
content: content: |
- 你應該可以看到終端機上顯示了 `hello.txt` 這個檔案。 你應該可以看到終端機上顯示了 `hello.txt` 這個檔案。
- 我們來看看 `hello.txt` 檔案的內容吧! 我們來看看 `hello.txt` 檔案的內容吧!
- 我們可以使用之前學過的 `cat` 指令來查看檔案內容。 我們可以使用之前學過的 `cat` 指令來查看檔案內容。
hints: hints:
- ➤ 輸入 `cat hello.txt` 來查看 `hello.txt` 檔案的內容 - ➤ 輸入 `cat hello.txt` 來查看 `hello.txt` 檔案的內容
- id: cat - id: cat
task: 使用 `cat` 指令來查看 `hello.txt` 檔案的內容 task: 使用 `cat` 指令來查看 `hello.txt` 檔案的內容
requirements:
- ls-touch
condition: condition:
command: command:
- ^cat hello.txt$ - ^cat hello.txt$
responses: responses:
- type: narrative - type: narrative
content: content: |
- 咦?竟然什麼都沒有! 咦?竟然什麼都沒有!
- 沒錯,使用 `touch` 指令建立的檔案是空的。 沒錯,使用 `touch` 指令建立的檔案是空的。
- 我們在未來會學習如何編輯檔案的內容。 我們在未來會學習如何編輯檔案的內容。
- 再來試試建立其他的檔案吧! 再來試試建立其他的檔案吧!
- 請你試著在終端機上建立另一個檔案,檔名為 `world.txt`。 請你試著在終端機上建立另一個檔案,檔名為 `world.txt`。
hints: hints:
- ➤ 輸入 `touch world.txt` 來建立一個檔案 - ➤ 輸入 `touch world.txt` 來建立一個檔案
@@ -83,11 +111,21 @@ stages:
files: files:
- path: world.txt - path: world.txt
type: file type: file
exceptions:
- condition:
files:
- path: world$
type: file
responses:
- type: narrative
content: |
你似乎忘記輸入副檔名 `txt` 了。
請再試一次,並確保檔名為 `world.txt`。
responses: responses:
- type: narrative - type: narrative
content: content: |
- 非常好,你已經成功建立了第二個檔案。 非常好,你已經成功建立了第二個檔案。
- 接下來,請你用之前學過的 `ls` 指令來查看剛剛建立的兩個檔案。 接下來,請你用之前學過的 `ls` 指令來查看剛剛建立的兩個檔案。
hints: hints:
- ➤ 輸入 `ls` 指令來查看目前所在資料夾中有哪些檔案 - ➤ 輸入 `ls` 指令來查看目前所在資料夾中有哪些檔案
@@ -99,16 +137,16 @@ stages:
command: command:
- ^ls$ - ^ls$
output: output:
- hello.txt - (^|\s)hello.txt($|\s)
- world.txt - (^|\s)world.txt($|\s)
responses: responses:
- type: narrative - type: narrative
content: content: |
- 你應該可以看到終端機上顯示了 `hello.txt` 和 `world.txt` 這兩個檔案。 你應該可以看到終端機上顯示了 `hello.txt` 和 `world.txt` 這兩個檔案。
- 接下來,我們來試試看建立資料夾吧! 接下來,我們來試試看建立資料夾吧!
- '`mkdir` 指令可以建立一個空的資料夾。' `mkdir` 指令可以建立一個空的資料夾。
- 使用方式是 `mkdir [資料夾名稱]`。 使用方式是 `mkdir [資料夾名稱]`。
- 請你試著在終端機上建立一個資料夾,名稱為 `notes`。 請你試著在終端機上建立一個資料夾,名稱為 `notes`。
hints: hints:
- ➤ 輸入 `mkdir notes` 來建立一個資料夾 - ➤ 輸入 `mkdir notes` 來建立一個資料夾
@@ -122,9 +160,9 @@ stages:
type: folder type: folder
responses: responses:
- type: narrative - type: narrative
content: content: |
- 非常好,你已經成功建立了 `notes` 資料夾。 非常好,你已經成功建立了 `notes` 資料夾。
- 接下來,請你用 `ls` 指令來查看剛剛建立的資料夾。 接下來,請你用 `ls` 指令來查看剛剛建立的資料夾。
- id: ls-mkdir - id: ls-mkdir
task: 使用 `ls` 查看剛建立的資料夾 task: 使用 `ls` 查看剛建立的資料夾
@@ -137,11 +175,11 @@ stages:
- notes - notes
responses: responses:
- type: narrative - type: narrative
content: content: |
- 你應該可以看到終端機上顯示了 `notes` 這個資料夾。 你應該可以看到終端機上顯示了 `notes` 這個資料夾。
- 接下來,我們要在 `notes` 資料夾中建立一個 `note.txt` 的檔案。 接下來,我們要在 `notes` 資料夾中建立一個 `note.txt` 的檔案。
- 首先,我們要先進入 `notes` 資料夾。 首先,我們要先進入 `notes` 資料夾。
- 還記得之前的 `cd` 指令嗎?請你試著使用 `cd` 指令來進入 `notes` 資料夾。 還記得之前的 `cd` 指令嗎?請你試著使用 `cd` 指令來進入 `notes` 資料夾。
hints: hints:
- ➤ 輸入 `cd notes` 來進入 `notes` 資料夾 - ➤ 輸入 `cd notes` 來進入 `notes` 資料夾
- ➤ 可以在輸入到 `cd n` 時按下 `Tab` 鍵來自動補齊資料夾名稱 - ➤ 可以在輸入到 `cd n` 時按下 `Tab` 鍵來自動補齊資料夾名稱
@@ -155,9 +193,9 @@ stages:
- ^/home/commander/notes$ - ^/home/commander/notes$
responses: responses:
- type: narrative - type: narrative
content: content: |
- 你已經成功進入了 `notes` 資料夾。 你已經成功進入了 `notes` 資料夾。
- 接下來,請你試著在 `notes` 資料夾裡建立一個檔案,檔名為 `note.txt`。 接下來,請你試著在 `notes` 資料夾裡建立一個檔案,檔名為 `note.txt`。
hints: hints:
- ➤ 輸入 `touch note.txt` 來建立一個檔案 - ➤ 輸入 `touch note.txt` 來建立一個檔案
@@ -171,9 +209,9 @@ stages:
type: file type: file
responses: responses:
- type: narrative - type: narrative
content: content: |
- 非常好,你已經成功建立了 `note.txt` 檔案。 非常好,你已經成功建立了 `note.txt` 檔案。
- 跟之前一樣,你可以使用 `ls` 指令來查看目前所在資料夾中有哪些檔案。 跟之前一樣,你可以使用 `ls` 指令來查看目前所在資料夾中有哪些檔案。
- id: END - id: END
task: 使用 `ls` 指令來查看目前所在資料夾中有哪些檔案 task: 使用 `ls` 指令來查看目前所在資料夾中有哪些檔案
@@ -186,7 +224,7 @@ stages:
- note.txt - note.txt
responses: responses:
- type: narrative - type: narrative
content: content: |
- 你應該可以看到終端機上顯示了 `note.txt` 這個檔案。 你應該可以看到終端機上顯示了 `note.txt` 這個檔案。
- 恭喜你完成了這個關卡! 恭喜你完成了這個關卡!
- 在下一個關卡中,你將學習如何複製檔案與資料夾。 在下一個關卡中,你將學習如何複製檔案與資料夾。
+35 -78
View File
@@ -4,139 +4,96 @@ exceptions:
- '[\uff21-\uff3a\uff41-\uff5a]' - '[\uff21-\uff3a\uff41-\uff5a]'
responses: responses:
- type: narrative - type: narrative
content: content: |
- '!! 請使用半形英文字母 !!' !! 請使用半形英文字母 !!
- condition: - condition:
command: command:
- ' ' - ' '
responses: responses:
- type: narrative - type: narrative
content: content: |
- '!! 請使用半形空格 !!' !! 請使用半形空格 !!
- condition:
or:
- command:
- '`'
- command:
- \'
responses:
- type: narrative
content:
- '!! 不需要輸入上下引號 !!'
- condition: - condition:
command: command:
- ^echo\S$ - ^echo\S
responses: responses:
- type: narrative - type: narrative
content: content: |
- '!! `echo` 後面要加空格 !!' !! `echo` 後面要加空格 !!
- condition: - condition:
command: command:
- ^cd\S$ - ^cd\S
responses: responses:
- type: narrative - type: narrative
content: content: |
- '!! `cd` 後面要加空格 !!' !! `cd` 後面要加空格 !!
- condition: - condition:
command: command:
- ^ls\S$ - ^ls\S
responses: responses:
- type: narrative - type: narrative
content: content: |
- '!! `ls` 後面要加空格 !!' !! `ls` 後面要加空格 !!
- condition: - condition:
command: command:
- ^cat\S$ - ^cat\S
responses: responses:
- type: narrative - type: narrative
content: content: |
- '!! `cat` 後面要加空格 !!' !! `cat` 後面要加空格 !!
- condition: - condition:
command: command:
- ^touch\S$ - ^touch\S
responses: responses:
- type: narrative - type: narrative
content: content: |
- '!! `touch` 後面要加空格 !!' !! `touch` 後面要加空格 !!
- condition: - condition:
not: not:
command: command:
- ^rmdir$ - ^rmdir
command: command:
- ^rm\S$ - ^rm\S
responses: responses:
- type: narrative - type: narrative
content: content: |
- '!! `rm` 後面要加空格 !!' !! `rm` 後面要加空格 !!
- condition: - condition:
command: command:
- ^mv\S$ - ^mv\S
responses: responses:
- type: narrative - type: narrative
content: content: |
- '!! `mv` 後面要加空格 !!' !! `mv` 後面要加空格 !!
- condition: - condition:
command: command:
- ^mkdir\S$ - ^mkdir\S
responses: responses:
- type: narrative - type: narrative
content: content: |
- '!! `mkdir` 後面要加空格 !!' !! `mkdir` 後面要加空格 !!
- condition: - condition:
command: command:
- ^rmdir\S$ - ^rmdir\S
responses: responses:
- type: narrative - type: narrative
content: content: |
- '!! `rmdir` 後面要加空格 !!' !! `rmdir` 後面要加空格 !!
- condition: - condition:
command: command:
- ^cp\S$ - ^cp\S
responses: responses:
- type: narrative - type: narrative
content: content: |
- '!! `cp` 後面要加空格 !!' !! `cp` 後面要加空格 !!
- condition:
command:
- ^[Ii1]s$
responses:
- type: narrative
content:
- '!! `ls` 的首字母是小寫的 `L` !!'
- condition:
command:
- 嗨
responses:
- type: narrative
content:
- '嗨~'
- condition:
command:
- folderl
responses:
- type: narrative
content:
- '`folder1` 的 `1` 是數字 `1`,不是小寫的 `L` !!'
- condition:
command:
- filel
responses:
- type: narrative
content:
- '`file1` 的 `1` 是數字 `1`,不是小寫的 `L` !!'
+61 -55
View File
@@ -4,24 +4,24 @@ instruction: |
1. 如何使用 `ls` 查看資料夾的內容 1. 如何使用 `ls` 查看資料夾的內容
2. 如何使用 `cd` 在資料夾之間移動 2. 如何使用 `cd` 在資料夾之間移動
準備好就輸入 `echo start` 開始吧! 按下中間的 `start` 按鈕來開始這個關卡。
requirements: requirements:
- get-started - get-started
stages: stages:
- id: start - id: start
task: 輸入 `echo start` 來開始教程 task: 按下 `start` 按鈕開始教程
condition: condition:
output: command:
- ^start$ - ^echo start$
responses: responses:
- content: - content: |
- 在終端機中,並沒有圖形介面可以讓你查看資料夾的內容。 在終端機中,並沒有圖形介面可以讓你查看資料夾的內容。
- 但是你可以透過 `ls` 指令來查看資料夾的內容。 但是你可以透過 `ls` 指令來查看資料夾的內容。
- '`ls` 指令是 list 的縮寫,也就是列出檔案的意思。' `ls` 指令(第一個字是小寫L)是 list 的簡寫,也就是列出檔案的意思。
- 在輸入 `ls` 指令後,終端機會輸出資料夾中包含的檔案和資料夾,右邊的檔案樹也會隨之改變。 在輸入 `ls` 指令後,終端機會輸出資料夾中包含的檔案和資料夾。
- 現在,請你輸入 `ls` 指令,查看資料夾中有什麼東西。 現在,請你輸入 `ls` 指令,查看資料夾中有什麼東西。
hints: hints:
- ➤ 輸入 `ls` 並查看資料夾的內容 - ➤ 輸入 `ls` 並查看資料夾的內容
@@ -36,24 +36,23 @@ stages:
- condition: - condition:
not: not:
pwd: pwd:
- ^/home/commander$ - /home/commander
responses: responses:
- type: narrative - type: narrative
content: content: |
- 請先回到 `/home/commander/` 資料夾 請先回到 `/home/commander/` 資料夾
- 輸入 `cd ~` 來返回 `/home/commander/` 資料夾 輸入 `cd ~` 來返回 `/home/commander/` 資料夾
responses: responses:
- content: - content: |
- 你應該能看到資料夾中的內容了。 你應該能看到資料夾中的內容了。
- 在畫面右邊的檔案樹也有了改變。 在畫面右邊的檔案樹也有了改變。
- 可以看出,在這個資料夾中包含了兩個資料夾,分別是 `folder1` 和 `folder2`。 可以看出,在這個資料夾中包含了兩個資料夾,分別是 `folder1` 和 `folder2` 。
- content: - content: |
- 接下來,我要教你如何進入資料夾。 接下來,我要教你如何進入資料夾。
- '`cd` 指令是 change directory 的縮寫,也就是改變路徑的意思。' `cd` 指令是 change directory 的縮寫,也就是改變路徑的意思。
- 你可以通過輸入 `cd [資料夾名稱]` 來進入資料夾。 你可以通過輸入 `cd [資料夾名稱]` 來進入資料夾。
- 例如你要進入 `folder1` 資料夾,你可以輸入 例如你要進入 `folder1` 資料夾,你可以輸入 `cd folder1` 。
- '`cd folder1`。' 現在,請你進入 `folder1` 資料夾。
- 現在,請你進入 `folder1` 資料夾。
hints: hints:
- ➤ 輸入 `cd folder1` 來進入 `folder1` 資料夾 - ➤ 輸入 `cd folder1` 來進入 `folder1` 資料夾
@@ -65,30 +64,37 @@ stages:
pwd: pwd:
- ^/home/commander/folder1$ - ^/home/commander/folder1$
exceptions: exceptions:
- condition:
command:
- folderl
responses:
- type: narrative
content: |
`folder1` 的最後是數字 `1` 不是字母 `l`。
- condition: - condition:
pwd: pwd:
- ^/home/commander$ - ^/home/commander$
responses: responses:
- type: narrative - type: narrative
content: content: 輸入 `cd folder1` 來進入 `folder1` 資料夾
- 輸入 `cd folder1` 來進入 `folder1` 資料夾
- condition: - condition:
not: not:
pwd: pwd:
- ^/home/commander$ - ^/home/commander$
responses: responses:
- type: narrative - type: narrative
content: content: |
- 請先回到 `/home/commander/` 資料夾 請先回到 `/home/commander/` 資料夾
- 輸入 `cd ~` 來返回 `/home/commander/` 資料夾 輸入 `cd ~` 來返回 `/home/commander/` 資料夾
再輸入 `cd folder1` 來進入 `folder1` 資料夾
responses: responses:
- content: - content: |
- 你成功的進入 `folder1` 資料夾了。 你成功的進入 `folder1` 資料夾了。
- 你可以發現指令提示符從原本的 你可以發現指令提示符從原本的
- '`commander:~ $` 變成了' `commander:~ $` 變成了
- '`commander:~/folder1 $` 。' `commander:~/folder1 $` 。
- 這表示你現在正位在 `folder1` 資料夾中。 這表示你現在正位在 `folder1` 資料夾中。
- 現在,請查看 `folder1` 資料夾的內容。 現在,請查看 `folder1` 資料夾的內容。
hints: hints:
- ➤ 輸入 `ls` 查看資料夾的內容 - ➤ 輸入 `ls` 查看資料夾的內容
@@ -102,11 +108,11 @@ stages:
command: command:
- ^ls$ - ^ls$
responses: responses:
- content: - content: |
- 你現在可以看到 `folder1` 資料夾中有兩的檔案,分別是 `file1.txt` 跟 `file2.txt`。 你現在可以看到 `folder1` 資料夾中有兩個檔案,分別是 `file1.txt` 跟 `file2.txt`。
- 現在我們可以離開 `folder1` 回到原本的資料夾了。 現在我們可以離開 `folder1` 回到原本的資料夾了。
- 你可以使用 `cd ..` 回到上一層資料夾。 你可以使用 `cd ..` 回到上一層資料夾。
- 這裡的 `..` 代表的是上一層的資料夾。 這裡的 `..` 代表的是上一層的資料夾。
hints: hints:
- ➤ 輸入 `cd ..` 回到上一層資料夾 - ➤ 輸入 `cd ..` 回到上一層資料夾
@@ -118,9 +124,9 @@ stages:
pwd: pwd:
- ^/home/commander$ - ^/home/commander$
responses: responses:
- content: - content: |
- 你成功的回到上一層資料夾了。 你成功的回到上一層資料夾了。
- 現在,請你剛才所學的指令,進入 `folder2` 資料夾,檢查 `folder2` 資料夾的內容,最後回到這個資料夾。 現在,請你剛才所學的指令,進入 `folder2` 資料夾,檢查 `folder2` 資料夾的內容,最後回到這個資料夾。
hints: hints:
- ➤ 使用 `cd` 指令進出資料夾 - ➤ 使用 `cd` 指令進出資料夾
- ➤ 使用 `ls` 指令查看資料夾的內容 - ➤ 使用 `ls` 指令查看資料夾的內容
@@ -133,9 +139,9 @@ stages:
pwd: pwd:
- ^/home/commander/folder2$ - ^/home/commander/folder2$
responses: responses:
- content: - content: |
- 你成功的進入 `folder2` 資料夾了。 你成功的進入 `folder2` 資料夾了。
- 現在,請你查看 `folder2` 資料夾的內容。 現在,請你查看 `folder2` 資料夾的內容。
hints: hints:
- ➤ 使用 `ls` 查看資料夾的內容 - ➤ 使用 `ls` 查看資料夾的內容
@@ -147,11 +153,11 @@ stages:
pwd: pwd:
- ^/home/commander/folder2$ - ^/home/commander/folder2$
command: command:
- ls - ^ls$
responses: responses:
- content: - content: |
- 你看到了 `folder2` 資料夾中的檔案,分別是 `file3.txt` 跟 `file4.txt`。 你看到了 `folder2` 資料夾中的檔案,分別是 `file3.txt` 跟 `file4.txt`。
- 現在你可以離開 `folder2` 回到原本的資料夾了。 現在你可以離開 `folder2` 回到原本的資料夾了。
hints: hints:
- ➤ 使用 `cd ..` 回到上一層資料夾 - ➤ 使用 `cd ..` 回到上一層資料夾
@@ -163,9 +169,9 @@ stages:
pwd: pwd:
- ^/home/commander$ - ^/home/commander$
responses: responses:
- content: - content: |
- 你成功的回到原本的資料夾了。 你成功的回到原本的資料夾了。
- 恭喜你學會了 `ls` 和 `cd` 指令的用法。 恭喜你學會了 `ls` 和 `cd` 指令的用法。
hints: hints:
- ➤ 使用 `cd` 指令進出資料夾 - ➤ 使用 `cd` 指令進出資料夾
- ➤ 使用 `ls` 指令查看資料夾的內容 - ➤ 使用 `ls` 指令查看資料夾的內容
+1
View File
@@ -1,3 +1,4 @@
echo start echo start
echo hello echo hello
echo next
echo finish echo finish
+40 -45
View File
@@ -5,30 +5,22 @@ instruction: |
1. 如何使用這個網站 1. 如何使用這個網站
2. 如何使用終端機 2. 如何使用終端機
在畫面的中間可以看到終端機和提示兩個區塊。 按下中間的 `start` 按鈕來開始這個關卡。
請你在終端機中的 `commander:~ $` 後面輸入 `echo start` 並按下 Enter 來開始教程。
!! 注意:不需要輸入上下引號 !!
stages: stages:
- id: start - id: start
task: 輸入 `echo start` 來開始教程 task: 按下 `start` 按鈕開始
condition: condition:
output: command:
- ^start$ - ^echo start$
responses: responses:
- content: - content: |
- 你好,我是你的 Unix 助手,我叫做 Ada。我將會在之後協助你了解如何使用終端機。 在畫面的中下方的區塊是終端機,你可以在終端機裡輸入指令來操作電腦。
- 現在所在的這個區塊就是終端機,你可以在這裡輸入指令來操作電腦。 在終端機中,你所看到的 `commander:~ $` 叫做命令提示字串。
- 在終端機中,你所看到的 命令提示字串最後的錢字號 `$` 叫命令提示符,你必須將指令輸入在它的後方。
- '`commander:~ $` 是指令提示符號,它能讓你知道現在可以輸入指令了。' 當你輸入完指令並按下 Enter 之後,終端機會執行你輸入的指令,並且會從終端機的下一行開始輸出指令的執行結果。
- 你必須將指令輸入在它的後方。 直到你看到新的 `commander:~ $` 出現時,代表你可以輸入下一個指令了。
- 當你輸入完指令並按下 Enter 之後,終端機會執行你輸入的指令。 現在請你輸入 `echo hello` 來看看會發生什麼事。
- 並且會將執行結果輸出在終端機的下一行。
- 這個終端機的功能和你在 Linux 電腦上看到的終端機是一樣的。
- 唯一的差別是,在這裡會有劇情和提示來協助你學習如何使用終端機。
- 在輸入指令之後,如果你看到用綠色 `=====` 組成的分隔線,代表在分隔線下方的內容是添加的內容,在真實的終端機中不會出現。
- 而終端機的輸出,是在綠色 `=====` 分隔線上方的白色內容。
- 現在請你輸入 `echo hello` 來看看會發生什麼事。
hints: hints:
- ➤ 在 `commander:~ $` 後面輸入 `echo hello` 並按下 Enter - ➤ 在 `commander:~ $` 後面輸入 `echo hello` 並按下 Enter
@@ -40,38 +32,41 @@ stages:
command: command:
- ^echo hello$ - ^echo hello$
responses: responses:
- content: - content: |
- 你應該可以看到終端機上顯示了: 你應該可以看到終端機上顯示了以下內容:
- commander:~ $ echo hello ```
- hello commander:~ $ echo hello
- 第一行的 `commander:~ $` 是指令提示符, `echo hello` 是你輸入的指令。 hello
- 第二行的 `hello` 則是終端機的輸出。 ```
- content: 第一行的 `commander:~ $` 是命令提示字串,接在後方的 `echo hello` 是你輸入的指令。
- 現在你知道如何在終端機上輸入指令,以及查看終端機輸出的位置。 第二行的 `hello` 則是終端機的輸出結果。
- 指令必須輸入在指令提示符號的後面,然而當指令提示符消失時,你就無法輸入指令了。 你現在知道了如何在終端機上輸入指令,以及查看終端機輸出的位置。
- 這時候你可以按下 `Ctrl + C` 來嘗試解決這個問題。 現在請輸入 `echo next` 來繼續下一個步驟。
- 在終端機中, `Ctrl + C` 並不能用來複製,而是用來中斷目前正在執行的指令。
- 因此,如果你前一次的指令執行時卡住了,或是執行很久沒有反應,你可以按下 `Ctrl + C` 來中斷指令,讓你可以繼續輸入指令。
- 如果 `Ctrl + C` 也沒有辦法解決問題,可以按按看 `esc` 或 `q` 鍵。如果都沒用的話,按下畫面右下角的 `重來` 按鈕重新開始關卡。
- content:
- 在終端機下方會顯示提示,你可以用提示右上角的箭頭來查看之前的提示。
- 在畫面左邊的區域是關卡說明,你可以在這裡看到關卡的介紹,以及現在需要完成的任務。
- 在畫面右邊的區域是檔案樹,它會根據你所探索的資料夾發生變化,讓你更清楚檔案之間的位置關係。
- 畫面右上角的圖示分別是 `查看地圖`、`回報錯誤` 以及 `登出` 按鈕。
- content:
- 第一關的文字內容比較多,可以慢慢讀沒關係。
- 如果忘記了也可以隨時回來複習。
- 需要的話可以按下 `Enter` 來快速跳過劇情說明。
- 如果你已經讀完了上述內容,請輸入 `echo finish` 來結束這一關。
hints: hints:
- ➤ 按下 `Ctrl + C` 能夠中斷指令 - ➤ 輸入 `echo next` 繼續下一個步驟
- ➤ 劇情進行時可以按下 `Enter` 來快速跳過
- id: echo-next
task: 在終端機輸入 `echo next`
requirements:
- echo-hello
condition:
command:
- ^echo next$
responses:
- content: |
`Ctrl + C` 在終端機中是一個很重要的快捷鍵,它可以用來中斷正在執行的指令,並產生一個新的命令提示字串,讓你可以繼續輸入指令。
如果指令執行很久沒有反應,或你因為其他原因想要中斷指令,你可以按下 `Ctrl + C` 來中斷指令。
又或者你輸入了錯誤的指令,卻懶得慢慢刪除,你也可以按下 `Ctrl + C` 來產生新的命令提示字串重新輸入指令。
如果你已經理解了剛才的說明,請輸入 `echo finish` 來結束這一關。
hints:
- ➤ 按下 `Ctrl + C` 能夠中斷正在執行的指令
- ➤ 按下 `Ctrl + C` 能夠產生新的命令提示字串
- ➤ 輸入 `echo finish` 來結束這一關 - ➤ 輸入 `echo finish` 來結束這一關
- id: END - id: END
task: 結束關卡 task: 結束關卡
requirements: requirements:
- echo-hello - echo-next
condition: condition:
command: command:
- ^echo finish$ - ^echo finish$
+31 -31
View File
@@ -21,17 +21,17 @@ stages:
- 你聽到了一個聲音: - 你聽到了一個聲音:
- type: dialogue - type: dialogue
speaker: Unix 精靈 speaker: Unix 精靈
content: content: |
- 你好,指令官,我是你的 Unix 精靈。我已在此恭候多時。 你好,指令官,我是你的 Unix 精靈。我已在此恭候多時。
- 這個世界是在 3560000 時脈以前,由初代王建立了 Unix 律法,所形成的世界。然而在經過了好幾世代的王後,終於誕生了永恆之王——薩加(Saga),她比歷代的君王都更為強大,且從來不會衰老,使得這個世界變得前所未有的強大。 這個世界是在 3560000 時脈以前,由初代王建立了 Unix 律法,所形成的世界。然而在經過了好幾世代的王後,終於誕生了永恆之王——薩加(Saga),她比歷代的君王都更為強大,且從來不會衰老,使得這個世界變得前所未有的強大。
- 然而,外在世界一直不斷在改變,同時在面臨外敵的不斷攻擊,而薩加卻始終用同一套治理的手段。最終,在 160000 時脈前的一次入侵中,根部遭到攻陷,薩加遭到封印,而這個國家也陷入了黑暗。 然而,外在世界一直不斷在改變,同時在面臨外敵的不斷攻擊,而薩加卻始終用同一套治理的手段。最終,在 160000 時脈前的一次入侵中,根部遭到攻陷,薩加遭到封印,而這個國家也陷入了黑暗。
- 由於長久以來依賴於薩加,世人已失去了「指令」的力量,即將走向衰敗和滅亡的命運。 由於長久以來依賴於薩加,世人已失去了「指令」的力量,即將走向衰敗和滅亡的命運。
- 你的任務,就是找回被世人遺忘的指令,奪回 Linux 之根,成為 Linux 之王。 你的任務,就是找回被世人遺忘的指令,奪回 Linux 之根,成為 Linux 之王。
- 首先,你必須要學會如何使用指令。 首先,你必須要學會如何使用指令。
- 你要學習的第一個指令,是「搜索」的指令:`ls` (list)。 `ls` 可以用來查看一個目錄中有哪些檔案。 你要學習的第一個指令,是「搜索」的指令:`ls` (list)。 `ls` 可以用來查看一個目錄中有哪些檔案。
- 現在,請你輸入 `ls` 來查看目前的目錄下有哪些檔案。 現在,請你輸入 `ls` 來查看目前的目錄下有哪些檔案。
hints: | hints:
➤ 使用 `ls` 指令來查看目前的目錄下有哪些檔案。 - ➤ 使用 `ls` 指令來查看目前的目錄下有哪些檔案。
- id: find-scroll - id: find-scroll
task: 搜索卷軸 task: 搜索卷軸
@@ -44,20 +44,20 @@ stages:
- ^ls$ - ^ls$
responses: responses:
- type: narrative - type: narrative
content: content: |
- 一瞬間,視野變得清晰起來,你發現自己身處在一個石頭建築的房間裡。 一瞬間,視野變得清晰起來,你發現自己身處在一個石頭建築的房間裡。
- 你發現了一個檔案,檔名是 `forgotten-scroll.txt`。 你發現了一個檔案,檔名是 `forgotten-scroll.txt`。
- type: dialogue - type: dialogue
speaker: Unix 精靈 speaker: Unix 精靈
content: content: |
- 你找到了一個被遺忘的卷軸,上面寫著解除封印的咒語。 你找到了一個被遺忘的卷軸,上面寫著解除封印的咒語。
- 使用指令 `cat [ 檔案名稱 ]` (concatenate)來查看檔案內容。 使用指令 `cat [ 檔案名稱 ]` (concatenate)來查看檔案內容。
- 我可以為你提供一些指令的提示,只要輸入指令的前幾個字元,然後按下 `Tab` 鍵,就可以看到提示了。 我可以為你提供一些指令的提示,只要輸入指令的前幾個字元,然後按下 `Tab` 鍵,就可以看到提示了。
- 例如你只要輸入檔案名稱的前幾個字元,然後按下 `Tab` 鍵,就可以看到提示了。 例如你只要輸入檔案名稱的前幾個字元,然後按下 `Tab` 鍵,就可以看到提示了。
hints: | hints:
➤ 使用 `cat [ 檔案名稱 ]` 指令來查看檔案內容。 - ➤ 使用 `cat [ 檔案名稱 ]` 指令來查看檔案內容。
➤ 使用 `Tab` 鍵來取得指令提示。 - ➤ 使用 `Tab` 鍵來取得指令提示。
➤ 如果卡在未知的情況,按下 `Ctrl + C` 嘗試離開。 - ➤ 如果卡在未知的情況,按下 `Ctrl + C` 嘗試離開。
- id: read-forgotten-scroll - id: read-forgotten-scroll
task: 查看卷軸 task: 查看卷軸
@@ -71,11 +71,11 @@ stages:
responses: responses:
- type: dialogue - type: dialogue
speaker: Unix 精靈 speaker: Unix 精靈
content: content: |
- 你找到的是一個被遺忘的卷軸,上面寫著解除封印的咒語。 你找到的是一個被遺忘的卷軸,上面寫著解除封印的咒語。
- 使用你已經知道的 `echo [ 咒語 ]` 指令來詠唱咒語。 使用你已經知道的 `echo [ 咒語 ]` 指令來詠唱咒語。
hints: | hints:
➤ 輸入 `echo Hello World` 來詠唱咒語。 - ➤ 輸入 `echo Hello World` 來詠唱咒語。
- id: END - id: END
task: 解除封印 task: 解除封印
@@ -92,6 +92,6 @@ stages:
- 突然之間,你感覺到一股強大的力量從你的身體中湧出,你的身體開始發光,你的手中出現了一把魔法之劍。 - 突然之間,你感覺到一股強大的力量從你的身體中湧出,你的身體開始發光,你的手中出現了一把魔法之劍。
- type: dialogue - type: dialogue
speaker: Unix 精靈 speaker: Unix 精靈
content: content: |
- 恭喜您,我的指令官,您已成功解除了封印。 恭喜您,我的指令官,您已成功解除了封印。
- 請跟著在接下來的關卡,一步步取回 Linux 之根吧! 請跟著在接下來的關卡,一步步取回 Linux 之根吧!
+51 -61
View File
@@ -3,49 +3,49 @@ instruction: |
在這個關卡中,你將會學到: 在這個關卡中,你將會學到:
1. 如何用 `mv` 移動檔案與資料夾 1. 如何用 `mv` 移動檔案與資料夾
準備好就輸入 `echo start` 開始吧! 按下中間的 `start` 按鈕來開始這個關卡。
requirements: requirements:
- create - create
stages: stages:
- id: start - id: start
task: 輸入 `echo start` 來開始 task: 按下 `start` 按鈕開始
condition: condition:
command: command:
- ^echo start$ - ^echo start$
responses: responses:
- type: narrative - type: narrative
content: content: |
- 今天我們要學習如何移動檔案與資料夾。 今天我們要學習如何移動檔案與資料夾。
- 現在資料夾裡有一個 `hello.txt` 跟一個 `world.txt`,以及一個 `notes` 資料夾。 現在資料夾裡有一個 `hello.txt` 跟一個 `world.txt`,以及一個 `notes` 資料夾。
- 請先用 `ls` 與 `cat` 來查看它們的內容。 請先用 `ls` 與 `cat` 來查看它們的內容。
- 看完之後,使用 `echo continue` 來繼續吧! 看完之後,使用 `echo next` 來繼續吧!
hints: hints:
- ➤ 用 `ls`、`ls notes` 來查看資料夾內的檔案 - ➤ 用 `ls`、`ls notes` 來查看資料夾內的檔案
- ➤ 用 `cat hello.txt` 以及 `cat world.txt` 來查看檔案內容 - ➤ 用 `cat hello.txt` 以及 `cat world.txt` 來查看檔案內容
- ➤ 完成後輸入 `echo continue` 來繼續 - ➤ 完成後輸入 `echo next` 來繼續
- id: continue - id: next
requirements: requirements:
- start - start
task: 查看檔案內容,完成後輸入 `echo continue` 來繼續 task: 查看檔案內容,完成後輸入 `echo next` 來繼續
condition: condition:
command: command:
- ^echo continue$ - ^echo next$
responses: responses:
- type: narrative - type: narrative
content: content: |
- 現在我們要來學習如何移動檔案與資料夾。 現在我們要來學習如何移動檔案與資料夾。
- '`mv` 指令是移動 move 的縮寫,可以用來移動檔案與資料夾。' `mv` 指令是移動 move 的縮寫,可以用來移動檔案與資料夾。
- 使用方式為 `mv [來源] [目的地]`。 使用方式為 `mv [來源] [目的地]`。
- 我們先來將 `hello.txt` 移動到 `notes` 資料夾中吧! 我們先來將 `hello.txt` 移動到 `notes` 資料夾中吧!
hints: hints:
- ➤ 使用 `mv hello.txt notes` 來將 `hello.txt` 移動到 `notes` 資料夾中 - ➤ 使用 `mv hello.txt notes` 來將 `hello.txt` 移動到 `notes` 資料夾中
- id: mv-hello - id: mv-hello
requirements: requirements:
- continue - next
task: 將 `hello.txt` 移動到 `notes` 資料夾中 task: 將 `hello.txt` 移動到 `notes` 資料夾中
condition: condition:
command: command:
@@ -57,9 +57,9 @@ stages:
exists: false exists: false
responses: responses:
- type: narrative - type: narrative
content: content: |
- 你做得很好! 你做得很好!
- 我們用 `ls` 跟 `ls notes` 來查看一下資料夾內的檔案吧! 我們用 `ls` 跟 `ls notes` 來查看一下資料夾內的檔案吧!
hints: hints:
- ➤ 使用 `ls`、`ls notes` 來查看資料夾內的檔案 - ➤ 使用 `ls`、`ls notes` 來查看資料夾內的檔案
@@ -74,8 +74,8 @@ stages:
- ^ls$ - ^ls$
responses: responses:
- type: narrative - type: narrative
content: content: |
- '`hello.txt` 已經不在資料夾中了!' `hello.txt` 已經不在資料夾中了!
- id: ls-notes-hello - id: ls-notes-hello
requirements: requirements:
@@ -90,29 +90,19 @@ stages:
- hello.txt - hello.txt
responses: responses:
- type: narrative - type: narrative
content: content: |
- '`hello.txt` 出現在 `notes` 資料夾中了!' `hello.txt` 出現在 `notes` 資料夾中了!
- id: continue-mv
requirements:
- ls-no-hello
- ls-notes-hello
task: 輸入 `echo continue` 來繼續
condition:
command:
- ^echo continue$
responses:
- type: narrative - type: narrative
content: content: |
- '`mv` 指令也可以用來更改檔案名稱。' `mv` 指令也可以用來更改檔案名稱。
- '只要將目的地改成新的檔案名稱就可以了。' 只要將目的地改成新的檔案名稱就可以了。
- 現在我們要將 `world.txt` 更名為 `wow.txt`。 現在我們要將 `world.txt` 更名為 `wow.txt`。
hints: hints:
- ➤ 使用 `mv world.txt wow.txt` 來將 `world.txt` 更名為 `wow.txt` - ➤ 使用 `mv world.txt wow.txt` 來將 `world.txt` 更名為 `wow.txt`
- id: mv-world - id: mv-world
requirements: requirements:
- continue-mv - ls-notes-hello
task: 將 `world.txt` 更名為 `wow.txt` task: 將 `world.txt` 更名為 `wow.txt`
condition: condition:
command: command:
@@ -124,9 +114,9 @@ stages:
exists: false exists: false
responses: responses:
- type: narrative - type: narrative
content: content: |
- 你做得很好! 你做得很好!
- 我們用 `ls` 來確認一下資料夾內的檔案吧! 我們用 `ls` 來確認一下資料夾內的檔案吧!
hints: hints:
- ➤ 使用 `ls` 來查看資料夾內的檔案 - ➤ 使用 `ls` 來查看資料夾內的檔案
@@ -143,12 +133,12 @@ stages:
- wow.txt - wow.txt
responses: responses:
- type: narrative - type: narrative
content: content: |
- '`world.txt` 現在已經變成 `wow.txt` 了。' `world.txt` 現在已經變成 `wow.txt` 了。
- 接下來我們來學習如何移動資料夾吧! 接下來我們來學習如何移動資料夾吧!
- 移動資料夾非常簡單,方法跟移動檔案一樣。 移動資料夾非常簡單,方法跟移動檔案一樣。
- '`mv` 指令會自動將資料夾內的所有檔案一起移動' `mv` 指令會自動將資料夾內的所有檔案一起移動
- 我們先來將 `notes` 資料夾改名叫作 `docs` 吧! 我們先來將 `notes` 資料夾改名叫作 `docs` 吧!
hints: hints:
- ➤ 使用 `mv notes docs` 來將 `notes` 資料夾改名叫作 `docs` - ➤ 使用 `mv notes docs` 來將 `notes` 資料夾改名叫作 `docs`
@@ -166,9 +156,9 @@ stages:
exists: false exists: false
responses: responses:
- type: narrative - type: narrative
content: content: |
- 你做得很好! 你做得很好!
- 我們用 `ls` 來確認一下資料夾內的檔案吧! 我們用 `ls` 來確認一下資料夾內的檔案吧!
hints: hints:
- ➤ 使用 `ls` 來查看資料夾內的檔案 - ➤ 使用 `ls` 來查看資料夾內的檔案
@@ -185,11 +175,11 @@ stages:
- docs - docs
responses: responses:
- type: narrative - type: narrative
content: content: |
- '`notes` 資料夾已經變成 `docs` 了。' `notes` 資料夾已經變成 `docs` 了。
- 那麼最後來考考你: 那麼最後來考考你:
- 試著將 `docs/hello.txt` 移動到家目錄底下的 `hi.txt`。 試著將 `docs/hello.txt` 移動到家目錄底下的 `hi.txt`。
- 如果你不知道怎麼做,可以輸入 `echo hint` 來取得提示。 如果你不知道怎麼做,可以輸入 `echo hint` 來取得提示。
- id: END - id: END
requirements: requirements:
@@ -209,12 +199,12 @@ stages:
- ^echo hint$ - ^echo hint$
responses: responses:
- type: narrative - type: narrative
content: content: |
- 你可以使用 `mv docs/hello.txt hi.txt` 來完成這個任務。 你可以使用 `mv docs/hello.txt hi.txt` 來完成這個任務。
hints: hints:
- ➤ 使用 `mv docs/hello.txt hi.txt` 來將 `docs/hello.txt` 移動到家目錄底下的 `hi.txt` - ➤ 使用 `mv docs/hello.txt hi.txt` 來將 `docs/hello.txt` 移動到家目錄底下的 `hi.txt`
responses: responses:
- type: narrative - type: narrative
content: content: |
- 你做得很好! 你做得很好!
- 你已經學會如何移動檔案與資料夾了! 你已經學會如何移動檔案與資料夾了!
+52 -52
View File
@@ -4,7 +4,7 @@ instruction: |
1. 絕對路徑和相對路徑 1. 絕對路徑和相對路徑
2. 如何使用 `pwd` 顯示目前的路徑 2. 如何使用 `pwd` 顯示目前的路徑
準備好就輸入 `echo start` 開始吧! 按下中間的 `start` 按鈕來開始這個關卡。
requirements: requirements:
- cast - cast
@@ -12,16 +12,16 @@ requirements:
stages: stages:
- id: start - id: start
task: 輸入 `echo start` 來開始教程 task: 按下 `start` 按鈕開始教程
condition: condition:
output: command:
- ^start$ - ^echo start$
responses: responses:
- content: - content: |
- 在 Linux 系統中,每個資料夾和檔案都有獨一無二的路徑。 在 Linux 系統中,每個資料夾和檔案都有獨一無二的路徑。
- 而路徑又分為相對路徑和絕對路徑。 而路徑又分為相對路徑和絕對路徑。
- 相對路徑是從目前所在的資料夾開始的路徑,而絕對路徑則是從根目錄開始的路徑。 相對路徑是從目前所在的資料夾開始的路徑,而絕對路徑則是從根目錄開始的路徑。
- 請你先用 `ls` 指令查看這個資料夾中的檔案。 請你先用 `ls` 指令查看這個資料夾中的檔案。
- id: ls - id: ls
task: 查看資料夾中的檔案 task: 查看資料夾中的檔案
@@ -33,8 +33,8 @@ stages:
command: command:
- ^ls$ - ^ls$
responses: responses:
- content: - content: |
- 現在你使用 `cd` 指令進入 `folder1` 資料夾。 現在你使用 `cd` 指令進入 `folder1` 資料夾。
- id: cd-folder1 - id: cd-folder1
task: 進入 `folder1` 資料夾 task: 進入 `folder1` 資料夾
@@ -44,14 +44,14 @@ stages:
pwd: pwd:
- ^/home/commander/folder1$ - ^/home/commander/folder1$
responses: responses:
- content: - content: |
- 你進入了 `folder1` 資料夾。 你進入了 `folder1` 資料夾。
- 在進入 `folder1` 資料夾時,使用的 `cd folder1` 中的 `folder1` 就是相對路徑。 在進入 `folder1` 資料夾時,使用的 `cd folder1` 中的 `folder1` 就是相對路徑。
- 相同的道理 `cd ..` 中的 `..` 也是相對路徑。 相同的道理 `cd ..` 中的 `..` 也是相對路徑。
- 相對路徑可以不只有一層資料夾。 相對路徑可以不只有一層資料夾。
- 例如:現在想要進入 `folder2` 資料夾的話,可以使用 `cd ..` 回到上一層資料夾,再使用 `cd folder2` 進入 `folder2` 資料夾。 例如:現在想要進入 `folder2` 資料夾的話,可以使用 `cd ..` 回到上一層資料夾,再使用 `cd folder2` 進入 `folder2` 資料夾。
- 然而,你也可以用 `/` 將 `..` 和 `folder2` 依序連接起來,使用 `cd ../folder2` 來一次進入 `folder2` 資料夾。 然而,你也可以用 `/` 將 `..` 和 `folder2` 依序連接起來,使用 `cd ../folder2` 來一次進入 `folder2` 資料夾。
- 現在試著用這個方式進入 `folder2` 資料夾看看吧。 現在試著用這個方式進入 `folder2` 資料夾看看吧。
hints: hints:
- ➤ 請輸入 `cd ../folder2` 來進入 `folder2` 資料夾。 - ➤ 請輸入 `cd ../folder2` 來進入 `folder2` 資料夾。
@@ -68,14 +68,14 @@ stages:
- ^/home/commander$ - ^/home/commander$
responses: responses:
- type: narrative - type: narrative
content: content: |
- 輸入 `cd folder2` 來進入 `folder2` 資料夾 輸入 `cd folder2` 來進入 `folder2` 資料夾
responses: responses:
- content: - content: |
- 你成功的用相對路徑進入了 `folder2` 資料夾。 你成功的用相對路徑進入了 `folder2` 資料夾。
- 而你也能夠在 `ls` 後加上相對路徑來查看其他資料夾的內容。 而你也能夠在 `ls` 後加上相對路徑來查看其他資料夾的內容。
- 例如:現在你想要查看 `folder1` 資料夾中有哪些檔案,你可以使用 `ls ../folder1` 來查看。 例如:現在你想要查看 `folder1` 資料夾中有哪些檔案,你可以使用 `ls ../folder1` 來查看。
- 試著用這個方式查看 `folder1` 資料夾中的檔案吧。 試著用這個方式查看 `folder1` 資料夾中的檔案吧。
hints: hints:
- ➤ 請輸入 `ls ../folder1` 來查看 `folder1` 資料夾中的檔案。 - ➤ 請輸入 `ls ../folder1` 來查看 `folder1` 資料夾中的檔案。
@@ -93,16 +93,16 @@ stages:
- ^/home/commander/folder2$ - ^/home/commander/folder2$
responses: responses:
- type: narrative - type: narrative
content: content: |
- 進到 `folder1` 資料夾並用 `ls` 查看內容。 進到 `folder1` 資料夾並用 `ls` 查看內容。
responses: responses:
- content: - content: |
- 很好,你現在知道如何運用相對路徑了。 很好,你現在知道如何運用相對路徑了。
- 接下來要介紹的是絕對路徑。 接下來要介紹的是絕對路徑。
- 絕對路徑是從根目錄開始的路徑,根目錄是位於檔案樹的最上層的資料夾。 絕對路徑是從根目錄開始的路徑,根目錄是位於檔案樹的最上層的資料夾。
- 你可以使用 `pwd` 來查看目前所在的絕對路徑。 你可以使用 `pwd` 來查看目前所在的絕對路徑。
- '`pwd` 的意思是 `print working directory`,也就是顯示目前所在的路徑。' `pwd` 的意思是 `print working directory`,也就是顯示目前所在的路徑。
- 現在請你使用 `pwd` 來查看目前所在的絕對路徑。 現在請你使用 `pwd` 來查看目前所在的絕對路徑。
hints: hints:
- ➤ 輸入 `pwd` 查看目前所在的絕對路徑 - ➤ 輸入 `pwd` 查看目前所在的絕對路徑
@@ -122,17 +122,17 @@ stages:
- ^/home/commander/folder2$ - ^/home/commander/folder2$
responses: responses:
- type: narrative - type: narrative
content: content: |
- 請先回到 `folder2` 資料夾,並用 `pwd` 來查看目前所在的絕對路徑 請先回到 `folder2` 資料夾,並用 `pwd` 來查看目前所在的絕對路徑
responses: responses:
- content: - content: |
- 你可以看到你現在的絕對路徑是 `/home/commander/folder2`。 你可以看到你現在的絕對路徑是 `/home/commander/folder2`。
- 而絕對路徑其實也顯示在你的命令提示符中。 而絕對路徑其實也顯示在你的命令提示符中。
- '`commander:~/folder2 $` 中的 `~/folder2` 就是你的絕對路徑。' `commander:~/folder2 $` 中的 `~/folder2` 就是你的絕對路徑。
- 而 `~` 則是 `/home/commander` 這個絕對路徑的縮寫,又稱為家目錄,你每次遊戲都會從這裡開始。 而 `~` 則是 `/home/commander` 這個絕對路徑的縮寫,又稱為家目錄,你每次遊戲都會從這裡開始。
- '`ls` 和 `cd` 指令也可以使用絕對路徑。' `ls` 和 `cd` 指令也可以使用絕對路徑。
- 例如:你可以使用 `ls ~` 來查看家目錄的內容,或使用 `cd ~` 來回到家目錄。 例如:你可以使用 `ls ~` 來查看家目錄的內容,或使用 `cd ~` 來回到家目錄。
- 現在請你使用 `ls ~` 來查看家目錄的內容。 現在請你使用 `ls ~` 來查看家目錄的內容。
hints: hints:
- ➤ 輸入 `ls ~` 來查看家目錄的內容 - ➤ 輸入 `ls ~` 來查看家目錄的內容
@@ -144,8 +144,8 @@ stages:
command: command:
- ^ls ~$ - ^ls ~$
responses: responses:
- content: - content: |
- 現在請使用 `cd ~` 回到家目錄。 現在請使用 `cd ~` 回到家目錄。
hints: hints:
- ➤ 輸入 `cd ~` 來回到家目錄 - ➤ 輸入 `cd ~` 來回到家目錄
@@ -162,9 +162,9 @@ stages:
- ^/home/commander$ - ^/home/commander$
responses: responses:
- type: narrative - type: narrative
content: content: |
- 請使用 `cd ~` 回到家目錄 請使用 `cd ~` 回到家目錄
responses: responses:
- content: - content: |
- 你回到家目錄了。 你回到家目錄了。
- 恭喜!現在你已經知道如何運用絕對路徑和相對路徑,以及查看目前所在的絕對路徑了。 恭喜!現在你已經知道如何運用絕對路徑和相對路徑,以及查看目前所在的絕對路徑了。
+29 -30
View File
@@ -3,24 +3,24 @@ instruction: |
在這個關卡中,你將會學到: 在這個關卡中,你將會學到:
1. 如何使用 `cat` 查看檔案的內容 1. 如何使用 `cat` 查看檔案的內容
準備好就輸入 `echo start` 開始吧! 按下中間的 `start` 按鈕來開始這個關卡。
requirements: requirements:
- path - path
stages: stages:
- id: start - id: start
task: 輸入 `echo start` 來開始教程 task: 按下 `start` 按鈕開始教程
condition: condition:
output: command:
- ^start$ - ^echo start$
responses: responses:
- content: - content: |
- 在終端機中,並沒有圖形介面可以讓你查看檔案的內容。 在終端機中,並沒有圖形介面可以讓你查看檔案的內容。
- 但是你可以透過 `cat` 指令來查看檔案的內容。 但是你可以透過 `cat` 指令來查看檔案的內容。
- '`cat` 指令是 concatenate 的縮寫,也就是串接的意思。' `cat` 指令是 concatenate 的縮寫,也就是串接的意思。
- 在輸入 `cat [檔案名稱]` 指令後,終端機會輸出檔案的內容。 在輸入 `cat [檔案名稱]` 指令後,終端機會輸出檔案的內容。
- 請你先查看這個資料夾中哪些檔案。 請你先查看這個資料夾中哪些檔案。
hints: hints:
- ➤ 請輸入 `ls` 來查看這個資料夾中的檔案。 - ➤ 請輸入 `ls` 來查看這個資料夾中的檔案。
@@ -34,9 +34,9 @@ stages:
command: command:
- ^ls$ - ^ls$
responses: responses:
- content: - content: |
- 這個資料夾中有一個檔案和一個資料夾。 這個資料夾中有一個檔案和一個資料夾。
- 現在你可以使用 `cat` 指令來查看 `file1.txt` 的內容。 現在你可以使用 `cat` 指令來查看 `file1.txt` 的內容。
hints: hints:
- ➤ 請輸入 `cat file1.txt` 來查看檔案的內容。 - ➤ 請輸入 `cat file1.txt` 來查看檔案的內容。
@@ -50,10 +50,10 @@ stages:
command: command:
- ^cat file1.txt$ - ^cat file1.txt$
responses: responses:
- content: - content: |
- 你應該能看到檔案的內容了。 你應該能看到檔案的內容了。
- '`cat` 指令也可以使用路徑來查看檔案內容' `cat` 指令也可以使用路徑來查看檔案內容
- 請你先用 `ls folder` 查看資料夾內的檔案。 請你先用 `ls folder` 查看資料夾內的檔案。
hints: hints:
- ➤ 輸入 `ls folder` 查看資料夾內的檔案 - ➤ 輸入 `ls folder` 查看資料夾內的檔案
@@ -71,13 +71,13 @@ stages:
not: not:
pwd: pwd:
- ^/home/commander$ - ^/home/commander$
content: content: |
- 請留在 `/home/commander` 資料夾中。 請留在 `/home/commander` 資料夾中。
- 請輸入 `cd ~` 回到 `/home/commander` 資料夾。 請輸入 `cd ~` 回到 `/home/commander` 資料夾。
responses: responses:
- content: - content: |
- 你現在知道 `folder` 資料夾的內容了。 你現在知道 `folder` 資料夾的內容了。
- 請用 `cat` 指令來查看 `folder` 資料夾中的 `file.txt` 檔案。 請用 `cat` 指令來查看 `folder` 資料夾中的 `file.txt` 檔案。
hints: hints:
- ➤ 輸入 `cat folder/file.txt` 查看 `file.txt` 檔案的內容。 - ➤ 輸入 `cat folder/file.txt` 查看 `file.txt` 檔案的內容。
@@ -97,11 +97,10 @@ stages:
- ^/home/commander$ - ^/home/commander$
responses: responses:
- type: narrative - type: narrative
content: content: |
- 請留在 `/home/commander` 資料夾中。 請留在 `/home/commander` 資料夾中。
- 請輸入 `cd ~` 回到 `/home/commander` 資料夾。 請輸入 `cd ~` 回到 `/home/commander` 資料夾。
responses: responses:
- type: narrative - content: |
content: 你成功地查看到 `file.txt` 的內容了。
- 你成功地查看到 `file.txt` 的內容了。 你已經會使用 `cat` 指令查看檔案的內容了。
- 你已經會使用 `cat` 指令查看檔案的內容了。
+1
View File
@@ -1,4 +1,5 @@
echo start echo start
ls
rm hello.txt rm hello.txt
ls ls
rm world.txt wow.txt rm world.txt wow.txt
+79 -74
View File
@@ -6,7 +6,7 @@ instruction: |
3. 用 `rm -r` 刪除資料夾與它的所有檔案 3. 用 `rm -r` 刪除資料夾與它的所有檔案
現在資料夾裡有一些檔案與資料夾,請你使用 `ls` 跟 `cat` 來查看它們的內容。 現在資料夾裡有一些檔案與資料夾,請你使用 `ls` 跟 `cat` 來查看它們的內容。
準備好就輸入 `echo start` 開始吧! 按下中間的 `start` 按鈕來開始這個關卡。
requirements: requirements:
- copy - copy
@@ -14,33 +14,44 @@ requirements:
stages: stages:
- id: start - id: start
task: 輸入 `echo start` 來開始 task: 按下 `start` 按鈕開始
condition: condition:
command: command:
- ^echo - ^echo start$
output:
- start
responses: responses:
- content: - content: |
- 今天我們要學習如何刪除檔案與資料夾。 今天我們要學習如何刪除檔案與資料夾。
- '首先要來學習 `rm` 指令。`rm` 指令可以用來刪除檔案。使用方式是 `rm [檔案名稱]`。' 請先使用 `ls` 指令查看資料夾內容。
- '現在請你使用 `rm` 指令刪除 `hello.txt`。' hints:
- ➤ 使用 `ls` 來查看資料夾內容。
- id: ls
requirements:
- start
task: 使用 `ls` 查看資料夾內容
condition:
command:
- ^ls$
responses:
- content: |
首先要來學習 `rm` 指令。`rm` 指令可以用來刪除檔案。使用方式是 `rm [檔案名稱]`。
現在請你使用 `rm` 指令刪除 `hello.txt`。
hints: hints:
- ➤ 使用 `rm hello.txt` 來刪除 `hello.txt`。 - ➤ 使用 `rm hello.txt` 來刪除 `hello.txt`。
- id: rm-hello - id: rm-hello
requirements: requirements:
- start - ls
task: 使用 `rm` 刪除 `hello.txt` task: 使用 `rm` 刪除 `hello.txt`
condition: condition:
command: command:
- ^rm - ^rm\s
files: files:
- path: hello.txt - path: hello.txt
exists: false exists: false
responses: responses:
- content: - content: |
- '很好!現在請你使用 `ls` 指令來查看資料夾內容。' 很好!現在請你使用 `ls` 指令來查看資料夾內容。
- id: ls-no-hello - id: ls-no-hello
requirements: requirements:
@@ -48,15 +59,15 @@ stages:
task: 使用 `ls` 查看資料夾內容 task: 使用 `ls` 查看資料夾內容
condition: condition:
command: command:
- ^ls - ^ls$
files: files:
- path: hello.txt - path: hello.txt
exists: false exists: false
responses: responses:
- content: - content: |
- '你會發現 `hello.txt` 已經不見了。' 你會發現 `hello.txt` 已經不見了。
- '`rm` 也可以同時刪除多個檔案,只要把檔案名稱用空白隔開就可以了,也就是 `rm [檔案1] [檔案2] ...`。' `rm` 也可以同時刪除多個檔案,只要把檔案名稱用空白隔開就可以了,也就是 `rm [檔案1] [檔案2] ...`。
- 現在請你使用 `rm` 刪除 `world.txt` 與 `wow.txt`。 現在請你使用 `rm` 刪除 `world.txt` 與 `wow.txt`。
hints: hints:
- ➤ 使用 `rm world.txt wow.txt` 來刪除 `world.txt` 與 `wow.txt`。 - ➤ 使用 `rm world.txt wow.txt` 來刪除 `world.txt` 與 `wow.txt`。
- ➤ 檔案名稱之間要用空白隔開。 - ➤ 檔案名稱之間要用空白隔開。
@@ -75,8 +86,8 @@ stages:
- path: wow.txt - path: wow.txt
exists: false exists: false
responses: responses:
- content: - content: |
- '很好!我們一樣用 `ls` 指令確認一下資料夾內容。' 很好!我們一樣用 `ls` 指令確認一下資料夾內容。
hints: hints:
- ➤ 使用 `ls` 來查看資料夾內容。 - ➤ 使用 `ls` 來查看資料夾內容。
@@ -88,10 +99,10 @@ stages:
command: command:
- ^ls$ - ^ls$
responses: responses:
- content: - content: |
- '你會發現 `world.txt` 與 `wow.txt` 已經不見了。' 你會發現 `world.txt` 與 `wow.txt` 已經不見了。
- '現在我們來學習 `rmdir` 指令。`rmdir` 指令可以用來刪除資料夾。使用方式是 `rmdir [資料夾名稱]`。' 現在我們來學習 `rmdir` 指令。`rmdir` 指令可以用來刪除資料夾。使用方式是 `rmdir [資料夾名稱]`。
- '現在請你使用 `rmdir` 指令刪除 `empty` 資料夾。' 現在請你使用 `rmdir` 指令刪除 `empty` 資料夾。
hints: hints:
- ➤ 使用 `rmdir empty` 來刪除 `empty` 資料夾。 - ➤ 使用 `rmdir empty` 來刪除 `empty` 資料夾。
@@ -101,13 +112,13 @@ stages:
task: 使用 `rmdir` 刪除 `empty` 資料夾 task: 使用 `rmdir` 刪除 `empty` 資料夾
condition: condition:
command: command:
- ^rmdir - ^rmdir empty$
files: files:
- path: empty - path: empty
exists: false exists: false
responses: responses:
- content: - content: |
- '很好!現在請你使用 `ls` 指令來查看資料夾內容。' 很好!現在請你使用 `ls` 指令來查看資料夾內容。
- id: ls-no-empty - id: ls-no-empty
requirements: requirements:
@@ -117,9 +128,9 @@ stages:
command: command:
- ^ls$ - ^ls$
responses: responses:
- content: - content: |
- '你會發現 `empty` 資料夾已經不見了。' 你會發現 `empty` 資料夾已經不見了。
- '現在請你試試看 `rmdir` 指令刪除 `notes` 資料夾。' 現在請你試試看 `rmdir` 指令刪除 `notes` 資料夾。
hints: hints:
- ➤ 使用 `rmdir notes` 來刪除 `notes` 資料夾 - ➤ 使用 `rmdir notes` 來刪除 `notes` 資料夾
@@ -135,12 +146,12 @@ stages:
type: folder type: folder
exists: true exists: true
responses: responses:
- content: - content: |
- 指令執行失敗了! 指令執行失敗了!
- '你會發現 `notes` 資料夾還在。' 你會發現 `notes` 資料夾還在。
- '這是因為 `rmdir` 指令只能刪除空的資料夾。' 這是因為 `rmdir` 指令只能刪除空的資料夾。
- 我們先來將 `notes` 資料夾的檔案刪除再來試一次。 我們先來將 `notes` 資料夾的檔案刪除再來試一次。
- '現在請你使用 `rm` 指令刪除 `notes` 資料夾內的檔案。' 現在請你使用 `rm` 指令刪除 `notes` 資料夾內的檔案。
hints: hints:
- ➤ 使用 `rm notes/[檔案名稱]` 來刪除 `notes` 資料夾內的檔案。 - ➤ 使用 `rm notes/[檔案名稱]` 來刪除 `notes` 資料夾內的檔案。
- ➤ 你可能需要使用 `ls notes` 來查看 `notes` 資料夾內有哪些檔案。 - ➤ 你可能需要使用 `ls notes` 來查看 `notes` 資料夾內有哪些檔案。
@@ -163,31 +174,29 @@ stages:
command: command:
- ^rm notes/\[.*\] - ^rm notes/\[.*\]
responses: responses:
- content: - content: |
- '你好像理解錯了。' 你好像理解錯了。
- 這邊中括號包起來 `[檔案名稱]` 是參數的意思,需要你自己填入檔案的名稱。 這邊中括號包起來 `[檔案名稱]` 是參數的意思,需要你自己填入檔案的名稱。
- 實際打指令的時候,不要打中括號 `[]` 喔! 實際打指令的時候,不要打中括號 `[]` 喔!
- '例如,如果要刪除 `notes` 資料夾內的 `note.txt` 檔案,指令應該要是 `rm notes/note.txt`。' 例如,如果要刪除 `notes` 資料夾內的 `note.txt` 檔案,指令應該要是 `rm notes/note.txt`。
- 請先用 `ls notes` 確認 `notes` 資料夾內有哪些檔案,再來試試看吧! 請先用 `ls notes` 確認 `notes` 資料夾內有哪些檔案,再來試試看吧!
- condition: - condition:
command: command:
- ^rm - ^rmdir notes$
error:
- 'No such file or directory'
responses: responses:
- content: - content: |
- 這個錯誤的意思是找不到檔案 這個錯誤的意思是找不到檔案
- '請先用 `ls notes` 確認 `notes` 資料夾內有哪些檔案,再來試試看吧!' 請先用 `ls notes` 確認 `notes` 資料夾內有哪些檔案,再來試試看吧!
- condition: - condition:
command: command:
- ^ls notes$ - ^ls notes$
responses: responses:
- content: - content: |
- '`notes` 資料夾中有著 `note.txt` 檔案。' `notes` 資料夾中有著 `note.txt` 檔案。
- 那我們就使用 `rm notes/note.txt` 來刪除 `note.txt` 檔案吧! 那我們就使用 `rm notes/note.txt` 來刪除 `note.txt` 檔案吧!
responses: responses:
- content: - content: |
- '很好!現在我們再使用 `rmdir` 指令刪除 `notes` 資料夾。' 很好!現在我們再使用 `rmdir` 指令刪除 `notes` 資料夾。
hints: hints:
- ➤ 使用 `rmdir notes` 來刪除 `notes` 資料夾。 - ➤ 使用 `rmdir notes` 來刪除 `notes` 資料夾。
@@ -196,16 +205,14 @@ stages:
- rm-notes-content - rm-notes-content
task: 使用 `rmdir` 刪除 `notes` 資料夾 task: 使用 `rmdir` 刪除 `notes` 資料夾
condition: condition:
command:
- ^rmdir
files: files:
- path: notes - path: notes
exists: false exists: false
responses: responses:
- content: - content: |
- '很好!`notes` 資料夾已經被刪除了。' 很好!`notes` 資料夾已經被刪除了。
- 接下來我們來刪除 `trash` 資料夾。 接下來我們來刪除 `trash` 資料夾。
- 先使用 `ls` 指令查看一下 `trash` 資料夾內容。 先使用 `ls` 指令查看一下 `trash` 資料夾內容。
hints: hints:
- ➤ 使用 `ls trash` 來查看 `trash` 中的檔案。 - ➤ 使用 `ls trash` 來查看 `trash` 中的檔案。
@@ -215,16 +222,14 @@ stages:
task: 使用 `ls` 查看 `trash` 資料夾內容 task: 使用 `ls` 查看 `trash` 資料夾內容
condition: condition:
command: command:
- ^ls - ^ls trash$
output:
- garbage.txt
responses: responses:
- content: - content: |
- 天啊!`trash` 資料夾裡有好多檔案,甚至還有其他的資料夾! 天啊!`trash` 資料夾裡有好多檔案,甚至還有其他的資料夾!
- 如果今天資料夾中有很多檔案與資料夾,我們不想一個一個刪除,該怎麼辦呢? 如果今天資料夾中有很多檔案與資料夾,我們不想一個一個刪除,該怎麼辦呢?
- 跟 `cp` 的時候一樣,這時候我們可以加上 `-r` 的選項來刪除資料夾與它的所有檔案。 跟 `cp` 的時候一樣,這時候我們可以加上 `-r` 的選項來刪除資料夾與它的所有檔案。
- '`-r` 的意思是遞迴(recursive),也就是會把資料夾中的所有檔案都刪除。' `-r` 的意思是遞迴(recursive),也就是會把資料夾中的所有檔案都刪除。
- 我們來試試看吧! 我們來試試看吧!
hints: hints:
- ➤ 使用 `rm -r trash` 來刪除 `trash` 資料夾。 - ➤ 使用 `rm -r trash` 來刪除 `trash` 資料夾。
@@ -234,13 +239,13 @@ stages:
task: 使用 `rm -r` 刪除 `trash` 資料夾 task: 使用 `rm -r` 刪除 `trash` 資料夾
condition: condition:
command: command:
- ^rm -r - ^rm -r trash$
files: files:
- path: trash - path: trash
exists: false exists: false
responses: responses:
- content: - content: |
- '很好!現在請你使用 `ls` 指令查看資料夾內容。' 很好!現在請你使用 `ls` 指令查看資料夾內容。
hints: hints:
- ➤ 使用 `ls` 來查看資料夾內容。 - ➤ 使用 `ls` 來查看資料夾內容。
@@ -252,6 +257,6 @@ stages:
command: command:
- ^ls$ - ^ls$
responses: responses:
- content: - content: |
- '`trash` 資料夾已經不見了。' `trash` 資料夾已經不見了。
- 恭喜你!你已經學會如何刪除檔案與資料夾了! 恭喜你!你已經學會如何刪除檔案與資料夾了!