13.6. エラー対応
タイプミスなどの際の典型的な対応を紹介します。
コマンド入力やプログラミングでは、少しでも規則と異なるとエラーになります。 背景には、文法違反を許容したり、空気を読もうとすると、ユーザの意図しない動作を行う危険が高まるというトレードオフがあります。 後者のリスクを最小にするために、理屈っぽい頑固者のように振る舞う設計が採用されていると理解しましょう (つまり意地悪ではありません)。
「よーし分かったー任せとけ!」と請け負ってくれる調子の良いAIも楽しそうですが、コマンド操作では相性が悪そうです。
command not found #
手が滑って cal
とタイプするつもりが call
とタイプしてしまったらどうなるでしょう?
-bash: call: command not found
エラーの英語を読めば想像できますが、 call
というコマンドはないと伝えています。
次の例は少し分かりにくいですが、日本語入力モードが悪さをしています。
-bash: cal -y: command not found
実は cal -y
と打つ途中でになってしまい、cal
と-y
を区切る空白文字がいわゆる全角スペースになってしまいました。そのためシェルは区切りを認識できず、 cal -y
という文字列全体のコマンド名を探して、結果見つからないというエラーになりました。
どちらも、意図する cal
は実行されませんでしたが、何か悪いことがおきたというわけでもないので、
対応は(プロンプトが表示されていることを確認して)もう一度打ち直すだけで良いです。
上矢印を押して直前のコマンドを表示して、修正すると早いです。
エラー文の頭のbash
はシェルの名前です。シェルにもいくつかの種類があり、あたらしいmacOSではzsh
と表示されるかもしれません。
ここでは詳細を割愛しますが、コマンドはあらかじめ用意されているもののみが使えます。 本質としては環境が変われば使えるコマンドやその意味も変わりうるのですが、互換性があるほうが便利であるため、 macOS では、過去のUNIX, Linux などとほぼ同じコマンド群 (正確には FreeBSD のもの) を使えます。
Windows にも、 近年 WSL という Linux 互換で使えるシステムがMicrosoft社により導入されています。
No such file or directory #
コマンドではなく、ファイル名やパスをタイプミスするとよくおこるエラーです。
ls: Download: No such file or directory
上の例では Downloads
とタイプするつもりで Download
と単数にしてしまいました
エラーメッセージは コロン:
で区切られていて以下のように読めます。
- 初めの
ls
がエラーを出したコマンド Download
が見つからなかった対象 (多くはここにミスがある)No such file or directory
がエラーの種類 (そんなの見つからない)
この場合も対応は (プロンプトが表示されていることを確認して) もう一度打ち直すだけで良いです。
パスの打ち間違いは多いので、 による補完や、ドラッグアンドドロップを使える場合は使うことがお勧めです。
実行中止 #
ターミナルを立ち上げた状態で、表示されている文字列をプロンプトと呼びました。 コマンドは、プロンプトがでているときだけ入力可能です。
コマンドを実行したときに、それが終了しないと、いつまでもプロンプトは表示されません。 HWBで紹介する演習ではそのようケースは避けていますが、途中で終了させたい場合は c (コントロールキーを押し込んだまま 文字 c をタイプ) を使います。
意図的に停止する例として yes
コマンドを使ってみます。このコマンドは y
と書かれた行を無限に出力します。
(あまりに早くて見えないでしょう)
y
y
y
y
y
y
^C
c で止めると、プロンプトが復帰します。
はじめからやり直す #
他にも対応可能な異常はありますが、この段階では、単にやり直す方が無難かもしれません:
- ターミナルウィンドウを閉じて、新しく開く
- コンピュータからログアウトして、ログインし直す
授業なら教員、TA (ティーチングアシスタント) などにも相談しましょう。