ソフトウェア開発者にとって、Linuxとの接触は避けられません。Linuxには多数のコマンドが存在しますが、日常業務をこなすためには、よく使用するコマンドを習得するだけで十分です。ここでは、開発実務で最も頻繁に使用する32のコマンドをまとめました。
1. cd - ワーキングディレクトリの変更
最も基本的で頻繁に使用されるコマンドです。現在のディレクトリを変更するために使用します。引数には移動先のディレクトリパスを指定し、絶対パスと相対パスの両方が使用可能です。
cd /var/www # /var/wwwディレクトリに移動
cd ./project # カレントディレクトリのprojectサブディレクトリに移動
cd ../config # 親ディレクトリのconfigに移動
2. ls - ファイルとディレクトリの表示
ファイルとディレクトリの内容を表示する便利なコマンドです。主なオプション:
- -l:詳細情報(権限、所有者、サイズなど)を表示
- -a:隠しファイル(ドットで始まるファイル)を含むすべてのファイルを表示
- -h:ファイルサイズを人間が読みやすい形式(KB、MB、GB)で表示
- -R:サブディレクトリを再帰的に表示
ls -la # 詳細情報で隠しファイルを含めて表示
ls -lh # サイズを読みやすい形式で表示
tree -L 2 -I "node_modules" # ツリー構造で2階層まで表示、node_modulesを除外
3. grep - テキストパターン検索
テキストから特定のパターンを検索する強力なツールです。パイプと組み合わせて使用することが多いです。
- -i:大文字小文字を区別しない
- -v:パターンに一致しない行を表示
- -c:一致した行数をカウント
- -n:行番号を表示
ps aux | grep -i java # javaプロセスを検索(大文字小文字無視)
grep -n "error" app.log | head -20 # エラー行を先頭20行表示
4. cat - テキストファイルの内容表示
テキストファイルの内容を表示します。パイプと組み合わせてページャ(less、more)と共によく使用されます。
cat /proc/cpuinfo | grep "model name" # CPUモデル名を表示
cat -n config.properties | grep -i "port" # 設定ファイルのポート設定を表示
5. tail - ファイル末尾の表示
ファイルの末尾部分を表示します。-fオプションでリアルタイム監視が可能です。
tail -f /var/log/syslog # システムログをリアルタイム監視
tail -n 100 access.log # アクセスログの最後100行を表示
6. find - ファイル検索
柔軟なファイル検索コマンドです。様々な条件で検索可能です。
find /home -name "*.conf" -type f # .confファイルを検索
find /var -size +100M -mtime -7 # 100MB以上で7日以内に変更されたファイル
7. locate - 高速ファイル検索
データベースを使用した高速なファイル検索ツールです。
locate nginx.conf # nginx.confの位置を検索
sudo updatedb # データベースを更新
8. cp - ファイルコピー
ファイルやディレクトリをコピーします。
cp -r source_dir destination/ # ディレクトリを再帰的にコピー
cp -p file1 file2 # 属性を保持してコピー
9. scp - リモートファイルコピー
SSHを使用した安全なリモートファイル転送です。
scp file.tar user@remote:/backup/ # リモートサーバーにコピー
scp -r user@remote:/data/ ./local/ # リモートからディレクトリをコピー
10. vim - テキストエディタ
強力なテキストエディタです。
vim script.sh # スクリプトファイルを編集
# vim内での基本操作
# i: 挿入モード
# ESC: コマンドモード
# :wq: 保存して終了
# :q!: 保存せず終了
11. mv - ファイル移動とリネーム
ファイルを移動またはリネームします。
mv old_name.txt new_name.txt # ファイル名を変更
mv *.log archive/ # すべてのログファイルをarchiveディレクトリに移動
12. rm - ファイル削除
ファイルやディレクトリを削除します。注意して使用してください。
rm -rf temp/ # ディレクトリを強制削除(慎重に!)
13. ln - シンボリックリンク作成
ファイルやディレクトリのリンクを作成します。
ln -s /opt/app/bin/app /usr/local/bin/app # シンボリックリンク作成
14. chmod - ファイル権限変更
ファイルやディレクトリの権限を変更します。
chmod 755 script.sh # 実行権限を設定
chmod u+x deploy.sh # 所有者に実行権限を追加
15. chown - 所有者変更
ファイルの所有者とグループを変更します。
chown user:group file.txt # 所有者とグループを変更
chown -R www-data /var/www # 再帰的に所有者を変更
16. ps - プロセス表示
実行中のプロセスを表示します。
ps aux # すべてのプロセスを詳細表示
ps -ef | grep mysql # MySQLプロセスを検索
17. top - システムリソース監視
リアルタイムでシステムリソースを監視します。
top -u username # 特定ユーザーのプロセスを監視
# top実行中の操作
# M: メモリ使用順にソート
# P: CPU使用順にソート
# k: プロセス終了
18. kill - プロセス終了
プロセスにシグナルを送信して終了させます。
kill -9 1234 # PID 1234のプロセスを強制終了
kill -15 $(pidof httpd) # httpdプロセスを正常終了
19. tar - アーカイブと圧縮
ファイルのアーカイブと圧縮を行います。
tar -czf backup.tar.gz directory/ # ディレクトリをgzip圧縮
tar -xzf backup.tar.gz -C /tmp/ # /tmpに解凍
20. zip/unzip - ZIP圧縮
ZIP形式での圧縮と解凍です。
zip -r project.zip project/ # プロジェクトをZIP化
unzip project.zip -d /dest/ # 指定ディレクトリに解凍
21. curl - データ転送
様々なプロトコルでデータを転送します。
curl -X POST -H "Content-Type: application/json" \
-d '{"key":"value"}' https://api.example.com # API呼び出し
22. wget - ファイルダウンロード
Webからファイルをダウンロードします。
wget -c https://example.com/file.iso # レジューム機能付きでダウンロード
23. free - メモリ使用量表示
システムのメモリ使用状況を表示します。
free -h # 人間が読みやすい形式でメモリ情報を表示
24. df - ディスク使用量表示
ディスクの使用状況を表示します。
df -h # すべてのファイルシステムの使用量を表示
25. du - ディレクトリ使用量表示
ディレクトリのディスク使用量を表示します。
du -sh * | sort -rh | head -10 # サイズの大きいディレクトリTOP10
26. crontab - 定期タスク設定
定期的に実行するタスクを設定します。
crontab -e # crontab編集
# 毎日午前2時にバックアップ実行
0 2 * * * /usr/local/bin/backup.sh
27. history - コマンド履歴
実行したコマンドの履歴を表示します。
history | grep git # git関連のコマンド履歴を検索
28. which - コマンドの場所検索
コマンドのフルパスを表示します。
which python # pythonコマンドの場所を表示
29. useradd/userdel - ユーザー管理
ユーザーの追加と削除を行います。
sudo useradd -m -s /bin/bash newuser # 新規ユーザー作成
sudo userdel -r olduser # ユーザー削除(ホームディレクトリも削除)
30. passwd - パスワード変更
ユーザーのパスワードを変更します。
passwd # 現在ユーザーのパスワード変更
sudo passwd username # 特定ユーザーのパスワード変更
31. su/sudo - 権限昇格
ユーザー権限を変更します。
su - username # ユーザー切り替え
sudo command # 管理者権限でコマンド実行
32. netstat - ネットワーク接続表示
ネットワーク接続と統計を表示します。
netstat -tulpn | grep LISTEN # 待機中のポートを表示