mirror of
				https://github.com/torvalds/linux.git
				synced 2025-10-31 16:48:26 +02:00 
			
		
		
		
	 be6bb51a9f
			
		
	
	
		be6bb51a9f
		
	
	
	
	
		
			
			Rely on regex to find the version number, rather than rely on numerical input to be found in a particular input field. Proposed implementation also eliminates the necessity to invoke 'grep' + 'awk'. Signed-off-by: Alexander Kapshuk <alexander.kapshuk@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
		
			
				
	
	
		
			171 lines
		
	
	
	
		
			3.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			171 lines
		
	
	
	
		
			3.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
| #!/bin/sh
 | |
| # Before running this script please ensure that your PATH is
 | |
| # typical as you use for compilation/istallation. I use
 | |
| # /bin /sbin /usr/bin /usr/sbin /usr/local/bin, but it may
 | |
| # differ on your system.
 | |
| #
 | |
| echo 'If some fields are empty or look unusual you may have an old version.'
 | |
| echo 'Compare to the current minimal requirements in Documentation/Changes.'
 | |
| echo ' '
 | |
| 
 | |
| uname -a
 | |
| echo ' '
 | |
| 
 | |
| gcc -dumpversion 2>&1 |
 | |
| awk '/[0-9]+([.]?[0-9]+)+/ && !/not found$/{
 | |
| 	match($0, /[0-9]+([.]?[0-9]+)+/)
 | |
| 	printf("GNU C\t\t\t%s\n",
 | |
| 	substr($0,RSTART,RLENGTH))
 | |
| }'
 | |
| 
 | |
| make --version 2>&1 |
 | |
| awk '/GNU Make/{
 | |
| 	match($0, /[0-9]+([.]?[0-9]+)+/)
 | |
| 	printf("GNU Make\t\t%s\n",
 | |
| 	substr($0,RSTART,RLENGTH))
 | |
| }'
 | |
| 
 | |
| ld -v 2>&1 |
 | |
| awk '/[0-9]+([.]?[0-9]+)+/ && !/not found$/{
 | |
| 	match($0, /[0-9]+([.]?[0-9]+)+/)
 | |
| 	printf("Binutils\t\t%s\n",
 | |
| 	substr($0,RSTART,RLENGTH))
 | |
| }'
 | |
| 
 | |
| mount --version 2>&1 |
 | |
| awk '/[0-9]+([.]?[0-9]+)+/ && !/not found$/{
 | |
| 	match($0, /[0-9]+([.]?[0-9]+)+/)
 | |
| 	$0 = substr($0,RSTART,RLENGTH)
 | |
| 	printf("Util-linux\t\t%s\nMount\t\t\t%s\n",$0,$0)
 | |
| }'
 | |
| 
 | |
| depmod -V  2>&1 |
 | |
| awk '/[0-9]+([.]?[0-9]+)+/ && !/not found$/{
 | |
| 	match($0, /[0-9]+([.]?[0-9]+)+/)
 | |
| 	printf("Module-init-tools\t%s\n",
 | |
| 	substr($0,RSTART,RLENGTH))
 | |
| }'
 | |
| 
 | |
| tune2fs 2>&1 |
 | |
| awk '/^tune2fs/{
 | |
| 	match($0, /[0-9]+([.]?[0-9]+)+/)
 | |
| 	printf("E2fsprogs\t\t%s\n",
 | |
| 	substr($0,RSTART,RLENGTH))
 | |
| }'
 | |
| 
 | |
| fsck.jfs -V 2>&1 |
 | |
| awk '/version/{
 | |
| 	match($0, /[0-9]+([.]?[0-9]+)+/)
 | |
| 	printf("Jfsutils\t\t%s\n",
 | |
| 	substr($0,RSTART,RLENGTH))
 | |
| }'
 | |
| 
 | |
| reiserfsck -V 2>&1 |
 | |
| awk '/^reiserfsck/{
 | |
| 	match($0, /[0-9]+([.]?[0-9]+)+/)
 | |
| 	printf("Reiserfsprogs\t\t%s\n",
 | |
| 	substr($0,RSTART,RLENGTH))
 | |
| }'
 | |
| 
 | |
| fsck.reiser4 -V 2>&1 | grep ^fsck.reiser4 | awk \
 | |
| 'NR==1{print "reiser4progs          ", $2}'
 | |
| 
 | |
| xfs_db -V 2>&1 |
 | |
| awk '/version/{
 | |
| 	match($0, /[0-9]+([.]?[0-9]+)+/)
 | |
| 	printf("Xfsprogs\t\t%s\n",
 | |
| 	substr($0,RSTART,RLENGTH))
 | |
