🐈

10年間バックエンドエンジニアとして働いた人がよく使っているコマンド

2022/09/09に公開4

皆さんのよく使うコマンドの状況とかも知りたいので書いていただけると嬉しいです。

概ねデフォルトで入っているコマンドのみ記入してます。(gitとかは除外してます)
詳しいオプションやその他の使い方は別途調べるのが吉です。

これからコマンドを学ぶ人は
https://atmarkit.itmedia.co.jp/ait/articles/2104/28/news021.html
を参考にすると良いかと思いました。

調べなくてもコマンドを思い出せる

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

jwnrjwnr

ここ数年で「時代はサーバーレスでしょ」みたいな勢力がずいぶん増えた気もしますが…
結局後ろではサーバーが動いてるので、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 > hoge.txt
hogehoge
fugafuga

catが単独起動すると標準入力をエコーするだけの動きを使ったやり方です
この状態でctrl+cで抜けるとhoge.txtにコンソールで入力した内容がリダイレクトされるのでコピペでファイル作る時はエディタ使うよりこっちの方が楽だったりします

nishimnishim

これまでに上がっていないものだとlnですね。

余談
リンク先とリンク名どちらを先に指定するのかよくググっていましたが、「リンク先は必須だから先」という覚え方をしてからは不要になりました。