commandlinefu.com is the place to record those command-line gems that you return to again and again.
Delete that bloated snippets file you've been using and share your personal repository with the world. That way others can gain from your CLI wisdom and you from theirs too. All commands can be commented on, discussed and voted up or down.
If you have a new feature suggestion or find a bug, please get in touch via http://commandlinefu.uservoice.com/
You can sign-in using OpenID credentials, or register a traditional username and password.
First-time OpenID users will be automatically assigned a username which can be changed after signing in.
Every new command is wrapped in a tweet and posted to Twitter. Following the stream is a great way of staying abreast of the latest commands. For the more discerning, there are Twitter accounts for commands that get a minimum of 3 and 10 votes - that way only the great commands get tweeted.
» http://twitter.com/commandlinefu
» http://twitter.com/commandlinefu3
» http://twitter.com/commandlinefu10
Use your favourite RSS aggregator to stay in touch with the latest commands. There are feeds mirroring the 3 Twitter streams as well as for virtually every other subset (users, tags, functions,…):
Subscribe to the feed for:
Use sed to color the output of a human-readable dmesg output
There are 2 alternatives - vote for the best!
If you can do better, submit your command here.
You must be signed in to comment.
With sed it's easy to choose the bash color to use ;34 here for blue.
You can also use grep to highlight the date instead of sed.
dmesg -T| grep --color "^\[.*`date +%Y`\]"
And export the GREP_COLORS variable to change the color.
ex : export GREP_COLORS="fn=34:mc=01;30:ms=33:sl=21:cx=31"
dmesg -T works on my archlinux but on my debian server option -T does not exist.
You can use perl if your dmesg does not support -T :
dmesg|perl -ne "BEGIN{\$a= time()- qx!cat /proc/uptime!};s/\[\s*(\d+)\.\d+\]/localtime(\$1 + \$a)/e; print \$_;" | sed -e 's|\(^.*'`date +%Y`' \)\(.*\)|\x1b[0;34m\1\x1b[0m - \2|g'
Not working on CentOS:
dmesg: invalid option -- T
-T option to dmesg is available on Fedora but not RHEL5/6.
@dynaguy so as said on my previous comment on CentOS you should try :
dmesg|perl -ne "BEGIN{\$a= time()- qx!cat /proc/uptime!};s/\[\s*(\d+)\.\d+\]/localtime(\$1 + \$a)/e; print \$_;" | sed -e 's|\(^.*'`date +%Y`' \)\(.*\)|\x1b[0;34m\1\x1b[0m - \2|g'
If you get the error :
bash: !}: event not found
You need to turn off bash history substitution with : set +H
@jlaunay I just tried on CentOS 6.3 64bit. After "set +H" there is no more error message. But your command still doesn't give time stamp.
Recent CentOS use rsyslog. What I did is edit /etc/rsyslog.conf, add:
kern.* /var/log/kern.log
then "service rsyslog restart"
Now you can view dmesg in file /var/log/kern.log with time/data
@dynaguy Good to know if I have to use CentOS one day.Thks
"dmesg -T" gives:
"dmesg: invalid option -- 'T'
Usage: dmesg [-c] [-n level] [-r] [-s bufsize]"
@mpb you should have a look at the previous comments. I gave an alternative usefull on OS using a dmesg which doesn't support the -T option.
@dynaguy -- no need to turn off bash history substitution. Change the bangs to ':'. The bangs are simply used as delimiters to the qx function, and were simply chosen as a character which wouldn't conflict with all of the other possible delimiters being used in the expression being quoted. Using ':' instead doesn't cause the history substitution problems...
@dynaguy -- no need to turn off bash history substitution. Change the bangs to ':'. The bangs are simply used as delimiters to the qx function, and were simply chosen as a character which wouldn't conflict with all of the other possible delimiters being used in the expression being quoted. Using ':' instead doesn't cause the history substitution problems...
dmesg |ccze -A