Linuxコマンドの基礎練

### 趣旨
コマンドの基礎練習と、見直しのため記事にしました。
上から順番にコマンド練習すると仮定して記載しています。

### 内容
参考サイト
注意事項
コマンド
さいごに


### 参考サイト
インフラエンジニアが使うコマンド：
https://qiita.com/sion_cojp/items/04a2aa76a1021fe77079
練習問題など：
https://eng-entrance.com/linux-plactice-shellscript

### 注意事項
前提として、重要なデータが存在する環境での以下のコマンド練習を行わないように注意してください。
復元不能な削除コマンドを実行する場面があります！
何度も記載していますが、上から順番にコマンドを練習するように作成しています。
また、度々「keiji」というユーザーネームが出てきますが、ご自身のユーザーネームを当てはめてください！


### 早速コマンド！
ディレクトリやファイルを表示（基本）
```
ls
```


ディレクトリやファイルの細部を表示
```
ls -l
```

隠しフォルダも含めて表示
```
ls -a
```

隠しフォルダも含めてもっと細部を表示
```
ls -al
```

現在地を表示
```
pwd
```

ディレクトリを移動（この場合、rootディレクトリに移動）
```
cd /
```

ここで一回root内にどんなディレクトリあるかな
```
ls
```

binディレクトリに移動
```
cd /usr/bin
```


一つ上の階層のディレクトリに移動
```
cd ..
```

一気にhomeディレクトリに移動します。
（rootの場合は、rootディレクトリに移動しますので、このコマンドを実行後次の行のコマンドを実行してみましょう。）
```
cd
```

（root権限の方で、homeに帰る場合のコマンド）
```
cd /home/keiji（ユーザー名）
```

ディレクトリの作成（２つ作ります。）
１つ目
```
mkdir test
```
２つ目
```
mkdir test2
```

１つ目のディレクト内に入ります。
```
cd test
```

空ファイルを作成する又は既にディレクトリが存在する場合はタイムスタンプ（何時に更新した？という情報）を更新する。
```
touch test.txt
```

ファイルが作成できたか確認します。これで「test.txt」が存在するか確認
```
ls
```
ファイルを削除（一般的な削除方法）
```
rm test.txt
```

ファイルが削除できているか確認します。
```
ls
```


test2ディレクトリに移動します。次のコマンドで、homeに帰る。その後test2ディレクトリに移動する。
```
cd
```
```
cd test2
```


ファイルを作成して編集して保存できるコマンド。
```
vi test2.txt
```
・「iキー」を押下してインサート（文字を入力できる状態にする。）、適当な文字（helloでも良いので、入力して実際に保存しましょう。）を入力し、保存する場合は「Escキー」を押下し、「:wq」と入力して「Enterキー」を押下する。
（参考）「iキー」を押下して文字を入力したが、保存せずに閉じる場合、「Escキー」を押下し、「:q!」と入力して閉じる。


ファイルを開くことなくCLIに直接内容を表示（一気に全表示）
```
cat test2.txt
```

ファイルを開き、ページごとに表示して実用的なコマンド！
```
less test2.txt
```
表示を終了する場合は、「q」を押下します。
スペースキーで次ページへ。
”b”キーで前ページへ

ここで、ファイル「test2.txt」を複製して「test3.txt」というファイルを作成します。（ディレクトリのパスはpwdなどで確認して適正に指定しましょう。）細部説明↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/cb8ce22b-4b7f-923c-ddf7-95a3e1909bdb.png)
```
cp test2.txt /home/keiji/test/test3.txt
```

ファイルを削除（復元不能（ディスクから消し去るセキュアな削除））
```
shred -u test2.txt
```
※このコマンドはファイルの強力な削除方法になるので注意が必要です。

以下のコマンドで削除できているか確認してみましょう。
```
ls
```

続いて、ファイルを移動させます。homeにあるtestというディレクトリから、test2というディレクトリに「test3.txt」というファイルを移動させます。
まず、testディレクトリに移動します。そして以下のコマンドを実行します。
```
mv /home/keiji/test/test3.txt /home/keiji/test2/
```

