10年間バックエンドエンジニアとして働いた人がよく使っているコマンド
皆さんのよく使うコマンドの状況とかも知りたいので書いていただけると嬉しいです。
概ねデフォルトで入っているコマンドのみ記入してます。(gitとかは除外してます)
詳しいオプションやその他の使い方は別途調べるのが吉です。
これからコマンドを学ぶ人は を参考にすると良いかと思いました。
調べなくてもコマンドを思い出せる
ls
ファイル、フォルダ確認したい時
ls -la
cd
フォルダの移動がしたい時
pwd
カレントフォルダの確認
chmod
ファイル, フォルダの権限の書き換え
chmod 600 ~/.ssh/id_rsa
which
コマンドのパス確認
$ which ruby
/usr/local/var/rbenv/shims/ruby
mkdir
フォルダの作成
touch
タイムスタンプの更新。新規ファイルを作成
vim
ファイル編集
cat
ファイルの中身まとめて出力。
ファイルの中身が短いときによく使う。
less
ファイルの中身をちょっとずつ確認
tail
ファイルの末尾の内容を確認
-f オプションをつけるとリアルタイムに更新されるので、ログを監視したりするときによく使う
grep
標準出力を特定の文字列で抜き出す
$ sudo tail -f /var/log/nginx/access.log | grep status:404
逆にマッチしない文字列を抜き出したいときは -v オプションをつける
$ sudo tail -f /var/log/nginx/access.log | grep -v status:404
df
ディスクの使用量のを確認
$ df -h
ファイルシス   サイズ  使用  残り 使用% マウント位置
/dev/xvda1       7.8G  2.6G  5.2G   34% /
devtmpfs         490M   56K  490M    1% /dev
tmpfs            499M     0  499M    0% /dev/shm
top
リアルタイムにPCの使用状況をモニタリングする
sudo
ルートユーザーの権限でコマンドを実行する。(ルートユーザー以外の権限でも実行出来る)
export
環境変数を設定する
env
現在の環境変数を一覧する
source
ファイルに書いてあるコマンドを実行する。
.bash_profile や .bashrc を編集した際によく使う。
$ source ~/.bash_profile
whois
ドメインの所有者情報等を確認
$ whois example.com
dig
ドメインの設定されているレコードを確認
以下はmxレコードの確認する時。
$ dig example.com mx
ps
実行中のプロセスを表示。
auxオプションをつけて全プロセスを表示して使う事が多い。
$ ps aux
kill
プロセスの終了
ssh
リモートのサーバーに接続する
scp
sshで接続出来るサーバーからファイルをダウンロードする
man
コマンドの使い方を調べる
$ man ls
uniq
標準入力の重複行を除外する
sort
行の並び替え
mv
ファイルの移動
rm
ファイルの削除
shutdown
サーバーを再起動したり
echo
標準出力に文字を表示する
- |
- <
- >
- >>
ショートカット
- ctrl + a
 - ctrl + e
 
たまにしか使わないから毎回調べてる
- find
 - screen
 - chown
 - crontab
 - rsync
 - wc
 - du
 - yum
 - tar
 - zip
 - unzip
 - gzip
 - curl
 - wget
 - awk
 
Discussion
ここ数年で「時代はサーバーレスでしょ」みたいな勢力がずいぶん増えた気もしますが…
結局後ろではサーバーが動いてるので、CLIいじってた人間の方がサーバーレスの使いこなしも上手いですし、エラー対処等も速い気がしますね。
rsync は何年か前に cp, scp を切って以降お世話になってます。find は毎回調べる状況を脱却できる気がしません。。。
一通り読んで思ったことと私がよく使うコマンド
envは実行するコマンドに対して一時的に環境変数設定して実行する用途のものだから環境変数を確認する目的ならprintenvを使う方が良いと思います個人的には
sourceは冗長だから.をよく使いますuniqはソート済みの入力じゃないと動作しない事は書いといたほうが良いかも、ちなみに
-cとかパラメータ特に付けないならsort -uが楽です書かれてないやつで思いつくのだと
date,exec,sed,bc,getent,od,tar,head,diff,tr,yes,tee,xargs,dd,bg,fg,jobs,pv,sysctl,systemctl,journalctl,service,ip,md5sum,apt,dpkg,flatpak,snap,chownらへんを結構使いますね
yumがあるあたりRH系だと思うからdnf書いといた方が良いかもパイプとリダイレクト以外にもプロセス置換
<(command)とヒアドキュメント<<[-]wordも便利なのでよく使いますショートカットの
ctrl + a,ctrl + eはbashのカーソル移動のことだと仮定して話しますがctrl+cコマンド終了ctrl+zコマンド停止ctrl+rコマンド履歴ctrl+uカーソル前を消すctrl+wカーソル前の1単語消すも便利なのでよく使います
おまけ
私がコピペで新規ファイル作る時によくやる方法
catが単独起動すると標準入力をエコーするだけの動きを使ったやり方です
この状態でctrl+cで抜けるとhoge.txtにコンソールで入力した内容がリダイレクトされるのでコピペでファイル作る時はエディタ使うよりこっちの方が楽だったりします
tcpdump
strace
netstat
lsof
telnet
nc
and so on
これまでに上がっていないものだと
lnですね。余談
リンク先とリンク名どちらを先に指定するのかよくググっていましたが、「リンク先は必須だから先」という覚え方をしてからは不要になりました。