テキストデータの加工、ユーザーと権限の管理、開発現場で使われるコマンド、そして知る人ぞ知る上級テクニック 対応OS:Windows / macOS / Linux

解析

コマンド紹介シリーズ第3弾です。前回・前々回ではセキュリティ、効率化、ネットワーク、ファイル操作などを紹介しましたが、今回はさらに一歩踏み込んだテーマを扱います。

テキストデータの加工、ユーザーと権限の管理、開発現場で使われるコマンド、そして知る人ぞ知る上級テクニック――この4テーマに絞って、実用性の高いコマンドをお届けします。「コマンドはひととおり知っている」という方にも、きっと新しい発見があるはずです。


目次

  1. 【テキスト処理編】データを自在に加工・抽出するコマンド
  2. 【ユーザー・権限管理編】アクセス制御を正しく設定するコマンド
  3. 【開発・環境設定編】エンジニアが毎日使うコマンド
  4. 【上級テクニック編】知っていると圧倒的に差がつくコマンド
  5. まとめ

【テキスト処理編】データを自在に加工・抽出するコマンド

ExcelやスプレッドシートをわざわざGUIで開かなくても、コマンドラインでCSVやログファイルのデータを自在に加工できます。特に大量のログ解析やデータ整形では、コマンドの処理速度はGUIツールを大きく上回ります。

IDC Japanの調査では、企業が生成・管理するデータ量は2025年までに年率23%のペースで増加すると予測されています。データを素早く扱えるコマンドの知識はますます価値が高まっています。

① sort / uniq — データを並べ替えて重複を除去する

ログファイルや一覧データの整理に欠かせないコマンドです。sortで並べ替え、uniqで重複行を削除する組み合わせは定番中の定番です。

macOS / Linux:

sort names.txt                    # アルファベット順に並べ替え
sort -r names.txt                 # 逆順に並べ替え
sort -n numbers.txt               # 数値として並べ替え(-nがないと辞書順になる)
sort -k2 data.csv                 # 2列目を基準に並べ替え
sort -t',' -k3 -n data.csv        # カンマ区切りの3列目を数値基準で並べ替え

sort access.log | uniq            # 重複行を削除
sort access.log | uniq -c         # 重複行を削除して出現回数を表示
sort access.log | uniq -d         # 重複している行のみを表示

Windows(PowerShell):

Get-Content names.txt | Sort-Object
Get-Content access.log | Sort-Object | Get-Unique
Import-Csv data.csv | Sort-Object -Property "名前" | Format-Table

「Webサーバーのログから一番アクセスの多いIPアドレスを調べたい」という場合は次のように組み合わせます:

awk '{print $1}' access.log | sort | uniq -c | sort -rn | head -10

② cut / awk — 必要な列だけを抽出する

CSV・TSVファイルや、スペース区切りのログから特定の列だけを取り出します。Excelで列を選んで別ファイルに保存する作業をコマンド一行で済ませられます。

macOS / Linux(cut):

cut -d',' -f1,3 data.csv          # カンマ区切りの1列目と3列目を抽出
cut -d':' -f1 /etc/passwd         # コロン区切りの1列目(ユーザー名)を抽出
cut -c1-10 filename.txt           # 各行の1〜10文字目を抽出

macOS / Linux(awk):

awk '{print $1, $3}' log.txt      # スペース区切りの1・3列目を表示
awk -F',' '{print $2}' data.csv  # カンマ区切りの2列目を表示
awk '{sum += $5} END {print sum}' sales.txt  # 5列目の合計を計算
awk '$3 > 1000 {print $0}' data.txt          # 3列目が1000超の行のみ表示

awkはフィルタリング・計算・整形まで一手にこなせる強力なテキスト処理ツールです。

💡 FACT: awkという名前は開発者3人の名前(Aho・Weinberger・Kernighan)の頭文字から取られています。1977年にAT&Tベル研究所で誕生した歴史あるツールで、現在もLinux・macOS・クラウド環境でデータ処理の標準ツールとして使われ続けています。

