Linuxコマンドを使いこなせば、サーバ管理や開発効率が劇的に向上します。今すぐ基本コマンドから実践的なテクニックまで学び、あなたの作業を自動化しましょう。

本記事では、Linuxコマンドの基礎から応用まで、2026年現在の最新環境に対応した完全ガイドを提供します。初心者でも理解できる丁寧な解説と、実務で即役立つ具体例を豊富に掲載しています。この記事を読み終える頃には、Linuxコマンドを使った作業効率が飛躍的に向上しているはずです。


目次


Linuxコマンドとは何か

Linuxコマンドは、テキストベースでLinuxシステムを操作するためのツールです。グラフィカルユーザーインターフェース(GUI)がなくても、コマンドを使って効率的に作業できます。特にサーバ管理や開発現場では、コマンドラインインターフェース(CLI)が必須のスキルとなっています。

Linuxコマンドの特徴は以下の通りです:

  • 高速な処理:GUIよりも圧倒的に高速な操作が可能
  • 自動化:繰り返し作業をスクリプト化して自動実行
  • リモート管理:SSH経由で遠隔地のサーバを操作
  • 柔軟性:パイプやリダイレクトで複雑な処理を組み合わせ可能

2026年現在、クラウドサービスの普及により、Linuxサーバの需要はさらに高まっています。AWS、GCP、Azureなどのクラウドプラットフォームでは、ほとんどの操作がコマンドラインで行われています。

出典: Linux Foundation公式サイト


基本的なLinuxコマンド20選

Linuxコマンドを学ぶ上で、まずは基本的な20個のコマンドをマスターしましょう。これらのコマンドを使いこなせれば、日常的な操作の80%はカバーできます。

コマンド用途基本的な使い方実用例
lsファイル・ディレクトリの一覧表示ls [オプション] [ディレクトリ]ls -la /home/user
cdディレクトリの移動cd [ディレクトリパス]cd /var/log
pwd現在のディレクトリを表示pwdpwd
mkdir新しいディレクトリの作成mkdir [ディレクトリ名]mkdir projects
rmファイル・ディレクトリの削除rm [オプション] [ファイル]rm -rf temp/
cpファイル・ディレクトリのコピーcp [オプション] [ソース] [ destination]cp file.txt /backup/
mvファイル・ディレクトリの移動・名前変更mv [オプション] [ソース] [ destination]mv oldname.txt newname.txt
catファイルの内容表示cat [ファイル]cat /etc/passwd
lessファイルの内容をページ単位で表示less [ファイル]less /var/log/syslog
grepテキスト検索grep [オプション] [パターン] [ファイル]grep “error” /var/log/syslog
findファイル・ディレクトリの検索find [パス] [条件]find /home -name “*.txt”
chmodファイル・ディレクトリのパーミッション変更chmod [モード] [ファイル]chmod 755 script.sh
chownファイル・ディレクトリの所有者変更chown [所有者:グループ] [ファイル]chown user:group file.txt
ps実行中のプロセス表示ps [オプション]ps aux | grep nginx
topシステムリソースの監視toptop
killプロセスの終了kill [オプション] [PID]kill -9 1234
tarファイルの圧縮・解凍tar [オプション] [ファイル]tar -xzvf archive.tar.gz
wgetファイルのダウンロードwget [URL]wget https://example.com/file.zip
curlHTTPリクエストの送信curl [オプション] [URL]curl -X POST https://api.example.com
manコマンドのマニュアル表示man [コマンド]man ls

これらの基本コマンドをマスターすることで、Linuxシステムの基本的な操作が可能になります。各コマンドの詳細な使い方については、後述のセクションで解説します。


コマンドの実行環境を整える

Linuxコマンドを学ぶには、実際に手を動かすことが最も重要です。以下の方法で、すぐに実践できる環境を整えましょう。

1. 仮想マシンのセットアップ

