初心者による初心者のためのLinuxコマンド集

俺でもわかるシリーズ Advent Calendar 2018 20日目です。
Qiita初挑戦です。よろしくお願いします:hatched_chick:

# はじめに
今年から社会人一年目。ぺーぺーですが学んだことを書きます。
学生時代は一応情報系、Linuxは授業で申し訳程度にやったことがありました。
でも、正直コピペ芸だった… お恥ずかしながらそのコマンドがなにをしてるのか分からない…
ということで、初心者of初心者なコマンド集(少しオプション付き)をつくりました。

# 調べたコマンドたち
まだまだ沢山ありますが、とりあえず15コ
+ man
+ cd
+ pwd
+ mkdir
+ touch
+ ls
+ cat
+ view
+ tail
+ echo
+ mv
+ rm
+ grep
+ find
+ wc

## man：コマンドのマニュアルを見る(manual)
<code><font color="HotPink">man</font> 使い方を知りたいコマンド名</code>
表示にはlessコマンドが使用されています
・移動：上下キー(矢印)
・終了：q

+ NAME：manで調べたコマンドの名前
+ SYNOPSIS：書式(調べたコマンドを使うときの書き方)
+ DESCRIPTION：解説(使えるオプション一覧も) 

ex.)lsの使い方を見たい場合
<code>man ls</code>


## cd：指定したディレクトリへ移動する(change directory)
<code><font color="HotPink">cd</font> ディレクトリ名</code>

ex.)現在いるディレクトリの1つ上のディレクトリへ移動
<code>cd ../</code>
ex.)現在いるディレクトリの2つ上のディレクトリへ移動
<code>cd ../../</code>
ex.)自分のホームディレクトリへ移動
<code>cd ~</code>
ex.)ルートディレクトリへ移動
<code>cd /<code>


## pwd：現在操作しているディレクトリを確認する
<code><font color="HotPink">pwd</font></code>
迷子にならないように、時々今自分がどこのディレクトリにいるのか確認するといいですよー。

ex.)自分のホームディレクトリでpwdした場合
<code>pwd</code>
/Users/ユーザ名


## mkdir：ディレクトリを新規作成する(make directory)
<code><font color="HotPink">mkdir</font> ディレクトリ名</code>
新規作成しようとしたディレクトリがすでに存在している場合、エラーになり作成されません

ex.)sampleというディレクトリを作る
<code>mkdir sample</code>
もう一度sampleディレクトリを作ろうとすると…
**mkdir: sample: File exists**
エラーが出ますね

### -p オプション
・エラーを表示せず、作成しようとしたディレクトリが存在しなければ作成する
　上書き作成ではないので注意！
・指定したディレクトリをサブディレクトリごと作成する
　ex.)sampleディレクトリの中にdirAをつくる(一括)
　<code>mkdir -p sample/dirA</code>


## touch：ファイルを新規作成する
<code><font color="HotPink">touch</font> ファイル名</code>
新規作成しようとしたファイルがすでに存在する場合、タイムスタンプが更新される(ls -lで確認可)
タイムスタンプで更新されるのは、
　・mtime：ファイルの最終更新日
　・ctime：アクセス権の最終更新日
ファイルの中身は変わらない

ex.)hoge.txtというファイルを作成する
<code>touch hoge.txt</code>


## ls：ファイルやディレクトリの情報を表示する(list)
<code><font color="HotPink">ls</font> (ファイル名,ディレクトリ名)</code>
ファイルやディレクトリを指定しなければ、現在のディレクトリ内にあるものの一覧が、
ファイルやディレクトリを指定すると、その指定したもののみの情報が表示されます

### -a オプション
ファイルの先頭に.(ピリオド)がつくファイルも表示する(隠しファイル)

### -l オプション
詳細を表示する

ex.)hoge.txtの詳細を表示する
<code>ls -l hoge.txt</code>
表示
**-rw-r--r--  1 ユーザ名  staff  0 12 18 11:52 hoge.txt**

### -r オプション
リストを通常の反対の順で表示する

### -t オプション
更新時間順に並べて表示する(-lオプションと併用)
<code>ls -tl</code>

### -R オプション
サブディレクトリの中も一度に表示する
ex.)sampleディレクトリの中に、dirAディレクトリがある場合
<code>ls -R sample</code>
表示
**dirA**

**sample//dirA:**


## cat：ファイルの中身を確認したいとき(concatenate)
<code><font color="HotPink">cat</font> ファイル名</code>
・ファイルの中身を表示のみする
・「grep」コマンドを使用して指定した文字列が存在する行を表示する　際に使用する
複数のファイルを連結して表示可能

