Linuxコマンド -基礎編- (初心者向け)

# 新人向けLinuxコマンド集

## この記事で紹介するコマンド
* cd
* mv
* cp
* mkdir
* touch
* rm


## cd [Change Directory]
カレントディレクトリを変更するコマンドです。  
[カレントディレクトリを移動する]とも言われる。

基本構文としては以下の内容

```sh
$cd 相対パス
$cd 絶対パス
```

cdコマンドに渡せる値は相対パスもしくは絶対パスです。
渡された相対パスや絶対パスによってでカレントディレクトリを変更します。


### 例

このようなディレクトリ構成になっているとします。

```sh
/
├── a
│   └── aa
├── b
│   └── bb
├── c
│   └── cc
└── d
    └── dd
```


カレントディレトクリが/であるとき、
ディレクトリaをカレントディレクトリに変更したい時 (絶対パスで指定)

```bash
$cd /a
```

カレントディレトクリがaであるとき、
ディレクトリaaをカレントディレクトリに変更したい時 (相対パスで指定)

```bash
$cd aa/
```

カレントディレトクリがaaであるとき、
ディレクトリaをカレントディレクトリに変更したい時 (相対パスで指定)

```bash
$cd ../
```

カレントディレトクリがaaであるとき、
ディレクトリddをカレントディレクトリに変更したい時 (相対パスで指定)

```bash
$cd ../../d/dd
```

このように絶対パスもしくは相対パスでカレントディレクトリを変更することができます。

## mv [move]
mvコマンドはディレクトリ、ファイルを移動することができます。
またディレクトリ名、ファイル名を変更することができます。

```bash
# どちらの引数にもパスを渡すとディレクトリ、ファイルの移動をしてくれます。
$mv 移動元パス 移動先パス

# 1つ目の引数にパスを渡し、2つ目の引数にパスを渡さなかった場合は、名前の変更をしてくれます。
$mv 名前変更元パス 名前変更先パス 
```

### 例:ディレトクリ、ファイルの移動
ディレクトリの構成は以下の通りです。

```bash
/
├── a
│   └── aa
│       └── aaa.txt
├── b
│   └── bb
├── c
│   └── cc
└── d
    └── dd

```

aaa.txtをディレクトリbbに移動

```bash
$ mv /a/aa/aaa.txt /b/bb/

# 結果
/
├── a
│   └── aa
├── b
│   └── bb
│       └── aaa.txt
├── c
│   └── cc
└── d
    └── dd

```

カレントディレクトリaaの時、aaa.txtを移動。(相対パスで)

```bash
$ mv  ../../b/bb/aaa.txt ./

# 結果
/
├── a
│   └── aa
│       └── aaa.txt
├── b
│   └── bb
├── c
│   └── cc
└── d
    └── dd
```

## 例:ディレクトリ名とファイル名を変更する

ディレクトリaの名前をa_exに変更。

```bash
$ mv /a a_ex
# 結果
/
├── a_ex
│   └── aa
│       └── aaa.txt
├── b
│   └── bb
├── c
│   └── cc
└── d
    └── dd
```

aaa.txtをaaa_ex.txtに変更。

```bash
$ mv /a_ex/aa/aaa.txt /a_ex/aa/aaa_ex.txt

/
├── a_ex
│   └── aa
│       └── aaa.txt
├── b
│   └── bb
├── c
│   └── cc
└── d
    └── dd
```

問題
以下のコマンドを実行すると結果はどうなりますか?
実際に試してみてくださいね。

```bash
$ mv /a_ex/aa/aaa_ex.txt aaa_mv.txt

# ?

```

## cp [copy]
ディレクトリ、ファイルをコピーができます。

```bash
# ファイル単体をコピーする場合
$ cp ファイルがある場所のパス コピー先

# ディレクトリをコピーする場合
$ cp -r ディレクトリがある場所のパス コピー先
```

### 例:ディレクトリ、ファイルをコピー

ディレクトリの構成は以下の通りです。

```bash
/
├── a
│   └── aa
│       └── aaa.txt
├── b
│   └── bb
├── c
│   └── cc
└── d
    └── dd

```

ディレクトリaを/直下にディレクトリとしてコピー

```bash
$ cp -r /a/ /e/
# 結果
/
├── a
│   └── aa
│       └── aaa.txt
├── b
│   └── bb
├── c
│   └── cc
├── d
│   └── dd
└── e
    └── aa
        └── aaa.txt
```

/a/aaa/aaa.txtを/b/bb/ににbbb.txtとしてコピー

```bash
$ cp /a/aa/aaa.txt /b/bb/bbb.txt
# 結果
/
├── a
│   └── aa
│       └── aaa.txt
├── b
│   └── bb
│       └── bbb.txt
├── c
│   └── cc
└── d
    └── dd
    
```

## mkdir [make directory]
ディレクトリを作成できます

```bash
$ mkdir 作成するディクトリのパスとディレクトリ名

# 複数のディレクトリを一度に作りたい場合はスペース区切りで書く

# ディレクトリの階層を一度で作る場合
$ mkdir -p 階層のパス

```

### 例 ディレクトリの作成
ディレクトリの構成は以下の通りです。

```bash
/
├── a
│   └── aa
│       
├── b
│   └── bb
├── c
│   └── cc
└── d
    └── dd

```

/直下にディレクトリeを作成

```bash
$ mkdir /e
# 結果
/
├── a
│   └── aa
│       
├── b
│   └── bb
│       
├── c
│   └── cc
├── d
│   └── dd
└── e
```

/e/直下にee/eeeの階層を作成

```bash
$ mkdir -p /e/ee/eee
# 結果
/
├── a
│   └── aa
│       └── aaa.txt
├── b
│   └── bb
│       
├── c
│   └── cc
├── d
│   └── dd
└── e
    └── ee
        └── eee
```

## rm [remove]
フォルダ、ファイルを削除する
※ rmコマンドは気をつけて使うこと

```bash
# ディレクトリを削除する場合
$ rm -r 削除するディレクトリパス
# ファイルを削除する場合
$ rm 削除するファイルパス
```

### 例
ディレクトリ構成は以下

```bash
/
├── a
│   └── aa
│       └── aaa.txt
├── b
│   └── bb
│       
├── c
│   └── cc
├── d
│   └── dd
└── e
    └── ee
        └── eee
```

/e/ee/eeeを削除

```bash
$ rm -r /e/ee/eee
# 結果
/
├── a
│   └── aa
│       └── aaa.txt
├── b
│   └── bb
│       └── bbb.txt
├── c
│   └── cc
├── d
│   └── dd
└── e
    └── ee
```

/b/bb/bbb.txtを削除

```bash
$ rm /b/bb/bbb.txt
# 結果
/
├── a
│   └── aa
│       └── aaa.txt
├── b
│   └── bb
├── c
│   └── cc
├── d
│   └── dd
└── e
    └── ee
```

# まとめ
上記のコマンドが基本のコマンドになるため、
CUIで操作する場合は必須になります。
ぜひ覚えておいてくださいね。