一部のシステム情報を収集する必要があります。Linux一部のディストリビューション/バージョン固有の条件に従って、実行するアクションを決定します。
例を簡単にするために、仮想関数を作成しましたmy_function_display_operating_system
。これは役に立たない機能ですが、問題を解決します。
- 一般的なオペレーティングシステムタイプの検出(オペレーティングシステム、Linux、等。 )
- オペレーティングシステムの一部のバージョン情報を検出する
- 検出分布フレンドリーな名前
3.
私が最も助けが必要な場所に焦点を当てます。
ホストを表す文字列を読み取る安定した方法はありますか?Linuxディストリビューション名?
/etc/issue
私はこの情報を得ることができる他の方法や一連の方法がわからないので、以下の例を使用しています。
一つあるのは幸いです。時によって異なります。case
esac
答えは、必要に応じて非常に複雑なスイッチステートメントを書くことができます。
どこを見るべきかを知る必要があります。grep名前のせいで...
# Displays operating system.
function my_function_display_operating_system() {
local operating_system
case $my_global_os_type in
OSX)
printf -v operating_system \
'OS X v%s (build %s)' \
$(sw_vers -productVersion) \
$(sw_vers -buildVersion)
;;
Linux)
local -r linux_kernel_version=$(uname -r)
printf -v operating_system \
'GNU/Linux (kernel %s)' \
"$linux_kernel_version"
if [[ -f /etc/issue ]]; then
local -r distribution=$(cat /etc/issue | sed 's/ \\n \\l//g')
operating_system+="\nDistribution: $distribution"
fi
;;
*)
operating_system=Unknown
;;
esac
printf "Operating system: $operating_system\n"
}
出力例:
> my_function_display_system_information
Operating system GNU/Linux (kernel 3.5.0-25-generic)
Distribution Ubuntu 12.10
System memory 1 GB
Bash v4.2.37(1)-release
Vim VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Oct 26 2012 16 45 54)
# ... etc ...
答え1
非常に似たアドバイスがここに提供されます。
https://superuser.com/questions/11008/how-do-i-find-out-what-version-of-linux-im-running
短い答え:
ls /etc/*{release,version}
さまざまなディストリビューションはさまざまな形式で出力され、残念ながら単一の統合システムはありません。上記の答えは、最も一般的なファイルのいくつかをより詳細にリストしています。