diff --git a/bin/freebsd-version/freebsd-version.1 b/bin/freebsd-version/freebsd-version.1 index b580c580fcbc..418adfbc965b 100644 --- a/bin/freebsd-version/freebsd-version.1 +++ b/bin/freebsd-version/freebsd-version.1 @@ -25,7 +25,7 @@ .\" .\" $FreeBSD$ .\" -.Dd October 1, 2021 +.Dd August 10, 2022 .Dt FREEBSD-VERSION 1 .Os .Sh NAME @@ -33,7 +33,7 @@ .Nd print the version and patch level of the installed system .Sh SYNOPSIS .Nm -.Op Fl kru +.Op Fl kruv .Op Fl j Ar jail .Sh DESCRIPTION The @@ -61,6 +61,15 @@ Print the version and patch level of the installed userland. These are hardcoded into .Nm during the build. +.It Fl v +Enable printing out verbose information for kernel and/or userland. +It's a representation of +.Pa "__FreeBSD_version" . +Those are also know as +.Pa OSRELDATE +or +.Pa OSVERSION . +More information about it is documented in the Porter's Handbook. .It Fl j Ar jail Print the version and patch level of the installed userland in the given jail specified by @@ -113,6 +122,11 @@ To determine the version of the currently running userland: /bin/freebsd-version -u .Ed .Pp +To print out a more verbose output of the command above: +.Bd -literal -offset indent +/bin/freebsd-version -uv +.Ed +.Pp To inspect a system being repaired using a live CD: .Bd -literal -offset indent mount -rt ufs /dev/ada0p2 /mnt @@ -131,3 +145,5 @@ The .Nm utility and this manual page were written by .An Dag-Erling Sm\(/orgrav Aq Mt des@FreeBSD.org . +The verbose information output was added and documented by +.An Vinicius Zavam Aq Mt egypcio@FreeBSD.org . diff --git a/bin/freebsd-version/freebsd-version.sh.in b/bin/freebsd-version/freebsd-version.sh.in index be1be366f652..649410ff3f86 100644 --- a/bin/freebsd-version/freebsd-version.sh.in +++ b/bin/freebsd-version/freebsd-version.sh.in @@ -39,6 +39,7 @@ LOADER_RE2='^\([A-Z_a-z][0-9A-Z_a-z]*="[-./0-9A-Z_a-z]\{1,\}"\).*$' KERNEL_RE='^@@TYPE@@ \([-.0-9A-Za-z]\{1,\}\) .*$' progname=${0##*/} +progverbose=0 # # Print an error message and exit. @@ -67,21 +68,29 @@ kernel_version() { if [ ! -f "$kernfile" -o ! -r "$kernfile" ] ; then error "unable to locate kernel" fi - what -qs "$kernfile" | sed -n "s/$KERNEL_RE/\\1/p" + if [ $progverbose -gt 0 ] ; then + what -qs "$kernfile" | awk -F':' '{ print $1 }' | cut -d' ' -f2- + else + what -qs "$kernfile" | sed -n "s/$KERNEL_RE/\\1/p" + fi } # # Print the version of the currently running kernel. # running_version() { - sysctl -n kern.osrelease + out=$(sysctl -n kern.osrelease) + [ $progverbose -gt 0 ] && out="${out} $(sysctl -n kern.osreldate)" + echo "$out" } # # Print the hardcoded userland version. # userland_version() { - echo $USERLAND_VERSION + out=$USERLAND_VERSION + [ $progverbose -gt 0 ] && out="${USERLAND_VERSION} $(uname -U)" + echo "$out" } # @@ -97,7 +106,7 @@ jail_version() { # Print a usage string and exit. # usage() { - echo "usage: $progname [-kru] [-j jail]" >&2 + echo "usage: $progname [-kruv] [-j jail]" >&2 exit 1 } @@ -107,7 +116,7 @@ usage() { main() { # parse command-line arguments local OPTIND=1 OPTARG option - while getopts "kruj:" option ; do + while getopts "kruvj:" option ; do case $option in k) opt_k=1 @@ -118,6 +127,9 @@ main() { u) opt_u=1 ;; + v) + progverbose=1 + ;; j) if [ $opt_j ] ; then jail="$jail $OPTARG"