shtool platform - GNU shtool Unix platform identification
shtool platform [-F|--format format]
[-S|--sep string] [-C|--conc
string] [-L|--lower] [-U|--upper]
[-v|--verbose] [-c|--concise]
[-n|--newline] [-d|--debug]
[-t|--type type] [-n|--newline]
[-d|--debug]
shtool platform is a flexible Unix platform identification
program. It distinguishes a platform according to its hardware
architecture and operating system. For both there is a
class, product and technology identification. For each
of those six identifications, there is a verbose, regular and
concise version.
This leads to eighteen (2x3x3) available identification strings
for each platform, from which usually 2 are chosen in a particular
situation. This is done by assembling the platform identification string
using a format string containing one or more identification
constructs of the forms
""%[xx]"" (verbose),
""%{xx}"" (regular) and
""%<xx>"" (concise).
The following command line options are available.
- -F, --format
format
- This option controls the output formatting of this program. It is a
plain-text string with the
""%"xx" constructs
which expand to the various platform information strings.
""%{"xx"}""
is the canonical regular version of the information.
""%["xx"]""
is the verbose version of the information.
""%<"xx">""
is the concise version of the information. In total, the following
constructs are available for expansion:
%[ac] verbose hardware architecture class
%{ac} regular hardware architecture class
%<ac> concise hardware architecture class
%[ap] verbose hardware architecture product
%{ap} regular hardware architecture product
%<ap> concise hardware architecture product
%[at] verbose hardware architecture technology
%{at} regular hardware architecture technology
%<at> concise hardware architecture technology
%[sc] verbose operating system class
%{sc} regular operating system class
%<sc> concise operating system class
%[sp] verbose operating system product
%{sp} regular operating system product
%<sp> concise operating system product
%[st] verbose operating system technology
%{st} regular operating system technology
%<st> concise operating system technology
The default format string is
""%{sp} (%{ap})"", providing
the regular operating system and hardware architecture product
information.
- -S, --sep
string
- This option sets the word separation string for the platform
information strings. By default it is ""
"" (whitespace). It is especially used for separating the
operating system name and the operating system version.
- -C, --conc
string
- This option sets the word concatenation string for the platform
information strings. By default it is
""/"". It is especially used
to concatenate multiple parts in operating system name and version
parts.
- -L, --lower
- This options enforces conversion of the output to all lower
case.
- -U, --upper
- This options enforces conversion of the output to all upper
case.
- -v, --verbose
- This option enforces verbose versions of all expansion constructs in
format string of option -F. It is equal to specifying all
expansion constructs as
""%["xx"]"".
- -c, --concise
- This option enforces concise versions of all expansion constructs in
format string of option -F. It is equal to specifying all
expansion constructs as
""%<"xx">"".
- -n,
--no-newline
- This option omits the usual trailing newline character in the output.
- -t, --type
type
- This option is a meta option which internally sets options -F,
-S, -C, -L, -U, -v or -c
according to TYPE. It can be used to easily specify various
commonly known outputs. The following TYPEs are available:
- binary
- Binary Package Id (OpenPKG RPM). This is equal to
""-F '%<ap"-%<sp>' -L -S
'' -C '+'>" and results in outputs like
""ix86-freebsd4.9"" and
""ix86-debian3.0"".
- build
- Build-Time Checking (OpenPKG RPM). This is equal to
""-F '%<at"-%<st>' -L -S
'' -C '+'>" and results in outputs like
""i686-freebsd4.9"" and
""i586-linux2.4"".
- gnu
- GNU config.guess Style Id. This is similar to build and is
equal to ""-F
'"%<at"-unknown-%<st>' -L -S '' -C '+'>"
and results in outputs like
""i686-unknown-freebsd4.9""
and
""i586-unknown-linux2.4"".
- web
- HTTP Server Header Id. This is equal to ""-F
'"%<sp"-%<ac>' -S '/' -C '+'>" and
results in outputs like
""FreeBSD/4.9-iX86"" and
""Debian/3.0-iX86"".
- summary
- Human Readable Verbose Summary Information. This is equal to
"-F 'Class: %[sc]
(%[ac])\nProduct: %[sp] (%[ap])\nTechnology: %[st]
(%[at])' -S ' ' -C '/'" and results in
outputs like:
Class: 4.4BSD (iX86)
Product: FreeBSD 4.9-RC (iX86)
Technology: FreeBSD 4.9-RC (i686)
and
Class: LSB (iX86)
Product: Debian GNU/Linux 3.0 (iX86)
Technology: GNU/Linux 2.2/2.4 (i686)
- all-in-one
- All-In-One Full-Table Information. This just outputs really all 2x2x3
identification strings as a table.
- -d, --debug
- This option enables some internal debugging messages.
- -V, --version
- This option outputs the version information of shtool platform
only.
- -h, --help
- This option outputs the usage information of shtool platform
only.
shtool platform currently knows the following particular
Unix platforms in detail: FreeBSD, NetBSD, OpenBSD, Linux, Sun Solaris, SCO
UnixWare, QNX Neutrino, SGI IRIX, HP HP-UX, HP Tru64, IBM AIX and Apple Mac
OS X Darwin.
All other Unix platforms are recognized through generic
uname(1) information and so usually can be identified sufficiently,
although the identification might be not as precise as possible.
shtool platform was implemented in September 2003 by
Ralf S. Engelschall for use in the OSSP and
OpenPKG projects. It was prompted by the need in OpenPKG to
have both product (for RPM filenames) and technology (for build-time
decisions) identifiers for the Unix platforms, OpenPKG packages are
maintained for. It was inspired by the GNU config.guess and
the old GNU shtool guessos command.
The major difference to GNU config.guess is that
shtool platform does not use a vendor identification (cannot
be determined most of the time and is not used at all in all projects I've
ever seen) and is a lot more flexible (class, product and technology
identifications combined with verbose, regular and concise outputs). The
drawback of shtool platform is that it (still) knows less particular
platforms, although the generic platform identification is sufficient enough
most of the time.
uname(3), GNU config.guess.