Linuxコマンド便利帳①　〜超基本編・テキスト作成と表示〜

#1.はじめに
MacやLinuxのターミナルで使うコマンド。使いこなせたらなんかカッコイイあれを簡単にご紹介。
（備忘録もかねて。。。）

#2.基本のきほん
[ディレクトリ移動]・・・`cd`
[作業ディレクトリ確認]・・・`pwd`
[ディレクトリ・ファイル情報チェック]・・・`ls`
［ファイルコピー]・・・`cp (file)`
　→［ディレクトリごと]・・・`cp -r (ディレクトリ)`
[ファイル移動]・・・`mv (file) (移動先)`
　→[ディレクトリごと]・・・`mv -r (ディレクトリ) (移動先)`
[ディレクトリ作成]・・・`mkdir (ディレクトリ)`
[ファイル削除]・・・`rm (file)`
　→[ディレクトリごと]・・・`rm -r (ディレクトリ)`
[ファイル作成]・・・`touch (file)` ※中は空っぽ
[文字や変数などを表示]・・・`echo （文字や変数）`


※詳細を知りたい人はググってみましょう！！

#3.覚えておくと便利コマンド
####3-1. nano
テキストエディタです。
`ｔｏｕｃｈ`コマンドなどで作成した既存ファイルの内容を編集したり、一から新規ファイルも作成できます。

```terminal:ex.nano
#一から新規ファイルを作成してみよう
$ nano test.txt
```
下記の画面に写ります。
<img width="673" alt="スクリーンショット 2019-05-21 14.27.23.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241094/f1e94d28-c8d9-9fa2-7637-815d630c59c1.png">

適当に入力をし、「control」＋「X」で終了。

```terminal:ex.nano
#中はこんな感じ。
Sapporo
Sendai
Tokyo
Yokohama
```
`Save modified buffer (ANSWERING "No" WILL DESTROY CHANGES) ? `と出てきますが、
・問題なければ「Y」→「Enter」※編集の場合は上書きされるの要注意
　→`File Name to Write: test.txt`と表示され、ファイル名変更なければ「Enter」で終了。
・ちょっと待った見直す「C」→「Enter」
・やっぱやめた「N」→「Enter」※入力・編集内容が破棄されて元の画面に戻ります

####3-2. cat
テキストの中身を表示できます。
コンソール上に一気に表示されるので、情報量の少ないテキストを表示させるのに最適！

```terminal:ex.cat
#作成したtest.txtを表示
$ cat test.txt 
Sapporo
Sendai
Tokyo
Yokohama

$ cat test2.txt 
Nagano
Nagoya
Kyoto
Osaka
Hirosima
```
ファイルの結合も得意です。

```terminal:ex.cat
#２つ以上のファイルを繋げて表示できます
$ cat test.txt test2.txt test3.txt
Sapporo
Sendai
Tokyo
Yokohama
Nagano
Nagoya
Kyoto
Osaka
Hirosima
Matsuyama
Fukuoka
Kagoshima
Okinawa
```

ちょっと応用編！
コマンド結果を抽出しテキストに保存！

```terminal:ex.cat
#リダイレクト > を使って出力させます。
$ cat test.txt test2.txt test3.txt > test_cat.txt

$ ls
test.txt   test2.txt   test3.txt   test_cat.txt

$ cat test_cat.txt
Sapporo
Sendai
Tokyo
Yokohama
Nagano
Nagoya
Kyoto
Osaka
Hirosima
Matsuyama
Fukuoka
Kagoshima
Okinawa
```

####3−3. less
こちらもテキストの中身を表示できます。
コンソール上ではなく、画面が切り替わって表示されます。情報量の多いテキストを表示させるのに最適！

```terminal:ex.less
$ less hg38.gtf #ヒトのGene annotation　というファイルです。
```

こんな感じに表示される。
マウスのスクロール or 矢印キー「↓・↑」 などで表示画面もスクロールされます。
<img width="939" alt="スクリーンショット 2019-05-21 16.30.14.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241094/5e7da0ed-4807-1463-74ed-ff3d56f71ab3.png">

行が折り返して見にくい・・・？

```terminal:ex.less
#行を折り返したくないときには、オプション -S
$ less -S hg38.gtf
```
表示画面を抜けたい！→「q」

####3-4. head
先頭○行を表示させる。
デフォルトは１０行です。

```terminal:ex.head
$ head test5.txt 
Sapporo
Sendai
Tokyo
Yokohama
Nagano
Nagoya
Kyoto
Osaka
Hirosima
Matsuyama
```
先頭○行・○文字を表示したい。

