ビギナー向けのコマンドライン入門

#はじめに

コマンドラインって、難しそう。

そんなあなたに、初めてコマンドを触る人のためにわかりやすく、Macを使って環境準備から実行・結果の確認方法まで、実際のTerminalを使ってコマンド操作の練習ができるよう、方法を紹介します。

本記事では、Macを利用する前提でご紹介します。
初めて触る人が陥りやすい落とし穴についてもケアして記述したつもりですが、わからない点などがあれば、コメントいただけますと幸いです。

本記事が、コマンドラインに触れるはじめの一歩となれば幸いです。

#実行環境
今回は、主にMacでコマンドを実行する場合について、説明します。
Macでは、OS標準で純正Terminalが、以下のディレクトリにインストールされています。


```
/System/Applications/Utilities/Terminal.app
```

Terminal.appという名前なので、OSの検索窓でTerminalと入力しても検索して実行することができます。

また、純正Terminalよりも機能が豊富な、[iTerm2](https://iterm2.com/)というソフトもあります。
普通にインストールした場合、以下にインストールされます。

```
/Applications/iTerm.app
```

#実行権限
Terminalソフトを立ち上げると、以下のような文字が表示されます。

```
username@PCname ~ % 
```

コマンドを実行する際、実行したユーザー名でファイルは作成されます。このため、どのユーザーで実行するかは、とても重要です。

システムの管理ファイルをいじるときは、root になってファイルを作成することがあります。その場合は、「sudo su」というコマンドで、root (つまりOSで最高の権限を持った管理者）に変更します。実行すると、パスワードを求められます。パスワードを正しく入力して、Enterキーを押下すると、[sh-3.2#] と出力されてきます。これで、ルートユーザとしてログインできたことになります。この後に、色々なコマンドを入力することになります。

```
username@PCname ~ % sudo  su
Password:
sh-3.2#
```

なお、rootユーザーのパスワードを間違えると　[Sorry, try again.]のように、NGのメッセージが出力されます。
この場合は、再度正しいパスワードを試行して実行（リトライ）してください。

```
username@PCname ~ % sudo  su
Password:
Sorry, try again.
```

もし、ここで正しいパスワードを入力してもNGメッセージが続くようであれば、キーボードがUS入力か日本語入力か、CapsLockキーが有効かどうか、半角かどうか（日本語入力のままでないか）などを疑ってみましょう。ターミナル上では入力したキーの文字が見えないので、一度同じパソコンの別の文字入力フォームにカーソルを移動して、パスワードを入力してみると、その原因がわかると思います。

rootユーザから抜けて一般ユーザとしてTerminalを使う場合 は  sh-3.2#  の後に exit と入力します。

```
sh-3.2# exit
```
すると、sh-3.2#の表示は消えて、元の自分のユーザーで実行できるように戻ります。

```
sh-3.2# exit
exit
username@PCname ~ %
```
#注意事項
root ユーザーについては、コンピュータの中では最高の権限を持つユーザーですから、なんでもできてしまいます。
本記事では説明の便宜上、root で実行する場合で以下解説を進めていきますが、初心者の場合は、みだりにrootユーザーを利用しないことを強くお勧めします。

#推奨事項
コマンドを実行する前に、自分がいるディレクトリを把握しましょう。
自分がいるディレクトリを確認するためには、「pwd」コマンドを実行します。

```
sh-3.2# pwd
```
すると、現在いるディレクトリを表示することができます。

```
sh-3.2# pwd
/Users/username
sh-3.2#

```


実行する際は、コマンドライン（CLI)でみるだけでなく、グラフィカル(GUI)でみてみることをお勧めします。
Finderを選択し、「移動」メニューから「フォルダへ移動」を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/68314/30d6e470-d393-54bb-a293-4b1e5bc99864.png)

先ほど表示したディレクトリをコピーして、「フォルダの場所を入力：」にパスを入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/68314/036bc859-44aa-9ed4-59ca-98214bdc571a.png)

そうすると、Terminalでいる場所と同じディレクトリにGUI上でも移動すし、グラフィカルに状態を確認することができるようになります。

また、Finderにおいて、「パスバーを表示」という項目があるので、これをマウスで押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/68314/072289c0-fa65-78c8-5aa9-8bedcfd1a8f8.png)


そうすると、以下のように,Finderの下にパスが出てきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/68314/10ef97ec-85b8-dc3c-1074-20e62e7e6333.png)

例えば、別のディレクトリに作りたい場合、ここで作りたい場所のパスを確認しましょう。
Finderのパスバーをクリックして作りたい場所のパスをコピーし、「cd」コマンドを使って移動します。例えば、共有フォルダの中にフォルダとファイルを作りたいのであれば、パスバーの「共有」というフォルダを右クリックして、パスをコピーします。そして、cdコマンドと合わせて、以下のコマンドを実行します。

```
cd /Users/Shared
```
これで、実行ディレクトリを移動することができました。
パスについては、コマンドラインだけだとどうしても頭で理解しづらいと思うので、グラフィカルなイメージとともに、だんだん自分の中にイメージを作っていきましょう。

