「実行」と「表示」は別物だった|catコマンドとbashの違いを実体験で理解した
この記事でわかること
- catは「見る」、bashは「実行する」
- シェルスクリプトとは何か
- まとめ
- 関連記事
ターミナルでこんなミスをした。
cat bash ~/obsidian-to-wp/wp_maintenance_flow.sh
bash という名前のファイルを開こうとして「そんなファイルない」と怒られ、その後ろのファイルの中身だけが表示された。やりたかったのはスクリプトの中身を「見る」ことだったので、結果的には見れたのだが、コマンドの意味は全然違った。
catは「見る」、bashは「実行する」
ターミナルでファイルに対してできることは大きく2つある。
中身を見る
cat ~/obsidian-to-wp/wp_maintenance_flow.sh
実行する
bash ~/obsidian-to-wp/wp_maintenance_flow.sh
cat はファイルの中身をそのまま画面に出力するだけ。bash はシェルスクリプトとして実行する。同じファイルに対する操作でも、コマンドが違えば動作は全く別物。
シェルスクリプトとは何か
シェルスクリプトは、コマンドをまとめて書いたテキストファイルのこと。拡張子は .sh。
#!/bin/bash
# 1行目のこれが「bashで実行してください」という宣言
python3 wp_maintenance.py
python3 wp_to_obsidian.py
1行目の #!/bin/bash(シバンと呼ぶ)があることで、これがシェルスクリプトだとわかる。あとはコマンドが上から順に並んでいるだけ。
毎回手で打つコマンドの組み合わせをファイルに保存しておいて、次から1コマンドで呼び出せるようにしたもの、と思えばいい。
まとめ
| やりたいこと | コマンド |
|---|---|
| 中身を見る | cat ファイル名 |
| 実行する | bash ファイル名 |
シンプルだけど、最初は混乱しやすいポイント。実際にやってみて間違えてみると、一番よく理解できる。
シェルスクリプトやターミナルの仕組みを理解していると、他の端末に今までのフローを引っ越しするときも指示がしやすい。「このファイルをこのパスに置いて、この環境変数を設定して」と的確に動かせる。
逆に、それが分かっていないと資産が消えてしまうかもしれない。ローカルにフローが残るとかそういう仕組みを使わずに、ただAIを「使っているだけ」の人は、実はかなり危うい状態にあると思う。何かトラブルがあったとき、何がどこにあるのかすら分からないし、引っ越しも再現もできない。
AIを使いこなしている人とそうでない人の差は、AIの使い方そのものより、裏側の仕組みをどれだけ理解しているかにあるのかもしれない。
