【Linux】少し詳しめのチートシート ~Linuxコマンドとオプション~

#索引
ディレクトリ操作編

* [cd](#cd)
* [pwd](#pwd)
* [ls](#ls)
* [mkdir](#mkdir)
* [rmdir](#rmdir)

ファイル操作編

* [cat](#cat)
* [less](#less)
* [touch](#touch)
* [rm](#rm)
* [mv](#mv)
* [cp](#cp)
* [find](#find)

便利機能

* [パス名展開](#パス名展開)
* [--helpオプション](#--helpオプション)
* [manコマンド](#manコマンド)

#ディレクトリ編

##ディレクトリの表記方法

* カレントディレクトリ 「.」
* 親ディレクトリ　「..」
* ホームディレクトリ　「~」　<br>
シェルを立ち上げた時はホームディレクトリにいる
* ルートディレクトリ　「/」

##ディレクトリを操作するコマンド
以下の説明において、(　)で囲んだオプションは任意です。

###cd
元の語：change directory
役割：ディレクトリを移動する

```
$ cd (オプション)　(ディレクトリ)
```
オプションはほとんど使わない。
`$ cd`のみ実行すると、ホームディレクトリへ移動する。

###pwd
元の語：print name of working directory
役割：カレントディレクトリを表示する

```
$ pwd (オプション)
```

###ls
元の語：list
役割：ファイルやディレクトリの一覧を表示する

```
$ ls (オプション) (ディレクトリ名・ファイル名)
$ ls -l    //ファイルの詳細情報を表示する
$ ls -a    //隠しファイルも含め、全てのファイルを表示する
$ ls -F    //ファイル種別を表示する
```
###mkdir
元の語：make directory
役割：ディレクトリを作成する

```
$ mkdir (オプション)　作成するディレクトリ名
$ mkdir -p 作成するディレクトリ名/作成するディレクトリ名/・・・
      //深いディレクトリを一度に作成する
```
###rmdir
元の語：remove directory
役割：空のディレクトリを削除する
※空のディレクトリしか削除できないので、誤って中のファイルごと削除する事故を防ぐことができる。

```
$ rmdir　 削除するディレクトリ名
```

#ファイル編
##ファイルを操作するコマンド
###cat
元の語：concatenate
役割：ファイルの中身を表示する

```
$ cat (オプション)　ファイル名
$ cat -n      //行番号を表示する
$ cat ファイル名① ファイル名②      //スペース区切りで、複数のファイルを指定することもできる
```

###less
元の語：less
役割：ファイルの中身をスクロール表示する

※catコマンドに比べて、長いファイルの中身を見たい時に使う。

```
$ less (オプション)　ファイル名

【スクロールの操作方法】
$ スペース / f    //一画面下へスクロール
$ b      //一画面上へスクロール 
$ j      //一行下へスクロール
$ k      //一行上へスクロール
$ q      //lessコマンドを終了

【表示画面上での検索方法】
$ /文字列    //下方向へ向かって検索
$ ?文字列    //上方向へ向かって検索
$ n         //次の検索結果へ移動
$ N         //前の検索結果へ移動
```

###touch 
役割：空の新規ファイルを作成する

```
$ touch 作成するファイル名
$ touch ファイル名① ファイル名②・・・
      ////スペース区切りで、一度に複数のファイルを作成することもできる
```

###rm
元の語：remove
役割：ファイル・ディレクトリを削除する

※rmコマンドを実行すると、ゴミ箱には入らず完全に削除される

```
$ rm (オプション名) 削除するファイル名
$ rm -r 削除するディレクトリ名      //（ディレクトリの中身ごと）ディレクトリを削除する
```

###mv
元の語：move
役割：ファイルの移動、ファイル名を変更する

```
//ファイルの移動
$ mv (オプション) ファイル名　　移動先のディレクトリ名/

//ファイル名の変更
$ mv (オプション) ファイル名　　変更後のファイル名

$ mv -i  同上      //上書きする前に確認する
```

###cp
元の語：copy
役割：ファイル・ディレクトリをコピーする

※コピー先として指定した名前のファイルが既に存在した場合、（何もオプションをつけていなければ）上書きされる。

```
$ cp (オプション)　　コピー元ファイル名　　コピー先ファイル名もしくはディレクトリ名
      //コピー先にファイル名を指定すれば、その名前のコピーファイルを作成する
      //コピー先にディレクトリ名を指定すれば、そのディレクトリの下に、コピー元のファイルがコピーされる

$ cp -i  同上
      //同じ名前のファイルが存在する場合、上書きする前に確認する

$ cp -r 　コピー元ディレクトリ名  コピー先ディレクトリ名
      //ディレクトリの中身ごと、ディレクトリをコピーする
```

###li
元の語：link
役割：リンクを作成する

**リンクとは？**
ファイルやディレクトリに別名を付け、異なった名前で同一のファイルにアクセスすることができる仕組み。
Linuxではハードリンクとシンボリックリンクの2つがある。

```
//（オプションなしの場合）ハードリンクを作成する
$ ln (オプション) ファイル名 リンク名

//シンボリックリンクを作成する
ln -s ファイル名 リンク名

//ディレクトリのシンボリックリンクを作成する
ln -s ディレクトリ名 リンク名
```
* シンボリックリンク
・Windowsのショートカットに該当する。リンク元ファイルが配置されている場所を参照する。
・フォルダのリンクが作成できる。
・リンク元のファイルが移動、削除されると、リンク元のファイルの実体にアクセスできない。
・異なるファイルシステム上のファイルやディレクトリにリンクできる。

* ハードリンク
・1つのファイルの実体を複数のファイル名で表す。同じファイルの実体を共有する。
・　リンク元のファイルが移動、削除されても、ファイルの実体にはアクセスできる。
・　異なるファイルシステム上のファイルやディレクトリにリンクできない。
・フォルダのリンクは作成できない。

###find
役割：ファイルを検索する

検索開始ディレクトリを起点として、検索条件に指定されたファイルを探し、アクションを実行する。


```
$ find 検索開始ディレクトリ　検索条件　アクション

//ファイル名を指定してファイルを検索する（大文字小文字を区別する）
$ find . -name '*.html' -print
    //*や?を使うことができる。その場合''で囲む。

//ファイル名を指定してファイルを検索する（大文字小文字を区別する）
$ find . -iname
```











#便利機能
##パス名展開
パス名展開を使うと、複数のファイルを引数に指定することができる。

* ＊　任意の1文字以上の文字列
例：拡張子がphpのファイルを全て表示
`$ ls *.php`

* ？　任意の1文字
例：aで始まる3文字のフォルダを全て表示
`$ ls a??`

##コマンドの使い方を調べる
###--helpオプション

```
$ 調べたいコマンド名 --help
      //コマンドの概要、使用方法、利用可能なオプションを教えてくれる。
```
###manコマンド

```
$ man 調べたいコマンド名
      //--helpオプションよりも詳しく、コマンドのマニュアルを表示する

$ man -k 調べたいキーワード
      //manコマンドはキーワード検索もできる

->　manオプションで開いたマニュアルを閉じる場合
$ q
```


<br>
##参考教材

https://www.udemy.com/course/unscared_linux/