③ sed — テキストを検索・置換・変換する

「Stream EDitor」の略で、テキストファイルの内容を検索・置換・削除するコマンドです。大量のファイルの一括置換作業が一瞬で終わります。

macOS / Linux:

sed 's/旧文字列/新文字列/' file.txt          # 1行につき最初の1件を置換して表示
sed 's/旧文字列/新文字列/g' file.txt         # 全件置換して表示
sed -i 's/旧文字列/新文字列/g' file.txt      # ファイルを直接書き換え(-i:in-place)
sed '/^#/d' config.conf                      # コメント行(#始まり)を削除
sed -n '10,20p' largefile.txt                # 10〜20行目だけを表示

⚠️ sed -iでファイルを直接書き換える場合は、事前にバックアップを取っておきましょう。macOSではsed -i '' 's/old/new/g'のように空文字が必要です。

④ head / tail — ファイルの先頭・末尾を確認する

大容量のログファイルをテキストエディタで開くと、メモリを大量消費して動作が重くなります。headtailを使えば必要な部分だけを軽快に確認できます。

macOS / Linux:

head -20 logfile.txt              # 先頭20行を表示
tail -50 logfile.txt              # 末尾50行を表示
tail -f /var/log/syslog           # リアルタイムでログの末尾を追跡(-f:follow)
tail -f app.log | grep "ERROR"   # エラーログのみをリアルタイム監視

Windows(PowerShell):

Get-Content logfile.txt -Head 20
Get-Content logfile.txt -Tail 50
Get-Content app.log -Wait | Where-Object { $_ -match "ERROR" }   # リアルタイム監視

tail -fはサーバー運用やアプリケーション開発でリアルタイムログ監視に欠かせないコマンドです。エラーが発生した瞬間をその場でキャッチできます。

⑤ tr — 文字の変換・削除を行う

「Translate」の略で、文字を別の文字に変換したり、特定の文字を削除したりします。

macOS / Linux:

echo "Hello World" | tr 'a-z' 'A-Z'       # 小文字→大文字に変換
echo "Hello World" | tr 'A-Z' 'a-z'       # 大文字→小文字に変換
cat file.txt | tr -d '\r'                  # Windows改行コード(\r)を削除
cat file.txt | tr -s ' '                   # 連続するスペースを1つに圧縮
echo "a,b,c,d" | tr ',' '\n'              # カンマを改行に変換

WindowsとLinux間でファイルを共有すると改行コードの違いが問題になりますが、tr -d '\r'一発で解決できます。


【ユーザー・権限管理編】アクセス制御を正しく設定するコマンド

IPA(情報処理推進機構)の「情報セキュリティ10大脅威 2024」では、「内部不正による情報漏えい」が組織向け脅威の3位にランクインしています。ファイルやフォルダへのアクセス権を適切に設定することは、セキュリティ対策の根幹です。

① chmod — ファイルのアクセス権限を設定する(macOS / Linux)

ファイルやディレクトリの読み取り(r)・書き込み(w)・実行(x)権限を、所有者・グループ・その他に対してそれぞれ設定します。

macOS / Linux:

ls -la                            # ファイルの現在の権限を確認
chmod 644 file.txt                # 所有者:読み書き、グループ・その他:読み取りのみ
chmod 755 script.sh               # 所有者:全権限、グループ・その他:読み取りと実行
chmod 700 secret_folder/          # 所有者のみすべての権限(他者は一切アクセス不可)
chmod -R 755 /var/www/html        # フォルダ以下を再帰的に変更(-R)
chmod +x deploy.sh                # 実行権限を付与

数字の意味:4(読み取り)+2(書き込み)+1(実行)で、3桁が「所有者・グループ・その他」に対応します。755は「所有者:7(4+2+1)、グループ:5(4+1)、その他:5(4+1)」という意味です。

② chown — ファイルの所有者を変更する(macOS / Linux)

ファイルやフォルダの所有者・所有グループを変更します。サーバー設定時に特に重要なコマンドです。