#ファイルとフォルダについて
さて、いよいよファイルとフォルダの作成に入っていきます。

日本語で「ファイルする」というと「書類を綴じる」といった意味で使うので、file = 入れ物のように思う人もいると思います。

+ ファイルのイメージ
    + キングジムのドッチファイルのような立派な綴じ道具


+ フォルダのイメージ
    + 「紙ばさみ」という意味で、書類を『はさんで』まとめるためのもの簡易な道具

ですが、コンピュータの世界では、文房具で例えれば、書類と入れ物の関係であり、紙とクリアフォルダーのような関係です。

+ ファイルのイメージ　＝書類
    + 一定の形式・用途を持った書類
    + 中身を開いて印刷してみると、１枚だけだったり、複数ページ分あったりしますが、基本的にはひとつのタイトルでまとめた一定の形式をもった書類のことをファイルと言う。
    + たとえばwordで数ページの報告書を作成しても、ひとつのタイトルでひとつのファイルとして保存されます。

+ フォルダのイメージ　＝入れ物
    + 各種ファイルをまとめて整理・保存するための入れ物

なので、初めからファイルを作っても良いのですが、まずは入れ物となるフォルダを先に作り、その後にファイルを作ることにします。

##フォルダ作成(ディレクトリの作成）

ここで、ディレクトリという言葉を使わせてもらいましたが、ディレクトリ=フォルダとして捉えてしまっても、大きな支障はないので、ディレクトリと呼びますね。実際、見た目も機能も全く同じものをさしています。しかし、概念が違います。詳細は、[wikipedia](https://ja.wikipedia.org/wiki/%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA)などをみてみましょう。


現在いるディレクトリに、20210101というフォルダを作ってみます。

ディレクトリの作成には、「mkdir」というコマンドを使用します。

```
mkdir 20210101
```

##ファイル作成
先ほど作った20210101 というフォルダの中に、helloworld.txt というファイルを作ってみます。
ファイルの作成には、「touch」というコマンドを使用します。

```
touch ./20210101/helloworld.txt
```

これで、フォルダの中にファイルを作ることができました。

#確認
先ほど作ったディレクトリとファイルについて、実際にできたかどうか、確認してみたいと思います。

ファイルを表示するためには、「ls」というコマンドを使用します。

```
sh-3.2# ls
```
そうすると、作成したディレクトリ名が出てきます。

```
sh-3.2# ls
20210101
```

実行権限まで表示したければ、「ls -ls」というコマンドを実行します。

```
sh-3.2# ls -ls
```

そうすると、ディレクトリは、以下のように表示されます。

```
sh-3.2# ls -ls
0 drwxr-xr-x  2 root               staff  64  5  8 14:39 20210101
```

また、20210101フォルダに作ったファイルを表示したい場合は、

```
sh-3.2# ls -ls ./20210101
```

そうすると、ファイルは

```
sh-3.2# ls -ls ./20210101
0 -rw-r--r--  1 root  staff  0  5  8 15:35 helloworld.txt
```

のように表示されます。


これらの「-rw-r--r--」や「drwxr-xr-x」の先頭の10文字は、権限をついては、意味を持っています。
最初の１文字目はファイル種別を表しています。

```
-	ファイル
d	ディレクトリ
l	シンボリックリンク
```
※シンボリックリンクというのは、簡単に言うといわゆるショートカットのようなものです。


また、２文字目以降も、次の意味があります。
2文字目から4文字目・・・・・・　ファイルの所有者に対する権限
5文字目から7文字目・・・・・・　ファイルの所有グループに対する権限
8文字目から10文字目・・・・・　その他に対する権限

#応用
さて、ここまでフォルダとファイルの作成をするための、基本的な操作をご紹介しました。
ここまでやってきて、なんだ、Finderでぽちぽちクリックしても作れるじゃん、と思ったかも知れません。
ですが、このコマンドラインの操作は、大量にフォルダやファイルを再現性を持って作ろうと思ったとき、威力を発揮します。
例えば、１月から１２月までのフォルダを作ろうと思ったとき、ベタがきでもこんな感じでテキストを作って実行すると、一瞬で作成できてしまいます。


```
mkdir /Users/Shared/Calendar
mkdir /Users/Shared/Calendar/202101
mkdir /Users/Shared/Calendar/202102
mkdir /Users/Shared/Calendar/202103
mkdir /Users/Shared/Calendar/202104
mkdir /Users/Shared/Calendar/202105
mkdir /Users/Shared/Calendar/202106
mkdir /Users/Shared/Calendar/202107
mkdir /Users/Shared/Calendar/202108
mkdir /Users/Shared/Calendar/202109
mkdir /Users/Shared/Calendar/202110
mkdir /Users/Shared/Calendar/202111
mkdir /Users/Shared/Calendar/202112
```
これをTerminalに貼り付けて実行すると、ほら、一瞬でフォルダができました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/68314/31b5ea9b-4314-2ba9-5193-ccf2ee7a61f6.png)


もちろん、もっと賢いやり方はあるのですが、それをやるためにはまだ覚える必要がある知識があります。

CLIによる操作の便利さ、体感していただけたでしょうか？