ファイル操作・ネットワーク管理・システム監視・自動化など、知っていると「デキる人」と思われる実践的なコマンドを厳選 対応OS:Windows / macOS / Linux

解析

前回の記事では、セキュリティ・効率化・トラブル対応のコマンドを紹介しました。本記事はその続編として、まだまだ知られていない便利なコマンドを新たにピックアップしています。ファイル操作・ネットワーク管理・システム監視・自動化など、知っていると「デキる人」と思われる実践的なコマンドを厳選しました。

コマンド操作に慣れると、GUIでは実現しにくい細かな制御や大量処理の自動化が可能になります。初心者の方はまず読むだけでもOK。ぜひ使えそうなものから試してみてください。


目次

  1. 【ファイル操作編】知らないと損するファイル管理コマンド
  2. 【ネットワーク管理編】接続・設定を自在にコントロールする
  3. 【システム監視・管理編】パソコンの状態を把握するコマンド
  4. 【自動化・応用編】作業を自動化するコマンドテクニック
  5. まとめ

【ファイル操作編】知らないと損するファイル管理コマンド

ファイルの整理・変換・比較といった作業は、GUIよりコマンドのほうが圧倒的に速いケースが多くあります。特に大量ファイルの一括処理では、コマンドの効果が際立ちます。

① xcopy / cp -r — フォルダごと構造を保ってコピーする

単純なコピー&ペーストとは異なり、フォルダ構造・タイムスタンプ・属性を維持したままコピーできます。特定の拡張子だけを選んでコピーする場合にも有効です。

Windows(コマンドプロンプト):

xcopy C:\Projects\MyApp D:\Archive\MyApp /E /H /Y
xcopy C:\Logs\*.log D:\LogBackup\ /Y /D

/Eは空フォルダも含めて再帰コピー、/Hは隠しファイルも対象、/Yは上書き確認をスキップ、/Dは更新されたファイルのみコピーします。

macOS / Linux:

cp -r ~/Projects/MyApp /Volumes/Backup/MyApp
cp -ru ~/Documents /Volumes/Backup/Documents

-rは再帰コピー、-uはコピー先より新しいファイルのみコピー(差分バックアップ)です。

② rename / mv — ファイルを一括リネームする

デジタルカメラで撮影した写真ファイルや、連番ファイルのまとめてリネームはコマンドが最も効率的です。

Windows(コマンドプロンプト):

ren *.JPG *.jpg
ren IMG_????.jpg photo_????.jpg

Windows(PowerShell)― より高度なリネーム:

Get-ChildItem *.txt | Rename-Item -NewName { $_.Name -replace "old","new" }
Get-ChildItem *.jpg | ForEach-Object { Rename-Item $_ -NewName ("photo_{0:D4}.jpg" -f [int]($_.BaseName -replace '\D','')) }

macOS / Linux:

for f in *.JPG; do mv "$f" "${f%.JPG}.jpg"; done
rename 's/IMG_/photo_/' *.jpg   # renameコマンドがある場合

💡 FACT: WindowsのPowerShellに搭載されているRename-Itemは正規表現に対応しており、複雑なルールでの一括リネームが可能です。MicrosoftのPowerShellドキュメントでは、ファイル管理の自動化における主要コマンドの一つとして紹介されています。

③ diff / Compare-Object — ファイルの差分を比較する

2つのファイルやフォルダの違いを確認するコマンドです。設定ファイルを変更した前後の比較や、テキストの改版チェックに役立ちます。

macOS / Linux:

diff file_old.txt file_new.txt
diff -u config.old.conf config.new.conf   # unified形式(読みやすい)
diff -rq /dir1 /dir2                      # フォルダ同士の差分確認

-uオプションで変更前後の行が「-」と「+」で色付きで表示されます。-rでフォルダを再帰的に比較できます。

Windows(PowerShell):

Compare-Object (Get-Content old.txt) (Get-Content new.txt)
Compare-Object (Get-ChildItem C:\Dir1) (Get-ChildItem C:\Dir2) -Property Name

