コース目次 / 第4章

自分のものにする

シェバンと chmod +x で自分の実行ファイルに昇格させ、コマンド帳を仕上げます。

第4章 / 全5章目安 約40分この章のゴール: ./backup.sh の1コマンドで動く、自分の道具ができる
お使いのパソコン
手順が切り替わります

最後の章です。bash backup.sh を ./backup.sh に昇格させます。たった2手で、あなたの書いたテキストがコンピュータの「コマンド」になります。

まず作業フォルダに戻ります。

Mac をお使いの方

VS Codeのターミナルターミナル
cd ~/Desktop/shell-kit

行頭の $ は「ここからコマンド」という目印です。$ は打たないでください。

Windows をお使いの方

VS Codeのターミナルターミナル
cd ~/shell-kit

行頭の $ は「ここからコマンド」という目印です。$ は打たないでください。

WSL のホームには「デスクトップ」がありません。Windows のデスクトップとは別世界なので、このコースの作業フォルダはホームの直下に置きます。エクスプローラーで見る方法は第4章の持ち帰りカードに書いてあります。

1. 1行目に、誰に読ませるかを書く

backup.sh のいちばん上に1行足します。

backup.sh+2 / -1
+#!/bin/bash # はるとのバックアップ係-# 使い方: bash backup.sh+# 使い方: ./backup.sh  # 日付を先に1回だけ決める。実行の途中で日をまたいでもズレないようにするため。

行頭の + - は変更の目印です。コピーすると、記号と削除された行を除いたこの章を終えた時点の内容が入ります。

この #! で始まる行をシェバンと呼びます。「このファイルは /bin/bash に読ませてください」という、OSへの宛名書きです。

# で始まるのでコメントに見えますが、1行目のこれだけは特別で、OSが読みます。2行目以降の # はふつうのコメントです。
なぜ /bin/zsh ではなく /bin/bash なのか。Macにもbashは入っているので、これならMacでもWSLでも同じように動くからです。中身を書いた人が「どのシェルで読んでほしいか」を決められる、というのがシェバンの値打ちです。

2. 実行してよい、という印を付ける

VS Codeのターミナルターミナル
chmod +x backup.shls -l backup.sh

行頭の $ は「ここからコマンド」という目印です。$ は打たないでください。

こう出る(右側は環境によって違います)
-rwxr-xr-x  1 haruto  staff  479  8  1 09:41 backup.sh

左端の並びを、試食章の ls -l と見比べてください。x が3つ増えています。

記号 意味
r 読んでよい(read)
w 書き換えてよい(write)
x 実行してよい(execute)

chmod +x は change mode、実行の印を足すという意味です。この1回だけで済みます。

3. 自分のコマンドとして呼ぶ

VS Codeのターミナルターミナル
./backup.sh

行頭の $ は「ここからコマンド」という目印です。$ は打たないでください。

こう出る
renshuu を backups/2026-08-01 に控えました
renshuu

bash を付けずに動きました。あなたの書いたファイルが、いま ls や cp と同じ「コマンド」になっています。

頭の ./ は何か。「いまいるフォルダの、これ」という意味です。シェルはコマンドを決められた場所からしか探さないので、手元のファイルを呼ぶときは場所を明示します。
逆に言えば、./ を省いて呼べるようにする方法もあります(PATH という仕組み)。そこはこの講座では扱いませんが、持ち帰りカードの「この先」に入口を書いておきます。

4. あなたの番

3つとも、値を書き換えるだけです。

(1) 自分の作品を守る

backup.sh の TARGET を、本当に守りたいフォルダに変えてください。

backup.sh(この行だけ差し替える)
TARGET="$HOME/Desktop/mysite"

コース1で作った mysite でも、写真フォルダでも構いません。$HOME は自分の家を指す変数なので、これを使うとどこから実行しても同じ場所を見ます。

最初の1回は、必ず中身が小さいフォルダで試してください。このスクリプトは cp -R でまるごと写すので、大きなフォルダを指定すると時間もディスクも食います。
そしてこのスクリプトは何も消しません。写すだけです。そう作ってあります。安心して試してください。

Windows をお使いの方

Windows側のフォルダを対象にすることもできます。 TARGET=“/mnt/c/Users/あなたの名前/Desktop/mysite” のように書きます。ただしWindows側とLinux側をまたぐ読み書きは遅いので、大きなフォルダにはおすすめしません。

(2) 控える場所を変える

DEST の行を変えれば、置き場所を変えられます。日付のほかに時刻まで入れたいなら date +%Y-%m-%d_%H%M にしてみてください。

(3) コマンド帳を自分の言葉にする

cheatsheet.md の説明文を、自分が思い出せる言い方に書き換えてください。ここは写すより、書き換えたほうが値打ちが上がります。

まず1行、覚えたてのものを足します。

VS Codeのターミナルターミナル
echo "- chmod +x : 自分で実行できるファイルにする" >> cheatsheet.md