ex.)hoge.txtとfuga.txtのファイルの中身を表示する
<code>cat hoge.txt fuga.txt</code>
表示
**hoge.txtの中身だよ**
**fuga.txtの中身だよ**


## view：ファイルを書き込み禁止で開く
<code><font color="HotPink">view</font> ファイル名</code>
viで指定したファイルが開かれる
:qで終了

viewとcatの違い
　・view：viのreadonlyモード　viで開くので、コマンド終了時ターミナルにファイルの中身は表示されない
　・cat：コマンド終了時、ターミナルにファイルの中身が表示される

ex.)catとviewでhope.txtを開く
<code>cat home.txt</code>
表示
**hoge.txtの中身だよ**
→ファイルの中身が表示されている(残っている)

<code>view home.txt</code>
表示

→viで開いているので、表示されない

## tail：ファイルの最終行から数行を表示する
<code><font color="HotPink">tail</font> ファイル名</code>
オプションで行数を指定しない場合、ファイルの最終行から10行分が表示される

ex.)sample.txtをtailで表示
<code>tail sample.txt</code>

### -n オプション
出力する行を指定する

ex.)最終行から3行を表示する
<code>tail -n 3 sample.txt</code>

### -f オプション
ファイルの追記を監視する
ログファイルのリアルタイム監視などにつかえる

<code>tail -f ファイル名</code>
待機状態になる　Ctrl+Cで終了


## echo：画面に文字列を表示する
<code><font color="HotPink">echo</font> 表示する文字列</code>

ex.)Hello!を表示する
<code>echo Hello!</code>
表示
**Hello!**

変数も表示できる
ex.) messageという変数に、Hi!という値を入れて表示する
<code>message=Hi!</code>
messageにHi!を代入する
<code>echo <font color="Red">$</font>message</code>
表示したい変数の前に$をつける


## mv：ファイルやディレクトリを移動する,名前を変更する
・移動する
<code><font color="HotPink">mv</font> 移動元　移動先</code>

・名前を変更する
<code><font color="HotPink">mv</font> 元の名前　変更後の名前</code>

## rm：ファイルやディレクトリを削除する
<code><font color="HotPink">rm</font> ファイル(ディレクトリ)名</code>

### -i オプション
<code>rm -i ファイル名</code>
ファイルの削除前に、本当に削除するか念のため確認したい時
削除しますか？という確認が表示される（複数ファイルある場合は、1ファイルごと確認される）

### -r オプション
<code>rm -i ディレクトリ名</code>
ディレクトリも削除の対象とする場合
rmコマンドは、オプション設定無しの場合ディレクトリを削除の対象としない


## grep：ファイルの中の文字列を検索する
<code><font color="HotPink">grep</font> 検索する文字列(正規表現可) ファイル名</code>

ex.)fruit.txtの中から"berry"という文字列を検索する
fruit.txt
**apple**
**blueberry**
**orange**
**peach**
**strawberry**
**grape**

<code>grep berry fruit.txt </code>
表示
**blueberry**
**strawberry**

### -i オプション
大文字・小文字を区別せずに検索する時
<code>grep -i 検索する文字列(正規表現可) ファイル名</code> 

### -v オプション
一致しないものを検索する時(指定した文字列を含まないものを探す)
<code>grep -v 検索対象に含まない文字列(正規表現可) ファイル名</code> 


## find：ファイルやディレクトリを検索する
<code><font color="HotPink">find</font> ファイル・ディレクトリ名</code>

### -name オプション
ワイルドカードを使用して、ファイルやディレクトリ名の一部を指定し検索する

ex.)sampleディレクトリ内にある、拡張子が.txtのファイルのみ検索する
<code>find sample -name \\\*.txt</code>
\\(バッククォート)で*をエスケープするのを忘れずに

### -type オプション
+ -type f オプション
ファイルのみを対象として検索する
<code>find ファイル名 -type f</code>

+ -type d オプション
ディレクトリのみを対象として検索する
<code>find ディレクトリ名 -type d</code>


## wc：ファイル内のテキストの大きさを表示する(word count)
<code><font color="HotPink">wc</font> ファイル名</code>
バイト、行数、単語数、文字数を数えられる
単語は空白やタブ文字、改行で区切られた集まり

### -l オプション
行数を数える（実際には改行の数を数えている）
<code>wc -l ファイル名</code>


---
めちゃめちゃに長くなってしまった。反省。
まだコマンドになれないので、操作忘れた！とおもったらチラ見するのに使います。使ってください。