④ wc / Measure-Object — テキストの文字数・行数を数える

ライターや文書作成者に特に便利なコマンドです。ファイルの行数・単語数・バイト数を瞬時に確認できます。

macOS / Linux:

wc -l filename.txt       # 行数
wc -w filename.txt       # 単語数
wc -c filename.txt       # バイト数
wc -l *.log | sort -rn   # 複数ファイルの行数を多い順に表示

Windows(PowerShell):

(Get-Content .\document.txt).Count             # 行数
(Get-Content .\document.txt) -join " " | Measure-Object -Word  # 単語数

⑤ zip / tar — ファイルを圧縮・解凍する

GUI操作なしで圧縮・解凍ができます。サーバー作業やスクリプトからの呼び出しでは必須の知識です。

macOS / Linux(tar):

tar -czf archive.tar.gz /path/to/folder   # 圧縮(gzip)
tar -xzf archive.tar.gz -C /destination  # 解凍先を指定して展開
tar -tzf archive.tar.gz                  # 中身を確認(展開せず)

Windows(PowerShell):

Compress-Archive -Path C:\folder -DestinationPath C:\archive.zip
Expand-Archive -Path C:\archive.zip -DestinationPath C:\output

💡 FACT: tarはもともとテープアーカイブ(Tape ARchive)の略で、1970年代のUnixから使われている歴史あるコマンドです。現在はgzip/bzip2/xzなど様々な圧縮形式と組み合わせて使えるため、Linux/macOSのファイル圧縮では事実上の標準として使われ続けています。


【ネットワーク管理編】接続・設定を自在にコントロールする

総務省の「通信利用動向調査」によると、国内のインターネット利用率は2023年時点で84.9%に達しています。Wi-FiやVPN・DNSなど、日常的に使うネットワーク環境をコマンドで把握・管理できると、トラブル対応のスピードが飛躍的に上がります。

① nslookup / dig — DNSの名前解決を詳しく調べる

「このドメインはどのIPアドレスに紐づいているか」「DNSの設定は正しいか」を調べるコマンドです。

Windows / macOS / Linux 共通(nslookup):

nslookup google.com
nslookup google.com 8.8.8.8   # Googleの公共DNSサーバーを使って調べる
nslookup -type=MX example.com # MXレコード(メールサーバー情報)を調べる

macOS / Linux(dig):

dig google.com
dig @8.8.8.8 google.com A     # Aレコード(IPv4)をGoogleDNSで確認
dig google.com MX +short       # メールサーバーのみを簡潔に表示

特定のサイトにだけアクセスできない場合、nslookupでDNS解決が正常かを確認するのが定石です。

② arp — ネットワーク上のデバイスを一覧する

ARP(Address Resolution Protocol)のキャッシュを表示するコマンドです。同じLAN上に接続されているデバイスのIPアドレスとMACアドレスを確認できます。

Windows / macOS / Linux 共通:

arp -a

不審なMACアドレスが表示された場合、ネットワークへの不正デバイス接続が疑われます。家庭の無線LANセキュリティチェックにも使えます。

③ curl — Webサーバーとの通信をテストする

curlはURLを指定してHTTP/HTTPS通信をコマンドラインで行うツールです。WebサービスのAPI動作確認やダウンロードなどに広く使われています。

Windows / macOS / Linux 共通:

curl https://example.com
curl -I https://example.com          # HTTPヘッダーのみ取得
curl -o output.html https://example.com  # ファイルとして保存
curl -L https://short.url/redirect   # リダイレクトを追跡

API開発者が多用するコマンドですが、「このサイトがダウンしているのか、自分のネット接続が悪いのか」を素早く確認する用途でも便利です。

💡 FACT: curlはWindows 10 バージョン1803(2018年)以降、OS標準コマンドとして搭載されています。それ以前はインストールが必要でしたが、現在は特別なセットアップなしにすぐ使えます。

④ ssh — リモートサーバーに安全に接続する

