【初心者向け】最初に知っておくべきコマンド

# 始めに
こんにちは。エンジニア歴3年目まだまだ勉強中の打越です。
今回は、ターミナルを初めて触る方に向けて、最初に知っておくべきコマンドについてまとめました。

# mkdirコマンド
ディレクトリを作成します。
```
$ mkdir [オプション] ディレクトリ名 
```

例：testという名前のディレクトリを作成したい場合。
```
$ mkdir test
```

# cdコマンド
カレントディレクトリ（今どのディレクトリにいるか）を移動します。
## ホームディレクトリに移動
ホームディレクトリ（ログインした直後に移動させられるディレクトリのこと。Linuxのユーザーごとに割り当てられる個人のディレクトリ）に移動します。
```
$ cd
```
または
```
$ cd ~
```
例：uchikoshikというユーザーがホームディレクトリに移動する場合。
```
$ cd
$ pwd
/Users/uchikoshik
```
## 1つ上の階層のディレクトリに移動
```
$ cd ..
```
..が1つ上の階層のディレクトリという意味です。

## 絶対パスを指定して移動する場合
```
$ cd 絶対パス
```
例：uchikoshikというユーザーが/Users/uchikoshik/Desktop/testへ移動する場合。
```
$ cd /Users/uchikoshik/Desktop/test
```
## 相対パスを指定して移動する場合
```
$ cd 相対パス
```
例1：uchikoshikというユーザーが/Users/uchikoshikから/Users/uchikoshik/Desktop/testへ移動する場合。
```
$ pwd
/Users/uchikoshik
$ cd ./Desktop/test
$ pwd
/Users/uchikoshik/Desktop/test
```
.がカレントディレクトリという意味です。相対パスではカレントディレクトリから見てパスを表現するので、./Desktop/test（カレントディレクトリからDesktopの下のtest）という書き方になります。

例2：uchikoshikというユーザーが/Users/uchikoshik/Desktopから/Users/uchikoshik/Desktop/testへ移動する場合。
```
$ pwd
/Users/uchikoshik/Desktop
$ cd test
$ pwd
/Users/uchikoshik/Desktop/test
```
パスをよく覚えてない時はlsコマンドを使いながらディレクトリごとに1つずつ入っていくことが多いです。
# lsコマンド
そのディレクトリ内にどんなファイルがあるかわかります。
```
$ ls [オプション] [ファイル名またはディレクトリ名]
```
一応こちらが公式ですが、よく使うのはこちらです。
```
$ ls -la
```
-laというのは、-lオプションと-aオプションを合わせたものです。
-lオプションは、ファイルの属性情報もあわせて表示されます。
-aオプションで隠しファイル（ファイル名が.で始まる）を見ることができます。

例：/Users/uchikoshikにあるファイルを見る場合。

```
$ ls -la
total 192
drwxr-xr-x+  38 uchikoshik  staff   1216  7  1 07:45 .
drwxr-xr-x    5 root        admin    160  5 17 13:59 ..
-r--------    1 uchikoshik  staff      7  5 17 09:37 .CFUserTextEncoding
-rw-r--r--@   1 uchikoshik  staff  10244  6 28 15:56 .DS_Store
drwx------   38 uchikoshik  staff   1216  6 10 14:57 .Trash
drwxr-xr-x@   3 uchikoshik  staff     96  5 27 20:41 .composer
drwx------@   3 uchikoshik  staff     96  5 23 08:55 .config
drwx------    3 uchikoshik  staff     96  5 17 11:01 .cups
drwxr-xr-x@  12 uchikoshik  staff    384  5 27 14:35 .docker
-rw-r--r--@   1 uchikoshik  staff    309  6 14 10:02 .gitconfig
-rw-r--r--@   1 uchikoshik  staff     82  6 14 10:02 .gitflow_export
-rw-r--r--@   1 uchikoshik  staff     13  2 14 23:04 .gitignore_global
-rw-r--r--@   1 uchikoshik  staff     27  2 14 23:04 .hgignore_global
-rw-------@   1 uchikoshik  staff     20  6 27 11:08 .lesshst
drwxr-xr-x@   3 uchikoshik  staff     96  5 17 17:21 .local
-rw-------@   1 uchikoshik  staff   1276  5 27 19:26 .mysql_history
drwxr-xr-x@   6 uchikoshik  staff    192  5 21 11:51 .rest-client
drwx------@   7 uchikoshik  staff    224  6 11 10:51 .ssh
drwxr-xr-x@  12 uchikoshik  staff    384  6 28 10:56 .vagrant.d
-rw-------@   1 uchikoshik  staff  10546  6 11 10:51 .viminfo
drwxr-xr-x@   5 uchikoshik  staff    160  5 17 17:07 .vscode
-rw-------@   1 uchikoshik  staff  32942  6 30 22:59 .zsh_history
drwx------   11 uchikoshik  staff    352  6 18 11:13 .zsh_sessions
-rw-r--r--@   1 uchikoshik  staff    116  6 10 18:35 .zshrc
drwx------+ 136 uchikoshik  staff   4352  7  1 07:58 Desktop
drwx------+   3 uchikoshik  staff     96  5 17 09:37 Documents
drwx------@  87 uchikoshik  staff   2784  6 30 21:56 Downloads
drwx------@  90 uchikoshik  staff   2880  6  6 16:20 Library
drwx------+   4 uchikoshik  staff    128  5 20 08:59 Movies
drwx------+   4 uchikoshik  staff    128  5 20 09:21 Music
drwx------+   4 uchikoshik  staff    128  5 17 11:44 Pictures
drwxr-xr-x@   3 uchikoshik  staff     96  6  7 16:41 Postman
drwxr-xr-x+   4 uchikoshik  staff    128  5 17 09:37 Public
```