macOS / Linux:

chown username file.txt                   # 所有者を変更
chown username:groupname file.txt         # 所有者とグループを変更
sudo chown -R www-data /var/www/html      # Webサーバーのファイル所有者を変更
chown -R $(whoami) ~/.npm                 # 現在のユーザーに所有権を変更

③ icacls — Windowsのファイルアクセス権を設定する

Windowsにおけるchmodに相当するコマンドです。NTFSのアクセス制御リスト(ACL)を操作します。

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

icacls "C:\SecretFolder"                          # 現在の権限を表示
icacls "C:\SecretFolder" /grant Username:(F)      # 特定ユーザーにフルコントロールを付与
icacls "C:\SecretFolder" /deny Everyone:(W)       # 全員に書き込み禁止
icacls "C:\SecretFolder" /remove Username         # ユーザーの権限エントリを削除
icacls "C:\Project" /grant Username:(R,W) /T      # サブフォルダにも再帰的に適用(/T)

💡 FACT: WindowsのNTFSパーミッションは、Linuxのchmodより細かい制御が可能です。「読み取り」「書き込み」「実行」に加えて「変更」「フルコントロール」「特殊なアクセス許可」まで細分化されており、企業の情報管理ポリシーの実装に使われています。

④ net user — Windowsのユーザーアカウントを管理する

ユーザーアカウントの作成・削除・パスワード変更・有効化・無効化をコマンドで行います。

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

net user                                          # ユーザー一覧を表示
net user Username                                 # 特定ユーザーの情報を表示
net user Username NewPassword                     # パスワードを変更
net user NewUser Password123 /add                 # 新規ユーザーを作成
net user Username /delete                         # ユーザーを削除
net user Username /active:no                      # アカウントを無効化
net localgroup Administrators Username /add       # Administratorsグループに追加

macOS / Linux:

cat /etc/passwd                   # ユーザー一覧を表示
sudo adduser newusername          # 新規ユーザーを作成(Ubuntu)
sudo passwd username              # パスワードを変更
sudo usermod -aG sudo username    # sudoグループに追加

⑤ cipher — Windowsのファイル暗号化を管理する

EFS(Encrypting File System)を使ったWindowsのファイル暗号化をコマンドで操作します。削除したファイルの復元を防ぐ「ディスク上書き」機能も持ちます。

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

cipher /e /s:C:\SecretFolder      # フォルダとサブフォルダを暗号化
cipher /d /s:C:\SecretFolder      # 暗号化を解除
cipher C:\SecretFolder            # 暗号化状態を確認(Eが暗号化済み)
cipher /w:C:\                     # Cドライブの空き領域を上書き(データ復元を防ぐ)

/wオプションは、削除済みファイルを専用ツールで復元されるリスクを低減します。機密データを扱うPCを廃棄・譲渡する前に実行することをお勧めします。


【開発・環境設定編】エンジニアが毎日使うコマンド

プログラミングやWebサイト管理に関わる方なら知っておきたいコマンドです。Gitやパッケージ管理、環境変数の操作は、エンジニアにとって呼吸のように当たり前の作業ですが、非エンジニアの方にも知っておくと役立つ場面が増えています。

① git — バージョン管理の基本コマンド

Gitはソースコードや文書ファイルの変更履歴を管理するシステムです。GitHubの2024年統計では、世界で1億人以上の開発者がGitを使用しており、現代のソフトウェア開発の基盤となっています。

Windows / macOS / Linux 共通:

git status                        # 現在の変更状態を確認
git log --oneline                 # 変更履歴を1行ずつ簡潔に表示
git diff                          # 変更内容の差分を表示
git add .                         # すべての変更をステージング
git commit -m "変更内容のメモ"   # コミット(変更を記録)
git push origin main              # リモートリポジトリに反映
git pull                          # リモートの最新版を取得
git stash                         # 作業中の変更を一時退避
git log --graph --oneline --all   # ブランチの分岐を視覚的に表示