SSH(Secure Shell)は、遠隔地のサーバーやパソコンに暗号化通信で接続するコマンドです。フリーランスのエンジニア・Web担当者・在宅勤務者など、リモートワーク環境では特に重要な知識です。

Windows(PowerShell)/ macOS / Linux 共通:

ssh username@192.168.1.10
ssh username@server.example.com -p 2222   # ポート指定
ssh -i ~/.ssh/id_rsa username@server.com  # 鍵認証で接続

鍵認証(パスワードなし接続)を設定しておくと、毎回のパスワード入力が不要になり、セキュリティも向上します。

⑤ netsh — Windowsのネットワーク設定を詳細に管理する

Windowsのネットワーク設定を細かく制御できる強力なコマンドです。Wi-Fiの接続情報確認からファイアウォール設定まで対応しています。

Windows(コマンドプロンプト / PowerShell):

netsh wlan show profiles                    # 過去に接続したWi-Fi一覧
netsh wlan show profile name="Wi-Fi名" key=clear  # Wi-Fiパスワードを表示
netsh advfirewall show allprofiles          # ファイアウォール設定の確認
netsh int ip reset                          # TCP/IP設定をリセット

⚠️ Wi-Fiパスワードを表示するコマンドは自分が管理するPCのみで使用してください。他者のPCへの無断使用は不正アクセス禁止法に抵触する可能性があります。


【システム監視・管理編】パソコンの状態を把握するコマンド

「なんとなく重い」「なぜかファンが回り続ける」「バッテリーの減りが早い」――そんな漠然とした不満も、コマンドで具体的な数値として可視化することで原因が見えてきます。

① systeminfo / system_profiler — システム情報を一括取得する

OSのバージョン・搭載メモリ・ネットワークアダプター情報などをまとめて表示します。PCのスペック確認やサポート依頼時に重宝します。

Windows(コマンドプロンプト):

systeminfo
systeminfo | findstr /C:"OS Name" /C:"Total Physical Memory"

macOS:

system_profiler SPSoftwareDataType SPHardwareDataType
sw_vers   # macOSのバージョンのみ

Linux:

uname -a
cat /etc/os-release
lshw -short   # ハードウェア情報(要インストールの場合あり)

② wmic / Get-WmiObject — より詳細なハードウェア情報を取得する

CPU・ディスク・BIOS情報など、より深いレベルのハードウェア情報を取得できます。

Windows(コマンドプロンプト):

wmic cpu get name, NumberOfCores, MaxClockSpeed
wmic diskdrive get model, size, status
wmic bios get serialnumber, version

Windows(PowerShell):

Get-WmiObject Win32_Processor | Select-Object Name, NumberOfCores, MaxClockSpeed
Get-WmiObject Win32_DiskDrive | Select-Object Model, Size, Status

PCのシリアル番号は保証登録やサポート問い合わせで必要になることがあります。wmic bios get serialnumberで本体を裏返さずに確認できます。

③ powercfg — バッテリーと電源を詳細に分析する

ノートパソコンユーザーに特におすすめのコマンドです。バッテリーの劣化状況や、電力を大量消費しているアプリケーションを特定できます。

Windows(管理者権限のコマンドプロンプト):

powercfg /batteryreport /output C:\battery_report.html
powercfg /energy /output C:\energy_report.html
powercfg /sleepstudy

batteryreportはバッテリーの設計容量・現在の最大容量・充電履歴をHTMLレポートとして出力します。バッテリーが設計容量の80%以下に劣化していれば交換の目安です。

💡 FACT: Microsoftの公式ドキュメントによると、powercfg /batteryreportで生成されるレポートには過去30日間のバッテリー使用・充電サイクルが記録されており、Windows 8以降で使用可能です。バッテリー寿命の診断ツールとしてメーカーサポートでも活用されています。

④ taskkill / kill — 応答しないプロセスを強制終了する

フリーズしたアプリケーションをタスクマネージャーを使わずに終了させます。特定の名前のプロセスを一括終了させることもできます。

Windows(コマンドプロンプト):