| }'
 | |
| 
 | |
| pccardctl -V 2>&1 |
 | |
| awk '/pcmciautils/{
 | |
| 	match($0, /[0-9]+([.]?[0-9]+)+/)
 | |
| 	printf("Pcmciautils\t\t%s\n",
 | |
| 	substr($0,RSTART,RLENGTH))
 | |
| }'
 | |
| 
 | |
| cardmgr -V 2>&1| grep version | awk \
 | |
| 'NR==1{print "pcmcia-cs             ", $3}'
 | |
| 
 | |
| quota -V 2>&1 |
 | |
| awk '/version/{
 | |
| 	match($0, /[0-9]+([.]?[0-9]+)+/)
 | |
| 	printf("Quota-tools\t\t%s\n",
 | |
| 	substr($0,RSTART,RLENGTH))
 | |
| }'
 | |
| 
 | |
| pppd --version 2>&1 |
 | |
| awk '/version/{
 | |
| 	match($0, /[0-9]+([.]?[0-9]+)+/)
 | |
| 	printf("PPP\t\t\t%s\n",
 | |
| 	substr($0,RSTART,RLENGTH))
 | |
| }'
 | |
| 
 | |
| isdnctrl 2>&1 | grep version | awk \
 | |
| 'NR==1{print "isdn4k-utils          ", $NF}'
 | |
| 
 | |
| showmount --version 2>&1 | grep nfs-utils | awk \
 | |
| 'NR==1{print "nfs-utils             ", $NF}'
 | |
| 
 | |
| test -r /proc/self/maps &&
 | |
| sed '
 | |
| 	/.*libc-\(.*\)\.so$/!d
 | |
| 	s//Linux C Library\t\t\1/
 | |
| 	q
 | |
| ' /proc/self/maps
 | |
| 
 | |
| ldd --version 2>&1 |
 | |
| awk '/^ldd/{
 | |
| 	match($0, /[0-9]+([.]?[0-9]+)+/)
 | |
| 	printf("Dynamic linker (ldd)\t%s\n",
 | |
| 	substr($0,RSTART,RLENGTH))
 | |
| }'
 | |
| 
 | |
| libcpp=`ldconfig -p 2>/dev/null |
 | |
| 	awk '/(libg|stdc)[+]+\.so/ {
 | |
| 	print $NF
 | |
| 	exit
 | |
| 	}
 | |
| '`
 | |
| test -r "$libcpp" &&
 | |
| ls -l $libcpp |
 | |
| sed '
 | |
| 	s!.*so\.!!
 | |
| 	s!^!Linux C++ Library\t!
 | |
| '
 | |
| ps --version 2>&1 |
 | |
| awk '/version/{
 | |
| 	match($0, /[0-9]+([.]?[0-9]+)+/)
 | |
| 	printf("Procps\t\t\t%s\n",
 | |
| 	substr($0,RSTART,RLENGTH))
 | |
| }'
 | |
| 
 | |
| ifconfig --version 2>&1 |
 | |
| awk '/tools/{
 | |
| 	match($0, /[0-9]+([.]?[0-9]+)+/)
 | |
| 	printf("Net-tools\t\t%s\n",
 | |
| 	substr($0,RSTART,RLENGTH))
 | |
| }'
 | |
| 
 | |
| # Kbd needs 'loadkeys -h',
 | |
| loadkeys -h 2>&1 | awk \
 | |
| '(NR==1 && ($3 !~ /option/)) {print "Kbd                   ", $3}'
 | |
| 
 | |
| # while console-tools needs 'loadkeys -V'.
 | |
| loadkeys -V 2>&1 | awk \
 | |
| '(NR==1 && ($2 ~ /console-tools/)) {print "Console-tools         ", $3}'
 | |
| 
 | |
| oprofiled --version 2>&1 | awk \
 | |
| '(NR==1 && ($2 == "oprofile")) {print "oprofile              ", $3}'
 | |
| 
 | |
| expr --v 2>&1 | awk 'NR==1{print "Sh-utils              ", $NF}'
 | |
| 
 | |
| udevinfo -V 2>&1 | grep version | awk '{print "udev                  ", $3}'
 | |
| 
 | |
| iwconfig --version 2>&1 | awk \
 | |
| '(NR==1 && ($3 == "version")) {print "wireless-tools        ",$4}'
 | |
| 
 | |
| if [ -e /proc/modules ]; then
 | |
|     X=`cat /proc/modules | sed -e "s/ .*$//"`
 | |
|     echo "Modules Loaded         "$X
 | |
| fi
 |