```terminal:ex.head
#３行を表示しよう！　オプション -n ○
$ head -n 3 test5.txt 
Sapporo
Sendai
Tokyo
#２５文字を表示しよう！　オプション　-c○
$ head -c 25 test5.txt 
Sapporo
Sendai
Tokyo
Yoko
```

####3−5. tail
headの逆バージョン。
最終行○行を表示させる。
デフォルトは１０行です。

```terminal:ex.tail
$ tail test5.txt 
Yokohama
Nagano
Nagoya
Kyoto
Osaka
Hirosima
Matsuyama
Fukuoka
Kagoshima
Okinawa
```

最終行○行・○文字を表示したい。

```terminal:ex.tail
#最後から３行を表示しよう！　オプション -n ○
$ tail -n 3 test5.txt 
Fukuoka
Kagoshima
Okinawa
#最後から２５文字を表示しよう！　オプション　-c ○
$ tail -c 25 test5.txt 
ukuoka
Kagoshima
Okinawa
```
ちょっと応用編！
ヘッダー以外を表示したい時に！

```terminal:ex.tail
$ cat test6.txt 
ID	data1	data2 ←　ヘッダー　は　これ
A	10	10
B	20	20
C	30	30
#２行目以降を表示させtたらok。　オプション -n +○　（数字の前に”＋”を付けたら○行目以降が表示される）
$ tail -n +2 test6.txt 
A	10	10
B	20	20
C	30	30
```

#4.コマンドの合わせ技
パイプ　`|`　を使うとコマンドを組み合わせて操作できます。

パイプ　`|`　を使わないパターン

```terminal:ex.command
#① 中身を表示
$ cat test5.txt 
Sapporo
Sendai
Tokyo
Yokohama
Nagano
Nagoya
Kyoto
Osaka
Hirosima
Matsuyama
Fukuoka
Kagoshima
Okinawa

#② 先頭５行目を表示（抽出）しテキスト出力
$ head -n 5 test5.txt > test5_head.txt

#③ ②の最終２行を表示（抽出）しテキストに出力
$ tail -n 2 test5_head.txt > test5_tail.txt

#④ 結果
$ cat test5_tail.txt
Yokohama
Nagano
```

パイプ　`|` を使うことでいっぺんにできます。

```terminal:ex.command
$ cat test5.txt | head -n 5 | tail -n 2 > test5_pipe.txt
$ cat test5_pipe.txt 
Yokohama
Nagano
```

#5.一口メモ :slight_smile:
◎入力補完機能を使って、コマンド・ディレクトリ・ファイルを入力してみる。
候補が１つしかない場合・・・tabキーを１回クリック

```terminal:ex.
#コマンドの場合
$ tou #ここでtabを１回クリック
$ touch
#今いるディレクトリにファイルが１つの場合
$ cat #ここでtabを１回クリック
$ cat test.txt
```

候補が２つ以上の場合・・・tabキーを２回クリック

```terminal:ex.
#コマンドの場合
$ to #ここでtabを2回クリック
toe   top   tops   topsyscall   topsysproc   touch #候補が出てきた
#今いるディレクトリにファイルが２つ以上の場合
$ cat #ここでtabを２回クリック
$ cat 
test.txt test2.txt test.csv test.py test3.sh #候補が出てきた
#ディレクトリの場合はこんな感じ
$ cd #ここでtabを２回クリック
dir/ dir2/ test_dir/ test_dir2/ test.txt test2.txt test.csv test.py test3.sh # 最後スラッシュ”/”付が
ディレクトリ 
```

◎直近の履歴を辿る
矢印キー「↑」クリックすると、直近の履歴を表示できます。
がっつり調べたい人には`history`コマンド。

```terminal:ex.hisotry
$ history 
・・・・(略）
  501  cd ../ 
  502  ls
  503  cd
  504  nano test.txt
  505  nano test２.txt
  506  rm test.txt 
  507  nano test３.txt
  508  nano test４.txt
  509  less genome/hg19.fa 
```
#5. おわり
更新：2020.07.07

↓次回予告から1年以上経ちました。次回予告とは。。。
linuxとはなんぞや。というかたに良さそうなリンクも貼り付けて今回の更新は終わり。
https://eng-entrance.com/category/linux/linux-basic

####次回予告
wc
awk
grep
sed
sort
uniq
cut
tr
あたりのコマンドをまとめたいと思っています。