taskkill /IM notepad.exe /F
taskkill /PID 1234 /F
taskkill /IM chrome.exe /F /T   # 子プロセスも含めて終了

macOS / Linux:

kill -9 1234             # PIDを指定して強制終了
killall "Google Chrome"  # プロセス名で終了
pkill -f "python script.py"  # パターンマッチで終了

⑤ sc / launchctl — サービスの起動・停止を管理する

バックグラウンドで動くサービスを手動で起動・停止・無効化できます。不要なサービスを停止することで、パソコンの動作が軽くなることもあります。

Windows(管理者権限のコマンドプロンプト):

sc query                          # サービス一覧を表示
sc query wuauserv                 # Windows Updateサービスの状態確認
sc stop wuauserv                  # サービスを停止
sc start wuauserv                 # サービスを起動
sc config wuauserv start=disabled # サービスを無効化

macOS:

launchctl list                    # 起動中のサービス一覧
sudo launchctl stop com.apple.mDNSResponder  # サービス停止

Linux(systemd):

systemctl status nginx
sudo systemctl start nginx
sudo systemctl stop nginx
sudo systemctl enable nginx   # 自動起動を有効化

【自動化・応用編】作業を自動化するコマンドテクニック

コマンドの真価は「組み合わせ」と「自動化」にあります。単体のコマンドを組み合わせることで、毎日繰り返している手作業をスクリプト一本に置き換えられます。経済産業省の調査では、国内企業のDX推進における課題として「定型業務の自動化」が上位に挙がっており、コマンドによる自動化はその最もシンプルな第一歩です。

① パイプ(|)— コマンドの出力を次のコマンドに渡す

パイプ記号|を使うことで、複数のコマンドをつないで処理を連鎖させられます。

共通例:

# ログファイルからエラーのみ抽出して行数を数える(macOS/Linux)
grep "ERROR" app.log | wc -l

# 実行中プロセスをCPU使用率順に並べて上位5件表示(macOS/Linux)
ps aux | sort -k3 -rn | head -5

# Windowsで大きいファイルTOP10を表示(PowerShell)
Get-ChildItem C:\ -Recurse | Sort-Object Length -Descending | Select-Object -First 10 Name, Length

② リダイレクト(> / >>)— 出力をファイルに保存する

コマンドの実行結果をテキストファイルとして保存します。ログ収集やレポート作成に活用できます。

# 上書き保存(>)
systeminfo > C:\system_info.txt
ipconfig /all > network_info.txt

# 追記保存(>>)
echo "実行日時: %DATE% %TIME%" >> backup.log
netstat -an >> network_log.txt

バッチファイルやシェルスクリプトに組み込むことで、毎日の実行ログを自動で蓄積できます。

③ schtasks / crontab — タスクを定期的に自動実行する

特定のコマンドやスクリプトを、設定した時間に自動で実行する仕組みです。バックアップや定期メンテナンスの自動化に使われます。

Windows(コマンドプロンプト):

# 毎日22:00にバックアップスクリプトを実行
schtasks /create /tn "DailyBackup" /tr "C:\Scripts\backup.bat" /sc daily /st 22:00

# タスク一覧を表示
schtasks /query /fo LIST

# タスクを削除
schtasks /delete /tn "DailyBackup" /f

macOS / Linux(crontab):

crontab -e   # crontabを編集(viが開く)

# 書式:分 時 日 月 曜日 コマンド
# 毎日22:00にrsyncバックアップを実行する例
0 22 * * * rsync -avh ~/Documents /Volumes/Backup/Documents >> ~/backup.log 2>&1

# 毎週月曜日の9:00に実行
0 9 * * 1 /path/to/script.sh

💡 FACT: Linuxのcronは1975年にAT&Tベル研究所でUnix向けに開発されたスケジューリングシステムが起源です。現在もmacOS・Linux・クラウドサーバー環境で広く使われており、DevOpsや自動化の世界では基礎知識とされています。

④ history / Get-History — 過去のコマンド履歴を活用する