💡 FACT: Gitは2005年にLinuxカーネルの開発者リーナス・トーバルズ氏が自らLinux開発のために作成しました。開発開始からわずか10日で基本機能が完成したとされており、そのシンプルな設計思想は現在も変わっていません。

② env / export / set — 環境変数を確認・設定する

環境変数はOSやアプリケーションの動作に影響する設定値です。APIキー・パス・ユーザー設定などが環境変数として管理されています。

macOS / Linux:

env                               # すべての環境変数を表示
echo $PATH                        # PATH変数の内容を表示
echo $HOME                        # ホームディレクトリのパスを表示
export MY_API_KEY="xxxxx"         # 環境変数を設定(セッション中のみ有効)
export PATH=$PATH:/new/path       # PATHに新しいパスを追加

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

set                               # すべての環境変数を表示
echo %PATH%                       # PATH変数の内容を表示
set MY_VAR=Hello                  # 環境変数を設定(コマンドプロンプトのセッション中のみ)

Windows(永続的な環境変数の設定 / PowerShell):

[System.Environment]::SetEnvironmentVariable("MY_VAR","Value","User")   # ユーザー範囲
[System.Environment]::SetEnvironmentVariable("MY_VAR","Value","Machine") # システム全体

③ npm / pip — パッケージ管理ツールを使いこなす

プログラミング言語ごとに標準的なパッケージ管理ツールがあります。ライブラリのインストール・更新・削除を一元管理できます。

JavaScript(npm):

npm install                       # package.jsonに記載の依存関係をインストール
npm install package-name          # パッケージを追加
npm install -g package-name       # グローバルインストール
npm update                        # すべてのパッケージを最新版に更新
npm list                          # インストール済みパッケージの一覧
npm audit                         # セキュリティ脆弱性を確認
npm run build                     # ビルドスクリプトを実行

Python(pip):

pip list                          # インストール済みパッケージ一覧
pip install package-name          # パッケージをインストール
pip install --upgrade package-name  # パッケージを更新
pip uninstall package-name        # パッケージを削除
pip freeze > requirements.txt     # インストール済みパッケージを書き出し
pip install -r requirements.txt   # requirements.txtから一括インストール

④ echo — 変数の確認やスクリプト出力に使う

シンプルに見えて奥が深いコマンドです。変数の内容確認から、ファイルへの書き込み、スクリプトのデバッグまで幅広く使えます。

Windows / macOS / Linux 共通:

echo "Hello World"
echo $HOME              # 変数の内容を表示(macOS/Linux)
echo %USERNAME%         # 変数の内容を表示(Windows)
echo "" > newfile.txt   # 空ファイルを新規作成
echo "設定値=1" >> config.txt    # ファイルに追記

応用(macOS / Linux):

# 環境変数の存在確認
echo ${MY_VAR:-"デフォルト値"}    # MY_VARが未定義ならデフォルト値を表示

# 複数行をファイルに書き込む
cat << EOF > config.txt
host=localhost
port=8080
EOF

⑤ xargs — コマンドを大量のファイルに一括適用する

xargsは、パイプで受け取ったデータを別のコマンドの引数として渡すコマンドです。「findで見つけたファイルすべてに処理を適用する」などの場面で威力を発揮します。

macOS / Linux:

# 検索にヒットしたファイルをすべて削除
find . -name "*.tmp" | xargs rm

# 検索にヒットしたログファイルの中から特定文字列を検索
find /var/log -name "*.log" | xargs grep "ERROR"

# 複数ファイルを並列処理(-P:並列数)
find . -name "*.jpg" | xargs -P4 -I{} convert {} -resize 800x {} 

💡 FACT: xargsを使わずにfind -name "*.tmp" -exec rm {} \;と書くことも可能ですが、xargsを使う方がコマンドの呼び出し回数を減らせるためより高速に動作します。大量のファイルを扱う場合は特に差が出ます。


【上級テクニック編】知っていると圧倒的に差がつくコマンド

