Linux基本コマンドとその活用法

はじめに

Linuxは、サーバーからクラウド環境、データサイエンスプラットフォーム(Google Colaboratoryなど)に至るまで、現代のITインフラを支える重要なOSです。その操作の核となるのが、シェルを通じて実行されるコマンドラインインターフェース(CLI)です。本記事では、Ubuntu 24.04環境を前提とし、頻繁に使用される基本的なコマンドから、ファイル操作、テキスト処理、プロセス管理、ネットワーク操作といった実践的な活用法までを解説します。これらのコマンドを習得することで、作業効率を大幅に向上させ、開発、研究、システム管理におけるスキルアップを目指すことができます。AI、プログラミング、データベースを学ぶ場合にも、Linuxコマンドは不可欠な基礎知識となるでしょう。本記事では、基本的なファイル操作から、テキスト処理、プロセス管理、ネットワーク操作、さらにはバージョン管理まで、Linux環境での必須コマンドを解説します。特に、ワイルドカード、パイプ、リダイレクトといったシェルの強力な機能を組み合わせることで、複雑なタスクも効率的に実行可能になることを示します。これらの知識は、AI、プログラミング、データベース分野での開発や研究を力強くサポートするでしょう。

【目次】

  1. Linuxとシェル入門
  2. 基本的なファイル・ディレクトリ操作
  3. ファイルの内容表示と基本操作
  4. シェルの強力な機能:ワイルドカード、リダイレクト、パイプ
  5. テキスト処理
  6. アーカイブと圧縮
  7. プロセス管理
  8. リモート接続とプロセス継続
  9. システム管理の基本(ユーザー、権限、パッケージ等)
  10. ネットワーク操作
  11. バージョン管理システム Git
  12. Google ColaboratoryでのLinux活用

Linuxとシェル入門

Linuxを操作する上で基本となる「シェル」と、コマンド実行の仕組みについて解説します。

シェルとは? コマンドの基本

シェルは、ユーザーが入力したコマンドを解釈し、OS(カーネル)に伝えて実行させるプログラムです。Ubuntu 24.04では、デフォルトで `bash` (Bourne Again SHell) が広く使われています。

環境変数 PATH とコマンド検索

シェルは、環境変数PATHに設定されたディレクトリ群(例: /usr/bin/usr/local/binなど)から実行したいコマンドを自動的に検索します。これにより、ユーザーはコマンドの正確な格納場所(パス)を知らなくても、コマンド名だけで実行できます。

echo $PATH
export PATH="$HOME/bin:$PATH" # 一時的な追加。永続化するには ~/.bashrc 等のシェル設定ファイルに追記

現在の作業ディレクトリと ./ の意味

ユーザーが現在作業しているディレクトリを「現在の作業ディレクトリ」(カレントディレクトリ)と呼びます。カレントディレクトリにあるプログラムファイルを実行する場合は、意図しないプログラムの実行を防ぐセキュリティ上の理由から、ファイル名の前に ./ を付けて、カレントディレクトリにあることを明示的に示す必要があります。

pwd          # 現在の作業ディレクトリを表示します
cd works     # worksディレクトリに移動します (現在の作業ディレクトリを変更)
./my_program # 現在の作業ディレクトリにある my_program を実行します

which - コマンドのパスを表示

指定したコマンドの実行ファイルが、どのディレクトリに存在するか(フルパス)を表示します。環境変数PATHで指定されたディレクトリを検索します。

which ls       # lsコマンドのパスを表示します (例: /usr/bin/ls)
which python3  # python3コマンドのパスを表示します (Ubuntuでは python ではなく python3 が標準)

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

ファイルやディレクトリを作成、移動、削除するなど、基本的な操作を行うコマンドを紹介します。

ファイルの内容表示と基本操作

ファイルの内容を確認したり、コピー、移動、削除といった基本的なファイル操作を行うコマンドを紹介します。

シェルの強力な機能:ワイルドカード、リダイレクト、パイプ

シェルが提供するこれらの機能を活用することで、コマンドの操作をより柔軟かつ強力に行うことができます。

ワイルドカード - ファイル名のパターンマッチング

複数のファイルを一度に指定したい場合などに便利な、特殊な記号(メタ文字)です。

ls *.log
cp chapter?.md docs/
rm report[1-3].txt # report1.txt, report2.txt, report3.txt に一致

標準入出力とリダイレクト - コマンドの入出力先の変更

Linuxのコマンドは通常、以下の3つの標準ストリームを持ちます。

リダイレクトは、これらの標準ストリームの入出力先をファイルなどに変更する機能です。

ls -l > file_list.txt            # lsの結果を file_list.txt に上書き保存
echo "Log entry" >> system.log   # 文字列を system.log の末尾に追記
sort < data.txt                # data.txt の内容を sort コマンドの入力とする
make 2> error_log.txt           # make 実行時のエラーメッセージを error_log.txt に保存
./my_script.sh > output.log 2>&1 # スクリプトの全出力 (標準出力+エラー) を output.log に保存

パイプ - コマンドの出力を別のコマンドの入力へ

パイプ (|) は、あるコマンドの標準出力を、別のコマンドの標準入力に直接繋ぐ(パイプライン化する)機能です。複数のコマンドを連携させて複雑な処理を行う際に非常に強力です。

