Agentic Research
首頁/學習/把指令從網頁貼進終端機:為什麼常常失敗

把指令從網頁貼進終端機:為什麼常常失敗

2026/09/308 分鐘Bryan Chan最後更新 2026/09/30
這篇屬於學習主題入門終端機疑難排解

你照著教學做,把一行指令從網頁複製下來、貼進終端機、按下 Enter,然後得到 syntax error 或 command not found。你回去重看教學,指令看起來一模一樣。於是你懷疑自己裝錯了東西,重裝一次 —— 還是一樣。

絕大多數時候,問題不在指令,在「複製貼上」這個動作本身。 網頁上的文字與終端機接受的文字不是同一種東西,中間有四種常見的轉換失敗。四種都有明確的確認方法,不需要猜。

這篇假設你已經會打開終端機。如果還不會,先讀 終端機與 CLI 保命指南。

一、智慧引號:最常見,也最難用眼睛發現

部落格與文件網站常常為了排版好看,把直引號自動換成彎引號。這兩種在螢幕上看起來幾乎一樣,但對終端機來說是完全不同的字元:

你看到的(網頁):  echo "hello"
你貼進去的:        echo “hello”
終端機的理解:      echo 後面接了一個它不認識的字

怎麼確認:把貼好的指令不要按 Enter,先看引號的形狀。直的 " 是對的;彎的 “ ” 是錯的。另一個更可靠的辦法是把它貼進純文字編輯器(不是 Word、不是網頁輸入框),純文字編輯器不會幫你美化,形狀會誠實顯示。

怎麼修:手動把彎引號打掉、重新輸入直引號。終端機裡的引號一定是你自己打的那一組最可靠。

這個坑在 macOS 特別常見,因為系統層級有「智慧引號」自動替換。如果你是在 macOS 的「備忘錄」或某些編輯器裡中轉過指令,很可能在那一步就被換掉了。

二、多行指令被截斷

很多指令在文件裡是這樣呈現的:

curl -fsSL https://example.com/install.sh \
  | bash

那個行尾的 \ 不是裝飾,它的意思是「這一行還沒結束」。複製的時候如果只選到第一行、漏掉 \,或者 \ 後面不小心多了一個空格,終端機就會把它當成兩條指令,第二條 | bash 單獨執行會報錯。

怎麼確認:貼進去之後按 Enter,看提示符有沒有變成 >。變成 > 代表終端機知道指令還沒完,在等你繼續 —— 這是正常的,不是卡住了。這時候剩下的部分貼進去、再按 Enter 就會執行。

怎麼修:整段一起選、一起複製,包含行尾的 \。或者把多行改成一行(去掉 \,中間留一個空格),只要語法允許。

|(管線)開頭的行也是同一個問題:| bash 必須接在前一行之後,不能單獨存在。

三、看不見的空白字元

從某些網頁、PDF、或聊天軟體複製出來的文字會帶著不換行空格(non-breaking space)。它看起來跟普通空格一模一樣,但終端機不認得,會把它當成指令名稱的一部分。

症狀很特徵:你明明打的是 npm install,終端機卻說找不到一個叫 npm install(中間那個不是空格)的命令。

怎麼確認:最可靠的方法是不要複製,改用手打。手打一遍就成功、複製貼上就失敗,那就是空白字元的問題。

怎麼修:手打。指令通常不長,手打十秒鐘比除錯十分鐘划算。

同一類問題還包括:從 PDF 複製時行尾被插入換行、從聊天軟體複製時整段被包在一種特殊的格式化區塊裡。PDF 與聊天視窗是最不可靠的兩個指令來源,能從官方文件網站複製就從那裡複製。

四、貼進了錯誤的 shell 或錯誤的地方

終端機裡跑的程式叫 shell,常見的有 bash、zsh、PowerShell。它們的語法不一樣。同一件事在 macOS/Linux 的 bash 與 Windows 的 PowerShell 寫法不同:

# bash / zsh(macOS、Linux)
export API_KEY="abc123"

# PowerShell(Windows)
$env:API_KEY = "abc123"

把 bash 的寫法貼進 PowerShell 會報錯,反之亦然。這不是哪一邊錯了,是兩種語言。

怎麼確認你在哪一個:

echo $0

在 macOS/Linux 上通常會印出 -zsh 或 -bash。Windows 上如果你開的是「PowerShell」視窗,標題列會寫;如果是「命令提示字元」(cmd),那語法又是第三種。

另一種常見錯誤:你以為自己在終端機裡,其實游標停在某個程式的互動介面裡。例如你已經啟動了某個 AI 工具的對話介面,這時候貼進去的指令會被當成對 AI 說的話,而不是給系統執行的指令。

怎麼確認:看提示符。終端機的提示符通常長得像 user@machine ~ % 或 C:\Users\you>;程式自己的介面通常長得不一樣(可能有 >、>>>、或一個輸入框)。如果不確定,按 Ctrl+C 或輸入 exit 退出當前程式,回到終端機再貼。

一個通用的除錯順序

遇到「照著教學做卻失敗」,按這個順序檢查,不要跳:

  1. 讀最後一行錯誤訊息,不是第一行。最後一行通常才是真正的原因。見 終端機與 CLI 保命指南 的錯誤訊息章節。
  2. 確認你貼進去的文字與教學完全一致 —— 特別是引號形狀與行尾的 \。
  3. 手打一遍。成功了就是複製貼上的問題(空白字元或智慧引號)。
  4. 確認你在對的 shell、對的地方(終端機而不是某個程式的輸入框)。
  5. 以上都不是,才開始懷疑安裝本身。

「重裝一次」幾乎從來不是解法。 如果問題是智慧引號,重裝一百次也還是智慧引號。重裝只是讓你多花十分鐘,並且錯過真正的原因。

為什麼這件事值得單獨講

因為它造成的失敗看起來像你的能力問題,實際上是文字編碼問題。初學者遇到 syntax error 的直覺是「我不會用」,於是放棄或重裝;但真正的原因可能只是一個彎引號。

這類失敗還有一個討厭的性質:它不會告訴你哪裡錯。錯誤訊息會說 syntax error near unexpected token,但不會說「你的引號是彎的」。所以知道這四種可能性存在,比讀懂錯誤訊息更有用。

下一步