[Linux]Linuxコマンドをまとめてみた

#はじめに
自分用にしようか迷いましたが、せっかくなので公開してみました。

#よく使うコマンド

##mkdir

ディレクトリの作成

```
mkdir オプション　作成するディレクトリ名
```

**-pオプションをつけると、存在しない親ディレクトリ含めて作成していくれる**

##touch

空ファイルの作成

```
touch ファイル名
```

**まちがって既存ファイルを指定しても、上書きされないので安心**

##rmとrmdir

削除するためのコマンド

```
rm ファイル名
rmdir ディレクトリ名
```

**-iオプションをつけることで、本当に消すか確認してくれる。エイリアスにしておくと便利。あと、rmdirは空のディレクトリのみ削除可能であるので、中に隠しファイルとかあるとエラー出ます**


##catコマンド

ファイルの内容を表示

```
cat ファイル名
```

**-nオプションで行数表示**

##lessコマンド

スクロール表示が必要なものに使う

```
less ファイル名
```

**/を押すと検索モードになる。(下方向に向かって検索)。?でも検索モード（上方向に検索）。**


##cpコマンド

```
cp コピー元ファイル　コピー先ファイル名
```

**注意なのは上書きするので、コピー先に既存ファイルを指定するのは避けたい。こうしたミスを防ぐためにも-iオプションはつけること。またディレクトリのコピーには-rオプションが必要**

```
cp -r ディレクトリ名　ディレクトリ名
```

##lnコマンド

リンクを張るコマンド。つまりファイルに別名をつけるコマンド。

###ハードリンク

ハードリンクはファイルの実体に複数の名前をつける機能です。

```
ln file1 file2
```

ハードリンクの削除は以下です

```
% rm file1

% cat file2
元のfile1の中身が表示される 

%rm file2
```

###シンボリックリンク

シンボリックリンクは、リンク先がファイルの実体であり本物です。

```
% ln -s file1 file2
% rm file1
% cat file2
//リンク先のファイルが削除されたのでエラーになる 
```

リンクはクソ長いパス名なんかを他の名前に置き換えたりするときに使う

##findコマンド

検索するためのコマンド


```
find . -name file1 -print
```

**ワイルドカードを使用するときは、検索条件を``で囲むこと。-inameを使用すると大文字小文字の区別がなくなる。**

複数の検索条件の場合は-aを使用して以下のようにする。

```
find . -type f -a -name '*.html' -print
```

##chmodコマンド

ファイルの権限等を変更する。

###シンボルモード

```
chmod [ugoa][+-=][rwx] ファイル名
chmod  誰が どうする 何を
```

|  記号  |  意味 |
| ---- | ---- |
|  u | オーナー  |
|  g | グループ  |
|  o | その他のユーザ  |
|  a | ugoすべて  |
|  ＋ | 追加  |
|  ー | 禁止  |
|  ＝ | 指定した権限と等しくする  |
|  r | 読み取り   |
|  w | 書き取り  |
|  x | 実行  |

```
chmod u+w file.txt
```

###数値モード

ここはシンボルモードを８進数の数値で表現しただけなので、各自調べてもらいたい。


|  記号  |  数字 |
| ---- | ---- |
|  r | 4   |
|  w | 2  |
|  x | 1  |

##grepコマンド

grep検索ってやつですね、有名です

```
$ grep 検索正規表現 ファイル名
```

これはかなり使うみたいなので、こちらでしっかり確認することをお勧めします！
[参考になるサイト](https://eng-entrance.com/linux-command-grep)


##wcコマンド

入力ファイルの行数、単語数、バイト数を確認するためのコマンド

```
% wc ファイル名
//行数　単語数　バイト数　ファイル名
```

```
% wc -l　ファイル名 
//行数

% wc -ｗ ファイル名
//単語数

% wc -c ファイル名 
//バイト数
```
##sortコマンド

みたまんまソートのためのコマンド

オプションが重要

|  オプション  |  意味 |
| ---- | ---- |
|  k | パイプラインで渡ってきたものを、N列目のものでソートする　例：-k 5  |
|  n | 数値順にソートする   |
|  r | 逆順にする、通常は昇順なので降順になる  |
|  u |　uniqコマンドと同様の効果を発する  |

##uniqコマンド

連続した同じ内容の行を省くコマンド。**連続という点に注意。**仮に北海道という文字列が一行目と五行目にあっても省かれない！！！

```
uniq ファイル名
```

-cオプションで、重複した行が何行あるか重複行数を数える。

##cutコマンド

入力行の一部を切り出して出力するコマンド。

```
cut -d 区切り文字　-ｆ フィールド名　ファイル名
```

フィールド名は、おそらく何列目かを示しているものと捉えて問題ないはず。

```
cut -d ：　-f 7 /etc/passwd
```

##trコマンド

文字の置換・削除するコマンド

###文字の置換

```
tr 置換前の文字　置換後の文字
```

以下のような記述はabcをABCに置換するのではなく、aはA、bはB、cはCと置換する。

```
cat file1 | tr abc ABC
```

**さらに注意が必要なのは、trコマンドでは直接ファイルを読み込むことは不可能なので、パイプラインか何かで渡してやる必要があります。**

###文字の削除

```
tr -d 削除文字
```

##tailコマンド

headコマンドと似ていて、末尾を表示します。
特に難しいことはありませんが、、、
使用用途としては、ログの監視などに使います。

その場合は以下のようにします。

```
tail -f ファイル名
```

こうするとリアルタイムに表示してくれます！

##diffコマンド

差分を表示するコマンドです

```
diff 比較元ファイル　比較先ファイル
```

例えばこのような表示になります。

```
% diff .bashrc.org .bashrc
12c12
<PS1='\$'
---
>PS1='[\u@\h] \w\$'
```

これの見方は以下を見ればわかります。

|  記号  |  内容 |
| ---- | ---- |
|  <範囲1>a<範囲2> |1つ目のファイルの範囲1の後に、2つ目のファイルの範囲2が追加された|
|<範囲1>c<範囲2>|1つ目のファイルの範囲1の箇所が2つ目のファイルのの範囲2の内容に変更された|
|<範囲1>d<範囲2>|1つ目のファイルの範囲1の箇所が削除された|

実際はこれではみにくいのでユニファイド出力形式で表示します。

```
diff -u .bashrc.org .bashrc
```



#おわりに

ざっくり簡単にまとめていました。
よく使うものについては、しっかり使い慣れていきたいですね！