WindowsやMacでも、仮想マシンを使ってLinux環境を構築できます。

  • VirtualBox:無料で使える仮想化ソフトウェア
  • VMware Workstation Player:有料だが高性能
  • Hyper-V:Windows Pro/Enterpriseに標準搭載

おすすめのLinuxディストリビューション:

  • Ubuntu:初心者に最適な使いやすさ
  • CentOS Stream:サーバ向けの安定性
  • Debian:高い安定性とセキュリティ

2. クラウドサービスの利用

AWS、GCP、Azureなどのクラウドサービスでは、無料枠でLinuxサーバを利用できます。

  • AWS EC2:t2.microインスタンスで無料利用可能
  • Google Cloud Platform:f1-microインスタンスで無料
  • Azure Virtual Machines:B1Sインスタンスで無料

クラウドサービスを使えば、インターネット経由でどこからでもLinuxコマンドを実行できます。

3. WSL(Windows Subsystem for Linux)

Windows 10/11では、WSLを使ってネイティブのLinux環境を利用できます。

  • WSL 2:高いパフォーマンスと完全なLinuxカーネル
  • Ubuntu on WSL:Microsoft Storeから簡単にインストール

WSLを使えば、Windows上でLinuxコマンドを実行でき、開発環境としても非常に便利です。


ファイル操作コマンドの完全マスター

Linuxにおけるファイル操作は、システム管理の基礎中の基礎です。ここでは、ファイルやディレクトリの操作に関する重要なコマンドとテクニックを詳しく解説します。

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

1. ファイルの作成と編集

touchコマンド:空のファイルを作成します。

touch file.txt

nanoエディタ:簡単なテキスト編集に便利です。

nano file.txt

vimエディタ:高度なテキスト編集に適しています。

vim file.txt

2. ファイルの表示

catコマンド:ファイルの内容を一気に表示します。

cat file.txt

lessコマンド:ファイルの内容をページ単位で表示します。

less /var/log/syslog

head/tailコマンド:ファイルの先頭または末尾を表示します。

head -n 10 file.txt  # 先頭10行
tail -f /var/log/syslog  # リアルタイムで末尾を表示

3. ファイルの検索

findコマンド:ファイルやディレクトリを検索します。

# 名前で検索
find /home -name "*.txt"

# サイズで検索
find /var -size +10M

# 変更時刻で検索
find /etc -mtime -7

locateコマンド:高速なファイル検索(事前にupdatedbが必要)

locate file.txt

4. ファイルの圧縮と解凍

tarコマンド:ファイルやディレクトリをアーカイブします。

# 圧縮
tar -czvf archive.tar.gz /path/to/directory

# 解凍
tar -xzvf archive.tar.gz

gzip/gunzipコマンド:単一ファイルの圧縮・解凍

gzip file.txt  # file.txt.gzを作成
gunzip file.txt.gz  # 解凍

zip/unzipコマンド:Windows互換の圧縮・解凍

zip archive.zip file1.txt file2.txt
unzip archive.zip

5. ファイルの権限管理

Linuxでは、ファイルやディレクトリに対して所有者、グループ、その他のユーザーに対して異なる権限を設定できます。

chmodコマンド:ファイルの権限を変更します。

# 数値形式(r=4, w=2, x=1)
chmod 755 script.sh  # 所有者:rwx, グループ:r-x, その他:r-x

# 記号形式
chmod u+x script.sh  # 所有者に実行権限を追加
chmod g-w file.txt   # グループから書き込み権限を削除

chownコマンド:ファイルの所有者を変更します。

chown user:group file.txt

umaskコマンド:新規ファイルのデフォルト権限を設定します。

umask 022  # 新規ファイルは644(rw-r--r--)に設定

ファイル操作の実践的なテクニック

1. パイプとリダイレクト

パイプ(|):コマンドの出力を別のコマンドに渡します。

# ps auxの出力をgrepでフィルタリング
ps aux | grep nginx

# lsの出力をlessで表示
ls -l | less

リダイレクト(>、>>、<):コマンドの入出力をファイルにリダイレクトします。

