覚えておきたいLinuxコマンドだいたい70個

# 覚えておきたいLinuxコマンド一覧

だいたい70個をゆる～く書きます。

## 【ディレクトリ、ファイル移動系】
:::note info
cd
チェインジディレクトリ。
ひとつ前のディレクトリに戻る「cd -」は便利。
windowsでもcd
:::

:::note info
ls
ファイルとかディレクトリを一覧表示。ls -lに相当するllを知らないのは論外。
作成日でソート表示も覚えておきたい（ls -trl）
windowsならdir
:::

:::note info
pwd
今どこにいるんだっけ？
プリントワーキングディレクトリ
windowsならcd
:::

:::note info
mkdir
ディレクトリ作成
windowsでもmkdir
:::

:::note info
rm
削除。rm /は絶対にしないように！最恐のLinuxコマンド
ディレクトリ配下を再帰的に削除したいなら、rm -r ディレクトリ
windowsならdel
:::

:::note info
rmdir
空のディレクトリしか消せないので使う機会なし
windowsでもrmdir
:::

:::note info
cp
コピー。windowsの感覚と違って、-pのオプションをつけないと、更新日時とか引き継がれない。
windowsならcopy
:::

:::note info
mv
移動と名前変更。rmほどではないけど操作には気を付けたいコマンド
windowsならmove、ren
:::

:::note info
dir
lsがあるので使う機会なし
windowsでもdir
:::

:::note info
tree
ファイル、ディレクトリをツリー状に表示
:::


## 【ファイル閲覧・編集系】
:::note info
less
tail、vi、viewと並んでファイルの中身を見たいときによく使う。moreの上位互換。
1行が長いとき、less -Sで画面幅より長い行を折り返さないように表示させるのをよく使ってました。

:::

:::note info
tail
ファイルの末尾を表示。ログ解析で使いまくる。
ファイルの最後行から100行見たいなら、tail -n 100 ファイル名
ファイルの追記を監視するtail- fは必須の知識
※たまに利いてくれないときあるけど。
:::

:::note info
head
ファイルの先頭を表示。tailよりは使用頻度は低いが必須の知識
ファイルの先頭から100行見たいなら、head -n 100 ファイル名
ちなみにheadとtailをパイプでつなげば、ファイルの中間の範囲を抽出することができます
:::

:::note info
more
lessの劣化版。敢えて使う機会なし？
:::

:::note info
sed
置換。たくさんの設定ファイルの値を書き換えたいときに便利。
書き方が少し複雑なので慣れるのに時間がかかるイメージ。使いこなせるとエンジニア力が上がる。
:::


:::note info
cat
ファイルの中身表示
windowsならtype
:::

:::note info
view
ファイルの中身表示
:::

:::note info
diff
差分表示。あまり見方がよくわかっていない。
windowsならcomp
:::

:::note info
diff3
3つのファイルの差分表示。1回も使ったことない。
:::

:::note info
tee
コンソールに出力したいしファイルにも出力したいという欲張りなコマンド
:::

:::note info
touch
タイムスタンプを変更。
ファイルがない場合は、空ファイルを作成する挙動になる。
:::

:::note info
vi
ファイル編集の仕方は覚えておこう！
:::

:::note info
vim
viとの違いがわかってないです。ごめんなさい
:::

:::note info
cut
切り出し。
ログファイルで1行がめっちゃ長いときに、指定文字までだけを表示したいという場合に使ったりする
:::

:::note info
nl
テキストファイルを行番号付きで出力
:::


## 【権限系】
:::note info
chmod
権限変更。数字の法則は覚えておきたい
windowsだとcacls
:::

:::note info
chown
所有者変更。
windowsだとtakeown
:::

:::note info
chgrp
所有グループ変更
:::

:::note info
su
ユーザ変更。安易にrootになるなってよく言われる。
私はずっとswitch userの略だと勘違いしていましたが、正しくはsubstitute userの模様。
指定したユーザ（デフォルトはroot）のパスワードを要求される。
sudoと異なり、ユーザの環境を完全に切り替える。
:::

:::note info
sudo
現在のユーザのパスワードで特定のコマンドをroot権限で実行する。
どのユーザがどのコマンドをsudoで実行できるかは、/etc/sudoersで定義する。
suと違い、sudo は細かいセキュリティ制御ができるのが長所。

なお、sudo su は、現在のユーザのパスワードを使用してrootユーザに切り替えるというある意味チートなコマンド。
:::


## 【取得・表示系】
:::note info
echo
単なる表示
シェルスクリプトの中で確認のためによく使われる
windowsでもecho
:::

:::note info
date
時刻表示。UTCなのかJSTなのかは大事。JSTとUTCが脳内ですぐ変換できるように慣れよう。
windowsだとdate、time
:::

:::note info
cal
カレンダー表示。
趣味でしか使ったことない
:::

:::note info
whoami
私はだあれ？を確認。
ターミナルで打鍵する機会はほぼなく、専らシェルスクリプトで使われるコマンドでしょう。
windowsでもwhoami
:::

:::note info
man
マニュアル表示
気づいたらブラウザの方で検索してるので使う機会なし
windowsだとhelp
:::