行頭の $ は「ここからコマンド」という目印です。$ は打たないでください。

残りはエディタで書きます。日本語をたくさん打つのは、echo よりエディタのほうがずっと楽です。

Mac をお使いの方

VS Codeのターミナルターミナル
code cheatsheet.md

行頭の $ は「ここからコマンド」という目印です。$ は打たないでください。

Windows をお使いの方

VS Codeのターミナルターミナル
code cheatsheet.md

行頭の $ は「ここからコマンド」という目印です。$ は打たないでください。

WSLの中から打つと、Windows側のVS Codeが開きます。初回だけ、WSL用の部品が自動で入るので少し待ちます。これがLinux側とWindows側をつなぐ橋です。

持ち帰りカード

コマンド帳の後半に、再開のしかたと「触らないと決めたもの」を書いておきます。3か月後のあなたが読む用です。

cheatsheet.md
# はるとのコマンド帳

- pwd : いまどこにいるか
- ls : ここに何があるか
- cd : 移動する
- mkdir : フォルダを作る
- touch : 空のファイルを作る
- cp : 写す
- mv : 動かす、名前を変える
- rm : 消す(取り消せない)
- cat : ファイルの中身を出す
- wc -l : 行数を数える
- grep : 探す
- | : 左の結果を右に渡す
- > : 結果をファイルに入れる(上書き)
- >> : 結果をファイルの末尾に足す
- chmod +x : 自分で実行できるファイルにする

## また使うとき(3行)

1. ターミナルを開く
2. `cd` でこのフォルダに入る(Macは `cd ~/Desktop/shell-kit`、WSLは `cd ~/shell-kit`)
3. `./backup.sh` と打つ

`backups/` の中に、日付の名前のフォルダが増えていきます。

## ZIPから戻したとき

配布ZIPには「実行してよい」という印が入りません。解凍したら、1回だけこれを打ってください。

chmod +x backup.sh


## 触らないと決めたもの

| やらないこと | 理由 |
|---|---|
| `rm -rf` | フォルダごと確認なしで消える。この講座では一度も使わなかった |
| `sudo rm` | 消してはいけない場所まで消せてしまう |
| `>` を既にあるファイルに向ける | 中身が黙って消える。足すときは `>>` |
| ホームフォルダの直下で `rm *` | 練習は必ず `renshuu` の中だけで |

## Windows(WSL)を使っている人へ

作ったファイルは Windows の中ではなく、**Linux 側**に置いてあります。エクスプローラーで
見たいときは、このフォルダで次を打つと開きます。

explorer.exe .


アドレス欄には `\\wsl$\Ubuntu\home\ユーザー名\shell-kit` のような場所が出ます。
VS Code で開きたいときは `code .` です。

## この先に進むなら

- 自分の設定を育てる(dotfiles): エイリアスやプロンプトを自分好みにする入口
- シェル芸: `sort` `uniq` `cut` `sed` `awk` を足すと、できることが一気に増える
- 作ったものに履歴を付けて公開したくなったら、ミニ体験コースの Git / GitHub へ

配布ZIPから戻したときは chmod +x backup.sh をもう一度。ZIPには「実行してよい」という印を入れられないためです。上のカードにも書いてあります。

試食レポート

おつかれさまでした。手元にはワンコマンドで動くバックアップ係と、自分で書いたコマンド帳が残りました。

シェルは「小さな道具をつなげて、自分専用の道具を作る」ための場所です。今日覚えたのは15個ほどのコマンドですが、つなげ方を覚えたので、組み合わせは数え切れません。

この道具、合いそうでしたか?
黒い画面、確認してくれない怖さ、そのかわりに手に入る速さと自動化。合いそうなら、次は自分の設定を育てる(dotfiles)か、sort uniq cut を足したシェル芸が入口です。
作ったものに履歴を付けて公開したくなったら、Git / GitHub の試食がそのまま続きになります。ターミナルはもう怖くないはずです。
ぴんと来なかったなら、それも収穫です。別の言語を試食してみてください。

ハマったら

「Permission denied」と出る

chmod +x backup.sh を打ち忘れています。もう一度打ってから ./backup.sh を試してください。ls -l backup.sh の左端に x があるかで確かめられます。

「bad interpreter: /bin/bash^M」のような文字化けが出る

Windowsのメモ帳などで保存したときに起きます。改行の形式がWindows式になっているためです。VS Code なら画面右下の CRLF を押して LF に変え、保存し直してください。

command not found: backup.sh と出る

頭の ./ が抜けています。./backup.sh と打ってください。

ZIPで戻したい

このページの下のZIPは、この章を終えた状態のフォルダです。解凍して、その中で作業を続けられます。自分で書き換えた部分は消えてしまうので、先に自分のファイルを別の場所へ待避してから使ってください。

こうなっていればOK

うまくいかないときは、この章の完成ファイル一式(ZIP)をダウンロードして続きから進めても大丈夫です。

この章で卒業です。

この章はまだ完了していません。