ちょっと一息((+_+))
キーボードによってタイピングのスピードが変わってしまうのは私だけなのだろうか。。私はデスクトップ用のいわゆるカタカタ音がするキーボードが苦手です（泣）指の力を持っていかれる感じがどうしても苦手なので、機会があればデスクトップ用のキーボードを購入するなりして克服しよかな(´;ω;｀)

よっしゃ次いきます（笑）

ここで一回今のアカウントを確認してみましょう。
以下シャレではなく、ちゃんとしたコマンドですｗ
```
whoami
```
これで、ユーザーアカウントである場合は、「ユーザー名」。root権限である場合は、「root」と表示されます。
（参考）次のコマンドでも確認することができる。また、このコマンドはオプションによって多様な使い道があるようです。
```
w
```


次にユーザーアカウントを追加して、homeディレクトリを作成します。
なお、「sub」の箇所は任意です。root権限に移行した後、次のコマンドを実行します。
```
useradd -m sub(任意)
```

作成したユーザーアカウントにパスワードをかけます。
次のコマンドは、パスワードを変更したい場合も使用できる。
```
passwd sub(任意)
```

次に作成したユーザーアカウントに移動します。（コマンド練習のため、元のユーザーアカウントに戻りましょう。）
```
su sub
```

元のユーザーアカウントに戻る。
```
su keiji（元のユーザーアカウント）
```

先程作成した「sub」というユーザーアカウントを削除します。（su権限に移行した後、次のコマンドを実行します。）
```
userdel -r sub
```
※削除できない場合は、一度ログアウトし、再びログインしてroot権限で実行します。

次に、現存しているディレクトリをzipディレクトリにします。
細部は次のとおり。なお、ファイルをzipにしたい場合も同じコマンドです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/1f63223c-87f6-8c9e-73b5-2652b6416af3.png)
```
zip -r test.zip /home/keiji/test
```

次に現在のディレクトリ内に解凍します。
```
unzip test.zip
```
（参考）別のディレクトリに解凍する場合
```
unzip test.zip -d /home/keiji/test2
```

ディレクトリ「/home/keiji/test」内のtest.txtとディレクトリ「/home/keiji/test2」内のtest3.txt、この２つのファイルの差分（並べて違いを確認すること。）を確認します。
```
diff -u /home/keiji/test/test.txt /home/keiji/test2/test3.txt
```
すると、違いがある箇所は、「＋」と「ー」で表記され、違いがわかる。差分がなく全く同じである場合は、「出力されない。」


全てのディレクトリからファイル名で検索する時のコマンド
test.txtは任意です。
```
find / -iname test.txt
```

ここまできたら、ディレクトリを削除していきます。（rootで実行します。）
test、test2ディレクトリを削除します。
```
rm -r test
```
これで練習で使ったディレクトリとファイルは消えるはずです！
以下は、その他の必要と思ったコマンド群です。





現在のhostnameやipアドレスを確認。
```
hostname -i
```
```
ip address show
```
特定のインターフェイスを確認する場合は次のとおり。
eth0は任意
```
ip address show eth0
```

DNSサーバーのアドレス確認
```
cat /etc/resolv.conf
```

ネットワーク経路（ホップ）の確認
※tracerouteではないことに注意。また、google.comは任意。
```
tracepath google.com
```
ひたすらに通信しますので、止めたい場合は「Ctrl+C」を押下しましょう。


現在開いているポートを確認。
```
ss -tuln
```

現在の全体のディスク使用量を確認。
```
df -Th
```

現在のディスク使用量をMバイトで確認する
```
ionice -c 2 -n 7 nice -n 19 du -scm /* | sort -rn
```

現在のバージョン確認
```
cat /etc/os-release
```

以下、サーバーに負荷をかけずにコマンドを実行したい時に先頭に付加するコマンド。「7」、「19」ともに優先度を一番低く設定して、コマンドを実行してくださいといったコマンド。
```
ionice -c 2 -n 7 nice -n 19
```


### さいごに
コマンドの基礎練習に是非使用してください。意図しないデータの削除にはお気をつけを！

今後は、ネットワークではなく、AWSに関する記事を中心に投稿します。
理由は今後記事にします！