Showing posts with label oneliner. Show all posts
Showing posts with label oneliner. Show all posts

Saturday, December 15, 2012

Determine your BogoMIPS

Yeah, BogoMIPS are bogus, but it's a lot of fun to know how much you have in your computer. Usually you'll find this line to tell you how much you have:
dmesg | grep - 'bogomips'
(or something worse). This is a bad command line because if you happen to have an big uptime (today my uptime is 48 days, which is quite low), this command will not work as most of the kernel's logs have been flushed somewhere else. This is a bad command line because it's not fun at all!
I like dc a little bit, and here's how you can add a lot of numbers using dc:
gniourf@somewhere$ dc <<< '[+]sa[z2!>az2!>b]sb1 2 3 4 5 6 6 5 4 3 2 1lbxp'
42
gniourf@somewhere$ 
Cool eh? Please, read man dc to learn about registers and all that in dc.
To determine your BogoMIPS, you just can do this:
gniourf@somewhere$ dc <<< '[+]sa[z2!>az2!>b]sb'"$(sed -n '/bogomips/Is/.*://p' /proc/cpuinfo)"'lbxp'
10374.47
gniourf@somewhere$
If you want the average BogoMIPS per processor, do:
gniourf@somewhere$ dc <<< '2k[+]sa[z2!>az2!>b]sb'"$(sed -n '/bogomips/Is/.*://p' /proc/cpuinfo)"'zsclbxlc/p'
5187.23
gniourf@somewhere$
I wrote this note because I stumbled by accident on the most terrible command line you could think of. Just for posterity and as an example of something you should never ever do, here it is:
dumbo@moronity$ echo $(echo "print ((($( cat /proc/cpuinfo | grep bogomips | awk '{print $3}' | tr -s '\n' '+')0)/$(echo 4))+($( cat /proc/cpuinfo | grep bogomips | awk '{print $3}' | tr -s '\n' '+')0))/2" | python)
By respect to the author of this junk, I will not give you his name.


Exercise.
  1. Count how many pipes, subshells and process forks there are in the previous command line.
  2. Count how many Useless Uses of Cats there are.
  3. Conclusion? (Hint: look at the login)

Cheers!

Saturday, November 12, 2011

What are the groups I don't belong to?

So you're running your nice linux box, and everything is fine. Everything? No. All of a sudden you really wonder what groups you're in. No problem, just issue
gniourf@somewhere:~$ groups
and you'll be okay. Hey, but wait, in fact that was not exactly your question. In fact, after a deep thought, you realize that your question was the opposite! You were wondering what groups you're not in! If you know a little bit of sed, and if you know how the entries of the /etc/group are formatted, you realize that this one-liner will do the job!
gniourf@somewhere:~$ sed "/\b$USER\b/d;s/:.*//" /etc/group | tr \\n ' '; echo
The piped tr is just here because you don't want to have only one group per line, and the echo to have a new line after all this junk.
You could even add an alias in your .bashrc, or make a function, depending on your needs.

Cheers!