0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

新しいサーバーやDockerコンテナに入るたびに、基本的な操作のコマンドをいちいちググり直すのがストレスだったので、自分用に逆引き形式でまとめました。「これをしたいときは、このコマンド」という並びです。全部を暗記するつもりはなく、忘れたらこのメモを検索すれば出てくる、くらいの気持ちで運用しています。

ファイル・ディレクトリの基本操作

やりたいこと コマンド
現在地を確認したい pwd pwd
ディレクトリの中身を見たい ls ls -la
ディレクトリを移動したい cd cd /var/log
1つ上の階層に戻りたい cd .. cd ..
ホームディレクトリに戻りたい cd / cd ~ cd
ディレクトリを作りたい mkdir mkdir -p a/b/c
空のファイルを作りたい touch touch memo.txt
ファイル・ディレクトリをコピーしたい cp cp -r src/ dst/
ファイル・ディレクトリを移動/名前変更したい mv mv old.txt new.txt
ファイルを削除したい rm rm file.txt
ディレクトリを削除したい rm -r / rmdir rm -rf dir/
ファイルの実体(リンク先)を調べたい readlink -f readlink -f link
シンボリックリンクを作りたい ln -s ln -s /path/target link

rmdirは中身が空のディレクトリしか消せません(試すとDirectory not emptyで怒られます)。中身ごと消したいときはrm -r(確認なしで一気にやるなら-rf)を使いますが、rm -rfは打ち間違えると本当に痛い目を見るので、実行前にカーソルの位置とパスを二度見する癖をつけています。特にパスを変数で組み立てているとき(rm -rf $DIR/*のような書き方)は、$DIRが空文字だと/*になってルート直下を巻き込みかねないので要注意です。

ファイルの中身を見る・編集する

やりたいこと コマンド
ファイルの中身を全部表示したい cat cat file.txt
長いファイルをスクロールしながら見たい less less file.txt
ファイルの先頭だけ見たい head head -n 20 file.txt
ファイルの末尾だけ見たい tail tail -n 20 file.txt
ログをリアルタイムで追いたい tail -f tail -f app.log
ファイルの行数・単語数・文字数を数えたい wc wc -l file.txt
ファイルの中身を検索したい grep grep -n "error" file.txt
再帰的にディレクトリ内を検索したい grep -r grep -r "TODO" ./src
テキストエディタで編集したい nano / vim nano file.txt
ファイルを並べ替えたい sort sort -n numbers.txt
重複行を消したい uniq sort file.txt | uniq
特定の列だけ取り出したい cut cut -d ',' -f 1 file.csv
文字列を置換したい sed sed 's/foo/bar/g' file.txt
列指向の処理をしたい awk awk '{print $1}' file.txt
差分を見たい diff diff file1 file2

grep-i(大文字小文字を無視)と-v(マッチしない行を出す)もセットで覚えておくと守備範囲が一気に広がります。sed-iをつけるとファイルを直接書き換えられて便利ですが、バックアップを取らずに使って痛い目を見たことがあるので、心配なときはsed -i.bakのようにバックアップ付きにするか、一度-iなしで出力を確認してから上書きするようにしています。uniqは隣り合った重複行しか消さないので、sortを挟むのがほぼお約束です。

検索

やりたいこと コマンド
ファイル名でファイルを探したい find find . -name "*.log"
更新日時で絞り込んで探したい find find . -mtime -1
コマンドの場所を知りたい which which python3
コマンドの詳細な場所・マニュアルを知りたい whereis whereis ls

権限・所有者

やりたいこと コマンド
ファイルの権限を変更したい chmod chmod 755 script.sh
ファイルの所有者を変更したい chown chown user:group file.txt
管理者権限でコマンドを実行したい sudo sudo apt update
一時的に管理者になりたい su su -

権限まわりで一番やりがちな事故は、「動かないから」という理由でchmod 777にしてしまうことだと思います。一瞬解決した気にはなりますが、誰でも書き込めてしまう状態になるので、本来は所有者・グループを直すか755644あたりに留めるのが筋です。

プロセス・システム管理

やりたいこと コマンド
実行中のプロセスを見たい ps ps aux
プロセスをリアルタイムで監視したい top / htop htop
プロセスを終了させたい kill kill -9 12345
名前でプロセスを終了させたい pkill pkill -f node
コマンドをバックグラウンドで動かしたい & / nohup nohup command &
ジョブの状態を確認したい jobs jobs
バックグラウンドのジョブをフォアグラウンドに戻したい fg fg %1

topはほぼどのサーバーにも最初から入っているので確認用には安心ですが、見やすさでいうとhtopが個人的には好みです(入っていないことも多いので、結局apt install htopする場面がよくあります)。あとkillはいきなり-9(SIGKILL)を打つ癖がついている人が多い印象ですが、本来はシグナルなしのkill(SIGTERM、行儀よく終了する猶予を与えるシグナル)を試してからでも遅くありません。-9は本当に効かないときの最終手段、くらいに考えています。

ディスク・容量

やりたいこと コマンド
ディスクの空き容量を見たい df df -h
ディレクトリ・ファイルのサイズを見たい du du -sh ./*
マウント状況を確認したい mount mount | grep sda

「ディスクが急に埋まった」系のトラブルは、df -hで空き容量を確認してから、du -sh ./*で怪しいディレクトリに潜っていくのがいつものパターンです。

圧縮・アーカイブ

やりたいこと コマンド
tar.gzにまとめたい tar tar czvf archive.tar.gz dir/
tar.gzを展開したい tar tar xzvf archive.tar.gz
zipにまとめたい zip zip -r archive.zip dir/
zipを展開したい unzip unzip archive.zip

tarのオプションはczvfxzvfさえ覚えておけば大抵の場面はしのげます(作るときはc、展開するときはx、あとは共通というだけの話です)。

ネットワーク

やりたいこと コマンド
疎通確認をしたい ping ping google.com
ファイルをダウンロードしたい wget / curl curl -O https://example.com/file
APIにリクエストを送りたい curl curl -X POST -d '{}' url
開いているポートを確認したい ss / netstat ss -tulnp
SSHで接続したい ssh ssh user@host
リモートにファイルを転送したい scp scp file.txt user@host:/path/

netstatは最近のディストリだと最初から入っていないことが増えてきた気がするので、今はssの方を先に試すようにしています。

パッケージ管理(Debian/Ubuntu系)

やりたいこと コマンド
パッケージ一覧を更新したい apt update sudo apt update
パッケージをインストールしたい apt install sudo apt install curl
パッケージを削除したい apt remove sudo apt remove curl
インストール済みパッケージを更新したい apt upgrade sudo apt upgrade

apt updateはパッケージリストを最新化するだけで、実際にソフトを更新するのはapt upgradeです。ここを混同して「updateしたのに古いまま」と焦った記憶があります。

環境変数・シェル

やりたいこと コマンド
環境変数を確認したい echo echo $PATH
環境変数を一覧表示したい env env
環境変数を設定したい export export MY_VAR=value
コマンド履歴を見たい history history
エイリアスを設定したい alias alias ll='ls -la'
シェルを終了したい exit exit

exportでその場で設定した変数はシェルを閉じると消えるので、ずっと使いたいなら.bashrc.zshrcに書いておくのを忘れずに。aliasも同じです。

ユーザー情報

やりたいこと コマンド
今のユーザー名を知りたい whoami whoami
ユーザーIDやグループを知りたい id id
ログイン中のユーザー一覧を見たい who / w w

その他便利系

やりたいこと コマンド
コマンドの使い方(マニュアル)を見たい man man ls
前のコマンドの終了ステータスを確認したい echo $? echo $?
2つのコマンドを繋げて実行したい |(パイプ) ls | grep txt
コマンドの出力をファイルに保存したい > / >> ls > list.txt
標準入力からコマンド引数を作りたい xargs find . -name "*.tmp" | xargs rm
システムを再起動したい reboot sudo reboot
システムをシャットダウンしたい shutdown sudo shutdown -h now

>は上書き、>>は追記です。ログファイルのつもりで>を使って中身を消し飛ばした経験がある人は多いはず(自分も一度やりました)。find ... | xargs rmは強力な分、まずfindだけを実行して対象が想定通りか確認してからxargs rmをつなげるようにしています。


思い出したら随時追記していくメモなので、抜けているコマンドに気づいたら都度足していく予定です。困ったときはとりあえずman <コマンド名><コマンド名> --helpを叩けば大体何とかなります。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?