:::note info
clear
コンソールをクリアする。
コントロール+Lのショートカットがあるので存在が無意味なコマンド。
windowsならcls
:::

:::note info
df
ディスク使用率とかを表示。
ログファイルでディスクが満杯になってサーバが落ちたことがありました。（一度落ちると復旧が面倒。）
df -kでキロバイト単位で表示。
df -hでギガバイト単位で表示。
:::

:::note info
du
ディスク使用率とかを表示。
dfとの違いはよくわかっていないが、duの方が高機能なイメージ
:::

:::note info
last
ログイン履歴表示。
趣味でしか使ったことない
:::

:::note info
history
コマンド履歴表示。
他の人が打ったコマンドを見ることは勉強にもなる。
history 10で直近実行した10件を表示。
「!履歴番号」は覚えておこう
windowsならF7、doskey/history
:::

:::note info
time
「time コマンド名」で、コマンドの実行時間を計測できる。
シェルスクリプトとかの実行時間を計測するときに使ったり。
:::

:::note info
netstat
ネットワークの接続状況を確認
:::

:::note info
ifconfig
ネットワークの接続状況を確認
windowsならipconfig
:::

:::note info
wc
行数とか文字数とかバイト数を表示。
数千行のログファイルからエラー件数を得たいときに使ったりする

ファイルの行数を知りたいなら、wc -l ファイル名
ファイル内の文字数を取得したいなら、wc -m ファイル名
:::

## 【プロセス管理系】

:::note info
ps
実行中のプロセスを確認。
PIDは一意ではあるが、使いまわされることがあるので注意。
ps -ef、ps-auxでおまじないとして覚えてます
windowsだとtasklist
:::

:::note info
pstree
プロセスの親子関係を確認。
プロセスをkillするとき、どれからkillすればいいか探るときとかにも使う
:::

:::note info
kill
ps、pstreeで表示されたPIDもしくはPPIDを渡してkillします。
シグナル15とかシグナル9とか言われて普通に会話できるようになろう。

オプションつけないとシグナル15（SIGTERM）になります。
9（SIGKILL）は強制終了です。
が、、場合によってはシグナル9でもプロセスを殺せないこともあります。
シグナル0という、プロセスの生存確認に使うオプションもあります。
:::

:::note info
killall
プロセスを全部殺す。
:::

:::note info
nohup
バックグラウンド実行。ウィンドウを閉じても実行が継続される。
意外とLinuxコマンド一覧の検索結果に出てこなかったりするが、知識としては必須レベル
:::

:::note info
jobs
実行中のジョブをリスト表示。
ジョブとはシェルを実行する作業単位で、プロセスよりも大きい概念。
:::

:::note info
fg
フォアグラウンド実行。
使ったことない
:::

:::note info
bg
バックグラウンド実行。
一旦フォアグラウンドで動作しているジョブを停止させてからバックグラウンドで動作させる。
※最初からバックグラウンド実行させるためには、bgコマンドではなく、そのコマンド入力時に入力内容の最後に&を入力する。
:::

:::note info
crontab
クーロンの設定、確認をする。
:::

## 【その他】
:::note info
exit
いま入っているユーザからログアウトしたりターミナルを終了
:::

:::note info
sh
シェルスクリプトを実行
:::

:::note info
bash
高機能版sh
:::

:::note info
watch
コマンドを一定間隔で繰り返し実行
whileとsleepで周期実行したことはあってもwatchは使ったことない。。。
:::

:::note info
zip
zipします
:::

:::note info
unzip
zipを解凍します
:::

:::note info
tar
圧縮、解凍します。
まともに使ったことないです
:::

:::note info
find
ファイルやディレクトリを検索。
find ./ -name sample.txt
で、ファイル名が「sample.txt」と完全一致するものを表示する。
部分一致検索したいならアスタリスク使って
find ./ -name samp*
という感じ
:::

:::note info
grep
ファイル中の文字列に対して正規表現を使って検索。
ログ解析でこれを知らないのは論外。
ログ解析以外でも例えばpsコマンドなど表示系のコマンドと組み合わせて使う
（例）
history | grep 検索ワード
ps -ef | grep "sh foo.sh"

windowsだとfind
:::

:::note info
ping
ネットワーク疎通確認
windowsでもping
:::

:::note info
sleep
指定した時間だけ処理を遅延。
whileと併用すると周期実行できる
:::

:::note info
yum
RPMパッケージ”を扱うためのパッケージ管理コマンド。
まだ使ったことない
:::

:::note info
free
メモリの使用状況を表示
:::

:::note info
curl
なんかめっちゃよく聞く
よくわからないまま使ってました。。。
:::

:::note info
while
ほわいる
例：while true ; do date; sleep 3 ; done
※（OSの設定によるかもしれないが）Broken Pipeにも勝てるので、接続切れ対策としても使える
:::

:::note info
scp
SSHプロトコルで安全にファイルを転送
:::

:::note info
ssh
リモート端末にSSHでログイン
:::

:::note info
expr
計算式や論理式を評価する
なんかシェルスクリプトの中で見たけどよくわかってない
:::

:::note info
iptables
パケットフィルタの設定を行う。
iptables -Fを本番環境で打って大失敗したという話を聞いたことがあります。。
:::

以上です。勉強したら書き足すかもしれないです。

----------