ls -l /etc | less                   # /etc ディレクトリの詳細一覧を less で表示
ps aux | grep 'httpd'             # 全プロセス情報から 'httpd' を含む行を検索
cat access.log | cut -d ' ' -f 1 | sort | uniq -c | sort -nr # アクセスログからIPアドレス毎のアクセス数を集計

テキスト処理

テキストデータの検索、加工、集計を行うコマンドです。ログ解析やデータ整形に役立ちます。

アーカイブと圧縮

複数のファイルを一つにまとめたり(アーカイブ)、ファイルサイズを小さくしたり(圧縮)します。バックアップやファイル転送に便利です。

プロセス管理

システム上で実行中のプログラム(プロセス)の状態を確認したり、制御したりします。

プロセス状態の確認

ジョブ管理 (バックグラウンドプロセス)

現在のシェルセッション内で実行されているジョブ(フォアグラウンド/バックグラウンドプロセス)を管理します。

プロセスの終了

リモート接続とプロセス継続

SSHでのリモート作業や、長時間かかる処理を実行する際に役立つ機能です。

システム管理の基本(ユーザー、権限、パッケージ等)

システムの基本的な管理操作を行うコマンドです。多くの場合、管理者権限(root権限)が必要になります。

ネットワーク操作

ネットワーク接続の確認、設定表示、データ転送などを行います。Ubuntu 24.04では、旧来の `ifconfig` や `netstat` コマンドよりも、新しい `ip` や `ss` コマンドの使用が推奨されます。

バージョン管理システム Git

ソースコードなどの変更履歴を管理するための分散型バージョン管理システムです。開発プロジェクトにおいて、複数人での共同作業や変更履歴の追跡に不可欠なツールです。

Google ColaboratoryでのLinux活用

Google Colaboratory (Colab) は、バックエンドでLinux (主にUbuntu) が動作しているため、ノートブックのセル内でLinuxコマンドを利用できます。コマンドの前に感嘆符 `!` を付けます。

1. ライブラリ管理と環境構築

Pythonライブラリのインストールには `pip` を、システムライブラリのインストールには `apt` (または `apt-get`) を使用します。

# Python パッケージのインストール (pip)
!pip install numpy pandas matplotlib

# システムパッケージの更新とインストール (apt-get)
!apt-get update
!apt-get install -y libgl1-mesa-glx # 例: グラフィック関連ライブラリ

# インストール済みパッケージの確認
!pip list
!dpkg -l | grep libgl1

注意: Colabのランタイム(実行環境)は一時的なものです。ランタイムがリセットされると、インストールしたパッケージも消えるため、ノートブックを開くたびに実行が必要になる場合があります。

2. データファイルの操作とバージョン管理

Google Driveをマウントしてファイルを永続化したり、Gitを使ってコードやデータを管理したりできます。

# Google Drive のマウント
from google.colab import drive
drive.mount('/content/drive')

# Drive内のファイルを確認
!ls -l /content/drive/MyDrive/

# Gitリポジトリのクローン
!git clone https://github.com/user/repository.git

# リポジトリに移動 (%cd マジックコマンド)
# !cd はサブシェルで実行されるため、カレントディレクトリが維持されない。%cd を使う。
%cd repository

# Git操作 (pushには認証設定が必要な場合あり)
!git status
!git add .
!git commit -m "Update from Colab"
# !git push # pushには通常、認証情報の設定が必要

# 大容量ファイルをGoogle Driveからダウンロード (要 gdown)
# !pip install gdown # 必要ならインストール
# !gdown --id YOUR_FILE_ID -O data.zip
# !unzip data.zip

注意: Colabのローカルストレージ (`/content/` 以下) のファイルは、ランタイム終了時に消去されます。重要なデータはGoogle Driveに保存するか、Gitリポジトリに push してください。

3. データファイルの整理と分析準備

データセットの確認、前処理、整理などにLinuxコマンドが役立ちます。

!ls -lh data/                       # dataディレクトリ内のファイルサイズを読みやすく表示
!file data/image.jpg                # ファイルの種類を判別
!wc -l data/labels.txt              # ラベルファイルの行数をカウント
!du -sh dataset/                    # datasetディレクトリの合計サイズを表示
!grep -r 'class_A' dataset/annotations/ # annotationsディレクトリ以下で 'class_A' を含む行を再帰的に検索
!find . -name '*.csv' -mtime -1     # カレントディレクトリ以下で最近1日以内に変更されたCSVファイルを検索
!rm -rf temp_output/                # 不要なディレクトリを削除 (**削除すると元に戻せません!パスをよく確認してください!**)

4. ファイルの圧縮と展開

処理結果をまとめてダウンロードしたり、データセットを展開したりする際に使います。

# 結果を圧縮してDriveに保存
!tar -czvf results.tar.gz output_files/
!cp results.tar.gz /content/drive/MyDrive/

# Driveから圧縮ファイルを展開
!cp /content/drive/MyDrive/dataset.zip .
!unzip dataset.zip

5. ネットワーク接続の診断 (限定的)

外部APIへの接続確認などに `ping` や `curl` が使えますが、Colab環境のネットワーク構成によっては制限がある場合があります。

!ping -c 4 google.com
!curl -I https://api.example.com/status # ヘッダー情報のみ取得 (-I)