以前実行したコマンドを素早く呼び出せます。長いコマンドを毎回入力する手間を省けます。

macOS / Linux:

history
history | grep "rsync"      # 特定のコマンドを履歴から検索
!42                         # 42番のコマンドを再実行
!!                          # 直前のコマンドを再実行
!rsync                      # 最後に実行したrsyncで始まるコマンドを再実行

Windows(PowerShell):

Get-History
Get-History | Where-Object CommandLine -like "*robocopy*"
Invoke-History 42   # 42番のコマンドを再実行

また、ターミナルでCtrl + Rを押すと、インクリメンタルサーチで過去のコマンドを検索できます(macOS/Linux)。

⑤ at / timeout — 指定時間後にコマンドを実行する

即時実行ではなく、N秒後・N分後に処理を走らせたいときに使います。

macOS / Linux:

sleep 60 && echo "1分後に実行"
sleep 3600 && shutdown -h now  # 1時間後にシャットダウン

Windows(コマンドプロンプト):

timeout /t 60 /nobreak && echo "60秒後に実行"
shutdown /s /t 3600   # 3600秒(1時間)後にシャットダウン

⑥ tee — 出力を画面表示とファイル保存に同時に行う

コマンドの実行結果を、画面で確認しながら同時にファイルにも保存できます。

macOS / Linux:

ping google.com | tee ping_result.txt
rsync -avh ~/Documents /backup/ | tee backup_$(date +%Y%m%d).log

Windows(PowerShell):

ping google.com | Tee-Object -FilePath ping_result.txt

長時間かかる処理のログを取りながら進捗も確認できるため、バックアップやファイル転送の監視に重宝します。


まとめ

本記事で紹介したコマンドをカテゴリ別にまとめます。

カテゴリコマンド用途
ファイル操作xcopy / cp -r構造を保ってフォルダをコピー
ファイル操作ren / Rename-Itemファイルの一括リネーム
ファイル操作diff / Compare-Objectファイル・フォルダの差分比較
ファイル操作wc / Measure-Objectテキストの行数・文字数カウント
ファイル操作tar / Compress-Archiveファイルの圧縮・解凍
ネットワークnslookup / digDNSの名前解決を調べる
ネットワークarp -aLAN上のデバイス一覧
ネットワークcurlHTTPサーバーとの通信テスト
ネットワークsshリモートサーバーへの安全な接続
ネットワークnetshWindowsネットワーク設定の管理
システム監視systeminfo / system_profilerシステム情報の一括取得
システム監視wmic / Get-WmiObject詳細なハードウェア情報の確認
システム監視powercfgバッテリー劣化・電力消費の分析
システム監視taskkill / killフリーズしたプロセスの強制終了
システム監視sc / systemctlサービスの起動・停止・管理
自動化・応用パイプ(|)コマンドをつないで処理を連鎖
自動化・応用リダイレクト(> / >>)出力結果をファイルに保存
自動化・応用schtasks / crontab定期的な自動実行のスケジュール設定
自動化・応用history / Get-History過去のコマンド履歴を活用
自動化・応用tee / Tee-Object画面表示とファイル保存を同時に行う

コマンドの学習で最も大切なのは「実際に手を動かすこと」です。今日から使える簡単なものとしては、systeminfoで自分のPCのスペック確認、nslookup google.comでDNSの動作確認、historyでこれまで実行したコマンドの振り返り――あたりがおすすめです。

コマンドは覚えれば覚えるほど、パソコン作業の「引き出し」が増えていきます。1つのコマンドを使いこなしたら、次の1つ。そうやって少しずつ積み上げることで、やがてGUIでは追いつかないスピードと精度で作業できるようになります。


※ 本記事に記載のコマンドはWindows 10/11・macOS Ventura以降・Ubuntu 22.04 LTSで動作確認しています。OSのバージョンや環境によって一部オプションが異なる場合があります。システム系コマンドの実行は自己責任でお願いします。ネットワーク管理コマンドは自身が管理する環境のみでお使いください。

コメント