# pwdコマンド
カレントディレクトリ（今どのディレクトリにいるか）のパスがわかります。
```
$ pwd
```
よく、自分今どこにいるの！？と思うことがあるので、確かめるのに便利です。

例：今どのディレクトリにいるか確かめる。
```
$ pwd
/Users/uchikoshik
```

# rmコマンド
ファイルを削除します。
```
$ rm [オプション] ファイル名
```
例：test_file.mdというファイルを削除する場合。
```
$ rm test_file.md
```
ディレクトリ削除は-rオプションを添えましょう。
```
$ rm -r ディレクトリ名
```
例：testディレクトリ削除する
```
$ rm -r test
```
これで削除するつもりではなかったファイルを削除してしまったことがあります。もしも怖い場合は-iオプションを添えましょう。yesを入力してから削除するようにします。
```
$ rm -i ファイル名
```
例：testディレクトリを削除する前に確認を入れる場合。
```
$ rm -ri test
examine files in directory test? yes
remove test? yes
```
# mvコマンド
ファイルを移動します。
```
$ mv [移動元ファイル名] [移動先ディレクトリ名]
```
例：test_file.mdをtestディレクトリに移動する場合。
```
$ mv test_file.md test
```
ファイルの名前変更をします。
```
$ mv [変更前ファイル名] [変更後ファイル名]
```
例：test_file.mdをtest_file1.mdに名前変更する場合。
```
$ mv test_file.md test_file1.md
```
mvコマンド万能ですね。好きなコマンドです。

# viコマンド
viエディタを起動します。viエディタとはLinuxの代表的なテキストエディタです。viエディタはコマンドモードと挿入モードがあリマス（最初は困惑しました。使いながら慣れていきましょう）。最初は、最低限以下のコマンドを覚えたらいいでしょう。

## viエディタの起動
viエディタの起動をします。指定したファイル名が存在しない場合は、そのファイルを新規作成することになります。
```
$ vi [ファイル名]
```
## コマンドモードから挿入モードの切り替え
```
iキー
```
または
```
aキー
```
を押します。

## 挿入モードからコマンドモードの切り替え
```
escキー
```
を押します。

## viエディタを保存＋終了する
```
:wq
```
:wが保存、:qが終了するという意味です。
片方ずつでも入力できますが、:wで保存をお忘れなく。
```
:w
```
```
:q
```
例：test_file.mdを作成し、編集し保存する場合。
以下コマンドを入力します。
```
$ vi test_file.md
```

iキーを押して、挿入モードに切り替え、入力（試しにtest_fileと入力してみました）。
escキーを押して、コマンドモードに切り替えます。
:wqと入力し、Enterを押します。

ちなみにこのように表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3810312/48119428-9a99-2d5a-60c2-fa98efb5585a.png)

どのように入力されたか確認したい場合はcatコマンドを使ってみましょう。
```
$ cat test_file.md
test_file
```
test_fileと入力されています。

# まとめ
今回は、ファイル操作のコマンドを取り上げましたが、コマンドはまだまだ奥深いです。私もまだまだ勉強中なので、他のコマンドもこれから紹介していければと思います。ただ、コマンドを勉強し始めて、わかったことがあります。それは、コマンドを学ぶことはITの知識を学ぶことだということです。コマンドを学んでいくうちに、自然にITの知識に紐づいていきます。ITの知識を幅広く勉強しようとするとなかなか骨が折れそうになりますが、焦らず一緒に勉強していきましょう！

# 参考にした書籍
コマンドを学び始めてから、こちらの本を何周も読み返しております。初心者向きで、個人的にはわかりやすかったです。参考までに。
* [1週間でLPICの基礎が学べる本](https://www.amazon.co.jp/1%E9%80%B1%E9%96%93%E3%81%A7LPIC%E3%81%AE%E5%9F%BA%E7%A4%8E%E3%81%8C%E5%AD%A6%E3%81%B9%E3%82%8B%E6%9C%AC-%E7%AC%AC3%E7%89%88-1%E9%80%B1%E9%96%93%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-%E4%B8%AD%E5%B3%B6-%E8%83%BD%E5%92%8C/dp/429500636X)

# 参考URL
* [【Linux】/と~の違い（ルートディレクトリとホームディレクトリの違い）](https://qiita.com/eee_eee/items/3bfc9ba935b2ec1e85d0)
* [lsコマンドのオプションなんだっけな](https://zenn.dev/oreo2990/articles/148c2b548d68cc)