初心者向け　Linux操作　基本コマンドまとめ

# はじめに
　今年からエンジニアになり、コマンドラインでの操作やネットワークの基本的な概念を身に付けたいと思いLinuxの学習をはじめました。その備忘録として記事を書いていきます。間違っているところなどがあればご指摘いただければと思います。

# 基本的なコマンド

## １.ファイル操作コマンド
### 1-1.ファイルやディレクトリの一覧を表示する(ls)
####【できること】
・ファイルやディレクトリの一覧を表示するコマンド
・lsの後ろにオプションやファイル名、ディレクトリ名を指定できる。
・ワイルドカード（*）を使用して結果を絞り込んで一覧表示することができる。

####使い方

``` 
ls [オプション]　[ファイル名]
```
の書式で入力できる。

```
$ ls
ダウンロード　　デスクトップ　画像　音楽
テンプレート　　ドキュメント　公開
```
このように現在いるディレクトリ内にあるファイルやディレクトリの一覧を表示することができる。

lsの後ろにディレクトリ、ファイルを指定すると、そのディレクトリ内にあるファイルやディレクトリの一覧を表示することができる。

```
$ ls /usr/
bin etc games include lib libexec local sbin share src tmp
```

ファイルの並び順を変えて表示するなどコマンドの動作を変える場合はオプションを使う。

```
-a
.ではじまる隠しファイルも含めて、全てのファイルを表示する
-l
長（Long）形式で表示する
-t
最終更新時間によって、並び替えて表示する
-r
逆順に並び替えて表示する
```

ファイルを絞り込んで表示する

```
 $ls hosts*
hosts  hosts.allow  hosts.deny
```
この場合は、頭文字にhostsがつくファイルを全て表示する。

文字数がわかる場合の絞り込み

```
$ cd /etc
$ ls hosts.????
hosts.deny
```

?の数で文字を絞り込む。上記の場合は４文字

?の後に文字列をつけても絞り込みできる。

```
 cd /etc
$ ls hosts.????w
hosts.allow
```

###1-2.ファイルのコピー（cp）
####【できること】
・ファイルの複製を作成
・コピーを作成したファイル名を指定することもできる
・-rオプションを使用するとディレクトリもコピーすることができる

####使い方

```
cp [オプション]　[コピー元]　[コピー先]　
```

使用例

```
cp a b
```

上記の例では、コピー先であるbの状態によって動きが変わってくる。
・bが存在するファイル名ではない場合、aをコピーとしてbのファイルが作成される。
・bがディレクトリ名だった場合、bの下にaのコピーが作成される。
・bというファイル名が存在してる場合、aのコピーでbが上書きされる。

####オプション

```
-i
　ファイルの上書きコピーをする時に"overwrite ファイル名? (y/n [n])"のような確認のための
問い合わせをしてくる。謝って上書きコピーをしないように使用される。

-r
　ディレクトリをコピーする。cpコマンドは基本的にファイルをコピーするコマンドだが、これを付けると
ディレクトリの中にある全てのファイル・ディレクトリをコピーできる。

-p
　元の情報を保持したままコピーする。ファイルには、所有者、管理者権限、更新日時など、ファイルに関する
様々な情報がある。通常のコピーではその情報が新しい内容になりコピーされる。古い情報を保持したい
場合はこのオプションを付ける。
```

### 1-3.ファイルの移動（mv）
####　できること
・ファイルを移動することができる。
・移動する時にファイル名の変更もできる。

#### 使い方

```
mv 移動元ファイル　移動先ファイル
```
使用例

```
mv a b
```
mvコマンドでもファイル・ディレクトリの状態によって動きが変わってくる。
・aがファイル名でbが存在するディレクトリだった場合、bのディレクトリの下にaのファイルが移動する。
・aがディレクトリで、bも存在するディレクトリの場合、bのディレクトリの下にaのディレクトリが移動する。
・aがファイル名で、bが存在しない場合、aのファイル名がbに変更される。
・aがディレクトリ名で、bが存在しない場合、aのディレクトリ名がbに変更される。

####　オプション

```
-i
 ファイルの上書きコピーをする時に"overwrite ファイル名? (y/n [n])"のような確認のための
問い合わせをしてくる。謝って上書きコピーをしないように使用される。

-f
　強制的に処理を実行する。一部では、処理を確認する問い合わせがあるが、それを無視して強制的に処理を実行させる。
```

### 1-4.ファイルの削除（rm）

####できること
・ファイルを削除することができる。

#### 使い方
```
rm ファイル名
```

#### オプション

```
-i
　ファイルの削除をする時に、本当に削除していいのか、確認のための問い合わせをする。。誤ってファイルを削除をしないように使用される。

-f
　強制的に処理を実行する。一部では、処理を確認する問い合わせがあるが、それを無視して強制的に処理を実行させる。
-r
　ディレクトリをコピーする。cpコマンドは基本的にファイルをコピーするコマンドだが、これを付けるとディレクトリの中にある全てのファイル・ディレクトリをコピーできる。
```

　LinuxのようなUNIX系OSでは、一度削除したファイルは復活できないので使用する時は要注意。また、rmはファイルを削除するコマンドなのでディレクトリは削除できないので、ディレクトリの削除には後述するrmdirコマンドを使用する。

## 2.ディレクトリの操作

### 前提知識

####特別なディレクトリ
Linuxでは、特別なディレクトリや、それを記号で表すものがある。以下がそれの代表的なもの。