# 標準出力をファイルに保存
echo "Hello" > file.txt

# 標準出力をファイルに追記
echo "World" >> file.txt

# 標準入力をファイルから受け取る
sort < file.txt

teeコマンド:出力をファイルに保存しつつ、画面にも表示します。

ls -l | tee list.txt

2. ファイルの比較

diffコマンド:2つのファイルの違いを表示します。

diff file1.txt file2.txt

cmpコマンド:2つのファイルの最初の違いを表示します。

cmp file1.txt file2.txt

md5sum/sha256sumコマンド:ファイルのハッシュ値を計算します。

md5sum file.txt
sha256sum file.txt

3. ファイルの同期

rsyncコマンド:効率的なファイル同期を行います。

# ローカル間の同期
rsync -avz /source/ /destination/

# リモートサーバとの同期
rsync -avz -e ssh user@remote:/path/ /local/path/

scpコマンド:ファイルを安全にコピーします。

scp file.txt user@remote:/path/

ネットワーク管理に必須のコマンド

Linuxシステムのネットワーク管理には、多くのコマンドが用意されています。ここでは、ネットワークの設定、監視、トラブルシューティングに必須のコマンドを詳しく解説します。

ネットワークインターフェースの管理

1. ネットワークインターフェースの確認

ipコマンド:ネットワークインターフェースの情報を表示します。

# 全てのインターフェースを表示
ip addr show

# 特定のインターフェースの詳細を表示
ip addr show eth0

# ルーティングテーブルを表示
ip route show

ifconfigコマンド:古いシステムで使用されるネットワークインターフェースの情報表示コマンド(現代のLinuxでは非推奨)

ifconfig

nmcliコマンド:NetworkManagerを操作するコマンド

# 接続の一覧を表示
nmcli connection show

# Wi-Fiネットワークのスキャン
nmcli device wifi list

2. ネットワークインターフェースの設定

/etc/network/interfaces:Debian系ディストリビューションのネットワーク設定ファイル

# 例:静的IPアドレスの設定
auto eth0
iface eth0 inet static
    address 192.168.1.100
    netmask 255.255.255.0
    gateway 192.168.1.1
    dns-nameservers 8.8.8.8 8.8.4.4

