はじめに

こんにちは!今回はunameコマンドについて学んでいきましょう。

unameは、システムのOS情報やハードウェア情報を表示するコマンドです。「このシステム、何のOSで動いてるんだろう?」って時に超便利。スクリプトで互換性をチェックする時にも使われます。

unameコマンドとは

unameコマンドは、システムに関する情報(オペレーティングシステム、ハードウェアプラットフォーム、カーネルバージョンなど)を表示する外部コマンドです。

スクリプトが異なるOS環境で正しく動作するか確認したり、システムのスペックを把握する時に欠かせないツール。

基本構文

1
uname [オプション]

オプションなしで実行すると、OSの種類(通常はLinux)が表示されます。

主なオプション

オプション 説明
-a すべての情報を表示
-s OSの種類を表示
-n ホスト名を表示
-r カーネルリリース番号表示
-v カーネルバージョン表示
-m マシンハードウェア表示
-p プロセッサタイプ表示
-i ハードウェアプラットフォーム表示

使用例

例1: オプションなし(OSの種類)

1
uname

実行結果:

1
Linux

OSの種類が表示されます。LinuxシステムならLinuxと出力されます。

例2: すべての情報を表示(-aオプション)

1
uname -a

実行結果:

1
Linux myhost 5.15.0-56-generic #62-Ubuntu SMP Tue Nov 22 19:49:14 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

すべてのシステム情報が1行で表示されます。

例3: OSの種類だけを表示(-sオプション)

1
uname -s

実行結果:

1
Linux

OSの種類のみが表示されます。

例4: ホスト名を表示(-nオプション)

1
uname -n

実行結果:

1
myhost

システムのホスト名が表示されます。

例5: カーネルリリース番号を表示(-rオプション)

1
uname -r

実行結果:

1
5.15.0-56-generic

Linuxカーネルのリリース番号が表示されます。

例6: カーネルバージョン情報を表示(-vオプション)

1
uname -v

実行結果:

1
#62-Ubuntu SMP Tue Nov 22 19:49:14 UTC 2022

カーネルのバージョン情報が表示されます。

例7: マシンハードウェアを表示(-mオプション)

1
uname -m

実行結果:

1
x86_64

マシンのハードウェアアーキテクチャ(64bit x86など)が表示されます。

例8: 複数オプションの組み合わせ

1
uname -sr

実行結果:

1
Linux 5.15.0-56-generic

複数のオプションを組み合わせて、必要な情報だけを表示できます。

Tips・注意点

オプションの組み合わせ

1
2
uname -s -r -m
uname -srm

どちらの書き方でも同じ結果が得られます。

スクリプトでOS判定

1
2
3
4
5
6
OS=$(uname -s)
if [ "$OS" = "Linux" ]; then
  echo "Linuxシステムです"
elif [ "$OS" = "Darwin" ]; then
  echo "Macシステムです"
fi

スクリプト内でシステム種別を判定する時に便利。

アーキテクチャの判定

1
2
3
4
5
6
ARCH=$(uname -m)
if [ "$ARCH" = "x86_64" ]; then
  echo "64bitシステムです"
elif [ "$ARCH" = "i686" ]; then
  echo "32bitシステムです"
fi

マシンのアーキテクチャを判定できます。

archコマンドとの違い

1
2
3
4
5
# unameでアーキテクチャを確認
uname -m

# archコマンドでも確認可能
arch

archコマンドはuname -mと同等です。

実践的な使い方

インストールスクリプトで互換性チェック

1
2
3
4
5
6
7
if uname -m | grep -q "x86_64"; then
  echo "64bitインストーラーを使用します"
  ./install-64bit.sh
else
  echo "32bitインストーラーを使用します"
  ./install-32bit.sh
fi

システムのアーキテクチャに応じて異なるインストーラーを選択。

バージョン情報をログに記録

1
echo "システム情報: $(uname -a)" >> setup.log

セットアップログにシステム情報を記録。トラブルシューティングで役立つ。

Linuxディストリビューション判定

1
2
3
4
5
if grep -qi "ubuntu" /etc/os-release; then
  echo "Ubuntuです"
elif grep -qi "centos" /etc/os-release; then
  echo "CentOSです"
fi

unameでOSの種類がわかったら、詳細なディストリビューション情報は/etc/os-releaseで確認。

カーネルバージョンが新しいか確認

1
2
3
4
KERNEL=$(uname -r | cut -d. -f1)
if [ "$KERNEL" -ge 5 ]; then
  echo "新しいカーネルです"
fi

カーネルバージョンをチェックしてアプリケーション互換性を判定。

まとめ

unameコマンドのポイント:

  • システムのOS、カーネル、ハードウェア情報を表示する外部コマンド
  • -aすべての情報を表示(最も一般的)
  • -s: OS種別、-n: ホスト名、-r: カーネル版
  • -m: アーキテクチャ(64bit/32bitなど)
  • スクリプトで環境判定に活躍
  • オプションを組み合わせて必要な情報だけを表示可能

unameコマンドは、複数のプラットフォームで動作するスクリプト開発では欠かせないツール。システムの違いを賢く判定して、適切な処理を実行しましょう!