ここからは、コマンドに慣れてきた方向けのより高度な使い方を紹介します。これらを使いこなせるようになると、日常作業の質と速度が一段階上がります。

① watch — コマンドを定期的に繰り返し実行して監視する

指定したコマンドをN秒ごとに自動実行し、結果をリアルタイムで表示します。ファイルの変化やプロセスの状態を継続監視するのに最適です。

macOS / Linux:

watch -n 2 df -h                  # 2秒ごとにディスク使用量を更新表示
watch -n 1 'ps aux | grep nginx' # 1秒ごとにnginxプロセスを監視
watch -n 5 ls -la /var/log/      # 5秒ごとにログフォルダを監視

Windows(PowerShell):

while ($true) { Clear-Host; Get-Process | Sort-Object CPU -Descending | Select-Object -First 10; Start-Sleep 3 }

② ln / mklink — シンボリックリンクを作成する

シンボリックリンクは「ファイルやフォルダの分身(ショートカットの上位互換)」です。実体は1つのまま、複数の場所から参照できるようになります。

macOS / Linux:

ln -s /path/to/original /path/to/link       # シンボリックリンクを作成
ln -s ~/Dropbox/projects ~/projects         # Dropboxのフォルダをホームから参照
ls -la | grep "^l"                          # シンボリックリンクのみを表示

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

mklink /D C:\projects C:\Users\Name\Dropbox\projects   # ディレクトリのシンボリックリンク
mklink C:\shortcut.txt C:\actual\file.txt              # ファイルのシンボリックリンク

開発環境の設定ファイルをDropboxやGitで一元管理しつつ、参照先だけを変えるといった使い方ができます。

③ dd — ディスクのイメージバックアップを作成する

ディスクやパーティションをビット単位でそのまま複製・バックアップします。「Disk Dump」の略で、OSを含めたシステムの完全バックアップが可能です。

macOS / Linux:

# USBドライブ(/dev/sdb)のイメージをファイルに保存
sudo dd if=/dev/sdb of=~/backup.img bs=4M status=progress

# 保存したイメージを別のUSBドライブに書き込む
sudo dd if=~/backup.img of=/dev/sdc bs=4M status=progress

# ディスクの特定領域をゼロで上書き(データ消去)
sudo dd if=/dev/zero of=/dev/sdb bs=4M status=progress

⚠️ ddは「if(入力元)」と「of(出力先)」を絶対に間違えないでください。逆にしてしまうとバックアップ元のデータが完全に失われます。実行前に必ずdf -hlsblkでデバイス名を確認してください。

💡 FACT: ddコマンドはUnix黎明期の1974年ごろから存在する超ベテランコマンドです。IBMのJCL(Job Control Language)の構文にインスパイアされて設計されたとされており、現在もLinuxにおけるディスク操作・フォレンジック・ブータブルUSB作成に幅広く使われています。

④ reg — Windowsレジストリをコマンドで操作する

Windowsのシステム設定の核心部分であるレジストリを、GUIのレジストリエディタを開かずに操作できます。設定の確認・変更・バックアップが素早く行えます。

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

# レジストリ値を検索・確認
reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion

# レジストリのバックアップ(エクスポート)
reg export HKLM\SOFTWARE\MyApp C:\reg_backup.reg

# バックアップからの復元(インポート)
reg import C:\reg_backup.reg

# 特定の値を確認
reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Run"

⚠️ レジストリの変更はシステムの動作に直接影響します。変更前に必ずreg exportでバックアップを取ってください。

⑤ openssl — 証明書・暗号化を手軽に操作する

SSL/TLS証明書の確認や、ファイルの暗号化・復号、パスワードのハッシュ生成など、セキュリティ関連の作業を幅広くこなします。

macOS / Linux(Windows Git Bashでも使用可):

# Webサイトの証明書情報を確認
openssl s_client -connect example.com:443 2>/dev/null | openssl x509 -noout -dates

# ファイルをAES-256-CBCで暗号化
openssl enc -aes-256-cbc -in secret.txt -out secret.enc -pbkdf2