/etc/netplan/*.yaml:Ubuntuのネットワーク設定ファイル(Netplan)

# 例:静的IPアドレスの設定
network:
  version: 2
  ethernets:
    eth0:
      addresses: [192.168.1.100/24]
      gateway4: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]

systemd-networkd:systemdベースのシステムで使用されるネットワーク管理

# 設定ファイルの例(/etc/systemd/network/20-wired.network)
[Match]
Name=eth0

[Network]
Address=192.168.1.100/24
Gateway=192.168.1.1
DNS=8.8.8.8

ネットワーク接続のテスト

1. pingコマンド

pingコマンド:ネットワーク接続をテストします。

ping example.com
ping -c 4 8.8.8.8  # 4回のみpingを実行

2. tracerouteコマンド

tracerouteコマンド:パケットが宛先に到達するまでの経路を表示します。

traceroute example.com

mtrコマンド:tracerouteとpingを組み合わせたツール

mtr example.com

3. nslookup/digコマンド

nslookupコマンド:DNSサーバに問い合わせを行います。

nslookup example.com

digコマンド:DNSクエリを詳細に表示します。

dig example.com

hostコマンド:DNSクエリを簡単に表示します。

host example.com

ネットワークサービスの管理

1. SSHサーバの設定と管理

sshd_configファイル:SSHサーバの設定ファイル(/etc/ssh/sshd_config)

# 例:基本的なSSHサーバの設定
Port 22
Protocol 2
PermitRootLogin no
PasswordAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

sshコマンド:リモートサーバに接続します。

ssh user@remote-server
ssh -p 2222 user@remote-server  # カスタムポートで接続

scpコマンド:ファイルを安全にコピーします。

scp file.txt user@remote-server:/path/
scp -r directory/ user@remote-server:/path/  # ディレクトリを再帰的にコピー

ssh-keygenコマンド:SSH鍵ペアを生成します。

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

ssh-copy-idコマンド:公開鍵をリモートサーバにコピーします。

ssh-copy-id user@remote-server

2. FTPサーバの設定と管理

vsftpd:安全なFTPサーバソフトウェア

# 設定ファイル(/etc/vsftpd.conf)の例
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
pasv_min_port=40000
pasv_max_port=50000

ftpコマンド:FTPサーバに接続します。

ftp remote-server

lftpコマンド:高機能なFTPクライアント

lftp -e "mirror /remote/path /local/path" ftp://user:password@remote-server

3. HTTPサーバの設定と管理

Apache HTTP Server:人気のWebサーバソフトウェア

# 設定ファイル(/etc/apache2/apache2.conf)の例
ServerName example.com
DocumentRoot /var/www/html

    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted

Nginx:高性能なWebサーバソフトウェア

# 設定ファイル(/etc/nginx/nginx.conf)の例
worker_processes auto;
events {
    worker_connections 1024;
}
http {
    server {
        listen 80;
        server_name example.com;
        root /var/www/html;
        index index.html;
    }
}

curlコマンド:HTTPリクエストを送信します。

curl https://example.com
curl -X POST -d '{"key":"value"}' https://api.example.com

wgetコマンド:Webページやファイルをダウンロードします。

wget https://example.com/file.zip
wget -r https://example.com/  # 再帰的にダウンロード

ネットワークセキュリティの強化

1. ファイアウォールの設定

iptables:Linuxの標準的なファイアウォールツール

# ルールの表示
iptables -L -n -v

# ルールの追加
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -j DROP

# ルールの保存(iptables-persistentパッケージが必要)
iptables-save > /etc/iptables/rules.v4

ufw(Uncomplicated Firewall):iptablesを簡単に操作するためのツール

# ufwの有効化
ufw enable

# ルールの追加
ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw default deny incoming
ufw default allow outgoing

firewalld:RHEL系ディストリビューションで使用されるファイアウォールツール

# firewalldの有効化
systemctl enable firewalld
systemctl start firewalld

# ゾーンの表示
firewall-cmd --list-all

# サービスの追加
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload

2. ネットワークトラフィックの監視

tcpdumpコマンド:ネットワークパケットをキャプチャします。

tcpdump -i eth0 -w capture.pcap
tcpdump -i eth0 port 80

tsharkコマンド:Wiresharkのコマンドライン版

tshark -i eth0 -w capture.pcap

iftopコマンド:リアルタイムでネットワークトラフィックを表示します。

iftop -i eth0

nloadコマンド:ネットワーク帯域幅の使用状況を表示します。

nload eth0

3. セキュリティスキャン

nmapコマンド:ネットワークのポートスキャンを行います。

nmap -sV example.com  # サービスバージョンを表示
nmap -p 1-65535 example.com  # 全ポートをスキャン

netstatコマンド:ネットワーク接続やポートの状態を表示します。

netstat -tuln  # リスニングポートを表示
netstat -an  # 全ての接続を表示

ssコマンド:netstatの代替コマンド(より高速)

ss -tuln  # リスニングポートを表示
ss -s  # 統計情報を表示

システム監視とパフォーマンス最適化

Linuxシステムの安定稼働には、システム監視とパフォーマンス最適化が不可欠です。ここでは、システムリソースの監視、ログ管理、パフォーマンスチューニングに関する重要なコマンドとテクニックを解説します。

システムリソースの監視

1. CPU使用率の監視

topコマンド:リアルタイムでシステムリソースを監視します。

top

htopコマンド:topの改良版で、より使いやすいインターフェースを提供します。

htop

mpstatコマンド:CPU使用率の詳細な統計情報を表示します。

mpstat -P ALL 1  # 全てのCPUの統計を1秒間隔で表示

vmstatコマンド:システム全体のパフォーマンス統計を表示します。

vmstat 1  # 1秒間隔で表示

2. メモリ使用率の監視

freeコマンド:メモリとスワップの使用状況を表示します。

free -h  # 人間が読みやすい形式で表示

vmstatコマンド:メモリ使用率も表示します。

vmstat -s

smemコマンド:メモリ使用量をプロセスごとに表示します。

smem -r  # RSS(Resident Set Size)でソート

3. ディスクI/Oの監視

iostatコマンド:ディスクI/Oの統計情報を表示します。

iostat -x 1  # 拡張モードで1秒間隔で表示

iotopコマンド:リアルタイムでディスクI/Oを監視します。

iotop -o  # I/Oを行っているプロセスのみ表示

dfコマンド:ディスク容量の使用状況を表示します。

df -h  # 人間が読みやすい形式で表示

duコマンド:ディレクトリやファイルのサイズを表示します。

du -sh /var/log  # /var/logディレクトリの合計サイズを表示

システムログの管理

1. syslogの管理

rsyslog:Linuxの標準的なログ管理システム

設定ファイル:/etc/rsyslog.conf

# 例:特定のログを別のファイルに保存
if $programname == 'nginx' then /var/log/nginx/nginx.log
if $programname == 'nginx' then stop

journalctlコマンド:systemdのジャーナルログを表示します。

journalctl -u nginx  # nginxサービスのログを表示
journalctl -f  # リアルタイムでログを表示
journalctl --since "2024-01-01" --until "2024-01-31"  # 日付範囲を指定

2. ログローテーション

logrotate:ログファイルのローテーションと圧縮を行います。

設定ファイル:/etc/logrotate.conf

# 例:nginxのログローテーション設定(/etc/logrotate.d/nginx)
/var/log/nginx/*.log {
    daily
    missingok
    rotate 14
    compress
    delaycompress
    notifempty
    create 0640 www-data adm
    sharedscripts
    postrotate
        systemctl reload nginx
    endscript
}

パフォーマンス最適化

1. プロセスの最適化

nice/reniceコマンド:プロセスの優先度を変更します。

nice -n 10 command  # 優先度を10に変更してコマンドを実行
renice 15 -p 1234  # PID 1234のプロセスの優先度を15に変更

tasksetコマンド:プロセスを特定のCPUコアに割り当てます。

実践的なテクニックと応用例

Linuxコマンドの活用は、単純なファイル操作やプロセス管理を超えて、システムの効率化やトラブルシューティングに大きく貢献します。例えば、findコマンドを応用して、特定の条件に合致するファイルを一括で処理することで、作業時間を大幅に短縮できます。また、grepと組み合わせることで、ログファイルから特定のパターンを抽出し、問題の原因を迅速に特定することも可能です。これらのコマンドは、システム管理者や開発者にとって欠かせないツールとなっています。

さらに、Linuxコマンドを活用する際には、パイプ(|)やリダイレクト(>>>)を駆使することで、複数のコマンドを組み合わせた柔軟な処理が実現できます。例えば、ps aux | grep nginxといったコマンドを実行することで、実行中のnginxプロセスを簡単に確認できます。このように、コマンドの組み合わせ次第で、より高度な処理を効率的に行うことが可能です。

実践的な応用例としては、以下のようなシーンが挙げられます。

  • システムリソースの監視tophtopを使用してCPUやメモリの使用状況をリアルタイムで監視し、パフォーマンスのボトルネックを特定します。

よくある質問と回答

Linuxコマンドに関する疑問やトラブルシューティングについて、初心者から実務者まで幅広く対応したFAQを用意しました。実際の運用で役立つ回答をご確認ください。

Q1. Linuxコマンドを学ぶ際の効果的な方法は?

A1. Linuxコマンドを習得するには、実践を重視した学習が効果的です。まずは基本的なコマンド(lscdpwdなど)を覚え、実際にターミナルで操作しながら理解を深めましょう。オンラインのチュートリアルやハンズオン形式の演習を活用するのも良い方法です。また、日常的にLinuxを使用する環境(例えばWSLやクラウドサーバー)でコマンドを試すことで、実務に近い感覚を養うことができます。公式ドキュメントや信頼性の高い技術書も参照しながら、段階的にスキルを向上させてください。

Q2. Linuxコマンドの実行権限エラーが発生した場合の対処法は?

A2. 実行権限エラーは、主にファイルやディレクトリに対するアクセス権限が不足している場合に発生します。例えば「Permission denied」というメッセージが表示された際は、chmodコマンドで実行権限を付与するか、chownで所有者を変更します。また、管理者権限が必要なコマンドの場合は、sudoを使用して実行します。ただし、sudoの乱用はセキュリティリスクを高めるため、必要最小限の権限で運用するよう心がけましょう。権限に関する詳細は、man chmodman chownで確認できます。

Q3. Linuxコマンドの履歴を活用する方法は?

A3. Linuxのコマンド履歴は、historyコマンドで確認でき、過去に実行したコマンドを再利用したり編集したりすることができます。履歴から特定のコマンドを検索するには、Ctrl+Rを押してインタラクティブな検索モードに切り替え、入力したキーワードに一致するコマンドを呼び出します。また、履歴ファイル(通常は~/.bash_history)を直接編集することで、不要なコマンドを削除したり、頻繁に使用するコマンドを追加したりすることも可能です。履歴のサイズを制限するには、HISTSIZEHISTFILESIZE環境変数を設定します。

Q4. Linuxコマンドの実行結果をファイルに保存する方法は?

A4. Linuxコマンドの実行結果をファイルに保存するには、リダイレクト機能を使用します。例えば、コマンドの出力をファイルに上書き保存するには>を、追記するには>>を使用します(例:ls -l > output.txt)。また、エラー出力を別ファイルに保存するには2>を使用します(例:ls /nonexistent 2> error.log)。さらに、標準出力とエラー出力の両方を1つのファイルに保存するには&>を使用します(例:ls /nonexistent &> combined.log)。保存したファイルはcatlessで確認できます。

まとめと次のステップ

Linuxコマンド入門の第一歩として、基本的な操作からファイル管理、ユーザー権限、ネットワーク設定まで、幅広い機能を学んできました。コマンドラインインターフェースは、GUIでは実現できない柔軟性と効率性を提供し、システム管理や自動化において強力なツールとなります。特に、ファイル操作やテキスト処理、プロセス管理などの基本コマンドを習得することで、Linux環境での作業が大幅に効率化されるでしょう。また、シェルスクリプトを活用することで、繰り返し作業の自動化や複雑な処理の効率化が可能になります。

次に進むためのステップとして、実務に即した応用的なコマンドや、システム管理に関する知識を深めることをおすすめします。例えば、ログ管理やセキュリティ設定、ネットワークトラブルシューティングなど、より高度なトピックに取り組むことで、実践的なスキルを磨くことができます。さらに、Linuxディストリビューションごとの特性や、クラウド環境での活用方法についても理解を広げると、幅広いシーンで活躍できるでしょう。継続的な学習と実践を通じて、Linuxコマンドの活用範囲を広げていってください。

【編集・制作ポリシー】
本記事はInfra Academy編集部が各ベンダー公式ドキュメント・エンジニア監修をもとに作成しています。インフラ・クラウド構築は環境により異なります。本番環境への適用前に必ずテストを実施してください。情報の正確性には万全を期していますが、最新情報は各公式ドキュメントをご確認ください。
編集ポリシーはこちら
ABOUT ME
たから
フリーランスIT講師/エンジニア。 ◆経験:IT講師/インフラエンジニア/PM/マネジメント/採用/運用・保守・構築・設計 ◆取得資格:CCNA/CCNP/LPIC-1/AZ-900//サーティファイC言語/情報処理技術者 ◆サイドビジネス:アパレル事業/複数のWEBメディアを運営