#####カレントディレクトリ(.)
　現在いるディレクトリのこと。ファイル・ディレクトリ操作では、ドット（.）を使って表される。
#####親ディレクトリ(..)
　現在いるディレクトリの一階層上のこと。カレントディレクトリが/user/hostであれば、親ディレクトリは/userになる。
#####ホームディレクトリ
　ユーザーの作業開始位置となるディレクトリ。ログイン直後のユーザーは必ずホームディレクトリにいる。ファイルやディレクトリ操作ではチルダ(~)を使って表される。
#####ルートディレクトリ
　ディレクトリの最上位階層を表す。ファイル・ディレクトリ操作ではルート（/）を使って表される。

#### 絶対パス指定と相対パス指定
　現在のカレントディレクトリが/user/localで/user/bin/xxxを指定するやり方は2通りある。

1./user/bin/xxx
　最上位のルートディレクトリからディレクトリ・ファイルを指定する方法が絶対パス指定。絶対パス指定は、どこのディレクトリにいても指定することができるが、記述が長くなることもある。

2. ../bin/xxx
　現在いるディレクトリの位置から見てパスを指定する方法が相対パス指定。相対パス指定は、現在のディレクトリが変わると指定できないが、現在の位置から近いディレクトリ指定の場合、記述が少なくて済む。

### 2-1.現在のディレクトリを表示（pwd）

####　できること
・階層構造になっているディレクトリの、現在どこの位置にいるのかを表示することができる。

#### 使い方

```
$ pwd
/home/hosts
```

/はディレクトリの区切りを表す記号。

### 2-2.ディレクトリの変更（cd）

####　できること
・現在いるディレクトリを変更することができる。

#### 使い方

```
cd [ディレクトリ名]
```
ディレクトリの指定方法は絶対パス、相対パスどちらでも可能。何も指定しない場合は、ホームディレクトリに移動する。

### 2-2.ディレクトリの作成（mkdir）
　
####できること
　・ディレクトリを作成することができる。

####使い方

```
mkdir ディレクトリ名
```

dir1の下にdir2、その下にdir3を作成したい場合、

```
mkdir dir1
mkdir dir1/dir2
mkdir dir1/dir2/dir3
```

####オプション

```
-p
指定されたディレクトリの上位ディレクトリも作成する。
```

-pオプションを使うと

```
mkdir -p dir1/dir2/dir3 
```
のように書くことができる。

###2-3.ディレクトリの削除（rmdir）

####できること
・ディレクトリを削除することができる。

#### 使い方

```
rmdir ディレクトリ名
```

####オプション
```
-p
指定した階層までのディレクトリを一括で削除する。
```

rmdirは、オプションを使用しない場合、最下層のディレクトリのみを削除する。ディレクトリの中身が入っていると削除はできない。ディレクトリの中にファイル・ディレクトリが入っている場合の削除は、rm -rコマンドを用いて行う。

##3.ファイルの内容を表示

###3-1.ファイルの内容を表示（cat）
####できること
・ファイルの中身を確認することができる。

####使い方

```
cat ファイル名
ファイルの内容を表示
```

####オプション
```
-n
行番号を付加して表示する。
```


###3-2.ページャを使った表示(more、less)
####できること
・catで表示したページの行数が多すぎると表示されずに流れてしまう。（通常25行程度）多くの行があっても確認できるように画面制御を行い、途中でスクロールを止めることをページング機能という。それをこのコマンドで実現できる。

####使い方
#####moreコマンドの場合
| 項目 | 内容 |
|:-----------:|:------------:|
|スペース|次のページへ進む|
|b|前の一画面へ戻る|
|f|次の一画面へ進む|
|/単語|単語の検索。nキーで検索結果をジャンプ|
|q|ページャコマンドを終了(quit）する|

#####lessコマンドの場合
| 項目 | 内容 |
|:-----------:|:------------:|
|スペース|次のページへ進む|
|b|前の一画面へ戻る|
|f|次の一画面へ進む|
|↑|前の行へ進む|
|↓|次の行へ進む|
|/単語|単語の検索。nキーで検索結果をジャンプ|
|q|ページャコマンドを終了(quit）する|

##4.ファイルの検索
###4-1.ファイル検索（find）
####できること
・ファイルがどこのディレクトリにあるのか検索することができる。
####使い方

```
find パス　-name ファイル名
```
##5.コマンドのパス

　今まで使用してきたコマンドはプログラムで、プログラムもファイルの一種。/binや/sbinと言ったプログラム用のディレクトリに配置されている。

###5-1.コマンドのパスを表示(which)
　基本的にコマンドを実行する時、プログラムがどこのディレクトリに配置されているかを意識することはない。これは、PATHという環境変数にプログラムが配置されているディレクトリが設定されているから。whichコマンドをしようすると、PATH環境変数に含まれるディレクトリ配下に配置されているコマンドのパスを表示できる。

####使い方

```
which コマンド名
```

コマンドが存在するディレクトリがPATH環境変数に含まれていないと、whichコマンドの結果はエラーになる。

##6.ヘルプの使い方
　実行コマンドに対して--helpオプションなどをつけて実行することで、コマンドの実行に使えるオプションを調べることができる。

###使い方

```
コマンド　--help
```

##7.マニュアルの使い方

```
man コマンド名
```

####オプション

```
-k 単語
'単語'が含まれるエントリー一覧を出力する
```