# 暗号化ファイルを復号
openssl enc -d -aes-256-cbc -in secret.enc -out secret_decrypted.txt -pbkdf2

# ランダムなパスワードを生成(20文字)
openssl rand -base64 20

# SHA-256ハッシュを生成
echo -n "password" | openssl dgst -sha256

「このWebサイトの証明書の有効期限はいつか」を即座に確認できるため、Webサイト管理者には特に便利なコマンドです。

⑥ screen / tmux — ターミナルをウィンドウ分割・セッション管理する

一つのターミナルウィンドウを複数の仮想画面に分割して使えます。SSH接続中に処理を走らせたまま切断でき、再接続時に続きから作業を再開できる点が特に強力です。

macOS / Linux(screen):

screen -S mywork          # 「mywork」という名前でセッションを開始
screen -ls                # セッション一覧を表示
screen -r mywork          # セッションに再接続(再アタッチ)
# セッション中のキーバインド
# Ctrl+A → D:セッションをデタッチ(切断しても処理は継続)
# Ctrl+A → C:新しいウィンドウを作成
# Ctrl+A → N:次のウィンドウに切り替え

macOS / Linux(tmux):

tmux new -s work          # 「work」という名前でセッション開始
tmux ls                   # セッション一覧
tmux attach -t work       # セッションに再接続
# Ctrl+B → %:左右に画面分割
# Ctrl+B → ":上下に画面分割
# Ctrl+B → D:デタッチ

💡 FACT: tmuxはサーバー管理者やバックエンドエンジニアにとって必須ツールです。SSH接続が途切れても実行中のプロセスが継続するため、数時間・数日かかる長時間処理をリモートで実行する際に活用されています。


まとめ

本記事で紹介したコマンドを一覧で確認できるようにまとめました。

カテゴリコマンド用途
テキスト処理sort / uniqデータの並べ替えと重複削除
テキスト処理cut / awk特定列の抽出・計算・フィルタリング
テキスト処理sedテキストの検索・置換・削除
テキスト処理head / tail -fファイルの先頭・末尾のリアルタイム監視
テキスト処理tr文字の変換・削除(改行コード変換など)
権限管理chmodmacOS/Linuxのファイル権限設定
権限管理chownファイルの所有者変更
権限管理icaclsWindowsのACLアクセス制御
権限管理net userWindowsユーザーアカウントの管理
権限管理cipherWindowsファイルの暗号化とデータ消去
開発・環境gitバージョン管理の基本操作
開発・環境env / export / set環境変数の確認と設定
開発・環境npm / pipパッケージの管理・インストール
開発・環境echo変数確認・ファイル書き込み・デバッグ
開発・環境xargsコマンドを大量ファイルに一括適用
上級テクニックwatchコマンドを定期実行してリアルタイム監視
上級テクニックln / mklinkシンボリックリンクの作成
上級テクニックddディスクの完全バックアップ・データ消去
上級テクニックregWindowsレジストリの操作・バックアップ
上級テクニックopenssl証明書確認・暗号化・パスワード生成
上級テクニックscreen / tmuxターミナルの画面分割・セッション管理

シリーズ3本を通じて合計60以上のコマンドを紹介してきました。すべてを一度に覚える必要はありません。「今の自分の作業でどれが使えそうか」という視点で1〜2個ずつ試してみることが、コマンド習得の一番の近道です。

特に今回の記事から試してほしいコマンドを3つ選ぶとすれば――tail -fでログのリアルタイム監視、sort + uniq -cでデータの集計、そしてopenssl rand -base64 20で安全なパスワードの生成です。どれもすぐに役立つ実用性の高いコマンドです。


※ 本記事に記載のコマンドはWindows 10/11・macOS Ventura以降・Ubuntu 22.04 LTSで動作確認しています。OSや環境によってオプションが異なる場合があります。ddregcipherなど、データやシステムに直接影響するコマンドは十分に内容を確認したうえで自己責任でお使いください。

コメント