On Tue, Oct 06, 2015 at 10:47:43AM +0200, Jakub Wilk wrote: > * Philip Hands <p...@hands.com>, 2015-10-06, 09:35: > > sed -ne > > '/^flags\t/{s/\b\(fpu\|tsc\|cx8\|cmov\)\b/%/g;s/[^%]*//g;s/%%%%/i686 > > SUPPORTED/p}' /proc/cpuinfo > > Or a more readable version: > > [ $(lscpu | grep ^Flags: | grep -owE 'fpu|tsc|cx8|cmov' | wc -l) = 4 ] && > echo i686 SUPPORTED
Phil's second one works for me, yours does not, on a CPU identified as "Intel(R) Core(TM) i5-2540M CPU @ 2.60GHz" in /proc/cpuinfo. I don't really know what the right test is (I don't keep of CPU changes), but I changed Phil's sed into a shell script that I find more readable. Attached. Hopefully that's helpful to someone and not too badly wrong.
#!/bin/sh set -eu # Get CPU feature flags from /proc/cpuinfo. get_flags() { sed -ne '/^flags\t*: /s///p' /proc/cpuinfo | tr ' ' '\n' } # Do we have the right flags for an i686? if get_flags | grep -Ee 'fpu|tac|cx8|cmov' > /dev/null then echo "i686 is supported" else echo "i686 is NOT SUPPORTED" 1>&2 exit 1 fi