Hide

What's this?

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.


Get involved!

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.

Universal configuration monitoring and system of record for IT.
Hide

Stay in the loop…

Follow the Tweets.

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

Subscribe to the feeds.

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:

Hide

News

May 19, 2015 - A Look At The New Commandlinefu
I've put together a short writeup on what kind of newness you can expect from the next iteration of clfu. Check it out here.
March 2, 2015 - New Management
I'm Jon, I'll be maintaining and improving clfu. Thanks to David for building such a great resource!
Hide

Top Tags

Hide

Functions

Psst. Open beta.

Wow, didn't really expect you to read this far down. The latest iteration of the site is in open beta. It's a gentle open beta-- not in prime-time just yet. It's being hosted over at UpGuard (link) and you are more than welcome to give it a shot. Couple things:

  • » The open beta is running a copy of the database that will not carry over to the final version. Don't post anything you don't mind losing.
  • » If you wish to use your user account, you will probably need to reset your password.
Your feedback is appreciated via the form on the beta page. Thanks! -Jon & CLFU Team

a shell function to print a ruler the width of the terminal window.

Terminal - a shell function to print a ruler the width of the terminal window.
ruler() { for s in '....^....|' '1234567890'; do w=${#s}; str=$( for (( i=1; $i<=$(( ($COLUMNS + $w) / $w )) ; i=$i+1 )); do echo -n $s; done ); str=$(echo $str | cut -c -$COLUMNS) ; echo $str; done; }
2010-01-28 19:25:25
User: bartonski
Functions: cut echo
14
a shell function to print a ruler the width of the terminal window.

Alternatives

There is 1 alternative - vote for the best!

Terminal - Alternatives
ruler() { for s in '....^....|' '1234567890'; do w=${#s}; str=''; for (( i=1; i<=(COLUMNS + w) / $w; i=i+1 )); do str+=$s; done; str=${str:0:COLUMNS} ; echo $str; done; }
2010-01-31 05:55:00
User: dennisw
Functions: echo
1

A similar version for Bash that doesn't require cut and shortens the function in a few places. And it uses local variables. (similar to a version by eightmillion in a comment on the another version)

Know a better way?

If you can do better, submit your command here.

What others think

awesome

Comment by linuxrawkstar 343 weeks and 3 days ago

? If a take a real ruler, that doesn't match the result of the shell output...

Comment by sputnick 343 weeks and 3 days ago

This is a little shorter, but it doesn't work on zsh:

ruler(){ for s in '....^....|' '1234567890';do unset str;while [ ${#str} -lt $COLUMNS ];do str=$str$s;done;echo ${str:0:$COLUMNS};done;}

I think this method is kind of interesting too:

ruler(){ for s in '....^....|' '1234567890';do str=$(printf "%$((COLUMNS))s"|sed 's/./'$s'/g');echo ${str:0:$COLUMNS};done;}
Comment by eightmillion 343 weeks and 2 days ago

This is a fun command to play around with. Thanks for submitting it. This version numbers the fields like a ruler:

ruler(){ local c;for s in '...^^^...|' '1234567890';do unset str;while [ ${#str} -lt $COLUMNS ];do str=${str/^^^/$(printf "%.3d" $c)}$s;c=$[c+1];done;echo ${str:0:$COLUMNS};done;}
Comment by eightmillion 343 weeks and 2 days ago

Thanks, eightmillion. I was trying to figure out a way to number the ruler. I wrote a version of this in perl that will do just that.

The perl version actually puts the tens digit where the pipe symbol goes:

....^....1....^....2....^....3

123456789012345678901234567890

I figure that anyone can figure out which hundred they're in, so having the marks accurate to the 10s digit is sufficient... I can grab that by dividing and modding the number by 10. I'll play around with that this weekend.

Sputnick -- the idea here is not to create a ruler to measure in inches or centimeters, but rather to measure by characters on the screen. Handy when you're trying to figure out where the start and end positions are for 'cut' for example. FWIW, I believe that there are a couple of generators out there for PostScript rulers and PostScript graph paper. As long as you print these out on a printer which does not scale the image, you will come out with something that you can use to measure in inches or cm.

Comment by bartonski 343 weeks and 2 days ago

irg. got the code tags wrong on the ruler. That should have looked like this:

....^....1....^....2....^....3

123456789012345678901234567890

Comment by bartonski 343 weeks and 2 days ago

sigh.

....^....1....^....2....^....3

123456789012345678901234567890

Comment by bartonski 343 weeks and 2 days ago

@eightmillion: for zsh, change the echo to:

echo ${str[1,$COLUMNS]}
Comment by dennisw 343 weeks ago

@eightmillion: your field numbering version sometimes misses the last one. Adding ten to the number of columns in the while statement fixes that. Here's one way to do it:

while (( ${#str} < $COLUMNS + 10 ))
Comment by dennisw 343 weeks ago

@bartonski: Here's a version of eightmillion's version that does what your Perl version does:

ruler(){ local c;for s in '....^....|' '1234567890';do unset str;while (( ${#str} < $COLUMNS + 10 ));do str=${str/|/$(printf "%d" $c)}$s;((c=(c+1)%10));done;echo ${str:0:$COLUMNS};done;}

@eightmillion: You're right, it is fun.

Comment by dennisw 343 weeks ago

http://www.christianlouboutin.in.net

http://www.airjordanretro.uk

http://www.oakleyglasses.com.co

http://www.mlbjerseysauthentic.in.net

http://www.cheap--jordans.us.com

http://www.ugg.name

http://www.mlbjerseyscheap.in.net

http://www.tiffanyand.co.uk

http://www.cheapralphlauren.in.net

http://www.michaelkorshandbagsoutlet.eu.com

http://www.huaracheshoes.uk

http://www.michaelkorsoutletstoreonline.com.co

http://www.toms-outletstore.us.com

http://www.fitflopsoutlet.in.net

http://www.jordansforcheap.us.com

http://www.cheapretro-jordans.com

http://www.zoomkb24.com

http://www.oakleysunglassescheap-sale.com

http://www.tiffanyandco-outlet.us.com

http://www.nfljerseyscheap.in.net

http://www.cheapbasketballshoes.us.com

http://www.coach-outlet.in.net

http://www.tomsoutletstore.us.com

http://www.jordanretro.uk

http://www.jewelrytiffanyand.co

http://www.cheapairjordan.us

http://www.cheapairjordan.in.net

http://www.chromehearts.in.net

http://www.adidasnmd.uk

http://www.kobebasketballshoes.net

http://www.minireplicahut.com

http://www.outletmichaelkorsinc.com

http://www.11jordanshoes.com

http://www.oakleysunglassesoutlet.us

http://www.uggoutlet.uk

http://www.michaeljordanshoes.us.com

http://www.cheapnfljerseysonlinestore.com

http://www.oakley-sunglassescheapsale.com

http://www.tomsoutletstore.name

http://www.adidasnmd.com.co

http://www.michaelkors-handbags.net

http://www.huarachesshoes.uk

http://www.raybansunglass.uk

http://www.discount-oakleysunglasses.us.com

http://www.michaelkorspurse.com.co

http://www.michaelkorsonline.net

http://www.michaelkorshandbagsclearance.com.co

http://www.airhuaraches.org.uk

http://www.michaeljordanshoes.net

http://www.michaelkorsoutletsfactory.us.com

http://www.mlbjerseyswholesale.in.net

http://www.oakleyvault.com.co

http://www.michaelkors-outletstores.in.net

http://www.michaelkorshandbags.net

http://www.nfljerseyswholesale.in.net

http://www.kobe-shoes.us.com

http://www.oakleysunglassescheapssale.com

http://www.2016michaelkorsoutlet.us.com

http://www.michaelkors-outletfactory.us.com

http://www.outlettiffanyandco.us.com

http://www.outlettiffanyand.co

http://www.truereligiononsale.in.net

http://www.raybansunglass.us

http://www.oakleysunglasses-cheapsale.com

http://www.louis-vuittonhandbags.net

http://www.cheaptiffanyandco.in.net

http://www.oakley-sunglasses.co

http://www.airhuarache.uk

http://www.kobeshoes.uk

http://www.outletmichaelkors.com.co

http://www.fitflops.cc

http://www.jewellerytiffanyand.co

http://www.michaelkors-outletonline.co.uk

http://www.michaelkorsonline.name

http://www.cheaptruereligionjeans.us

http://www.fitflopssandals.net

http://www.cheapralphlaurenonline.uk

http://www.chromehearts.com.co

http://www.outletonlinemichaelkors.us.org

http://www.authenticjordanscheap.us.com

http://www.kobesneakers.com

http://www.huarachesshoes.co.uk

http://www.michaelkorsoutletonline.uk

http://www.nfljerseys2015.in.net

http://www.chinajerseyssaleonline.com

http://www.cheap-airjordans.us.com

http://www.fitflops.com.co

http://www.raybansunglassesoutlet.org

http://www.michaelkors-outletonlines.us.com

http://www.cheapairjordan.uk

http://www.tiffany.net.co

http://www.zoomkb24.uk

http://www.raybanglasses.in.net

http://www.oakleystoreonline.us.org

http://www.cheapnfljerseysstorechina.com

http://www.michaelkorsoutlets-online.eu.com

http://www.tiffanyandcouk.uk

http://www.rayban-sunglasses.uk

http://www.michael-kors-handbags.com.co

http://www.tiffanyandcojewellery.us.com

http://www.fitflopsoutlet.uk

http://www.cheapauthenticjordans.us.com

http://www.oakleyoutlet-store.com

http://www.oakleysunglassescheapsales.com

http://www.airjordan.cc

http://www.christian-louboutin-outlet.uk

http://www.nikedunks.us.org

http://www.michaelkors-outletstore.us.com

http://www.tiffanyandcooutletonline.us.com

http://www.cheaprealjordans.us.com

http://www.cheaprolexwatchesonline.in.net

http://www.nmdadidas.us.com

http://www.kobebasketballshoes.us.com

http://www.oakley-sunglass.in.net

http://www.oakleyssunglassescheapsale.com

http://www.cheap-jordanshoessale.com

http://www.michaelkorsoutletin.net

http://www.chromeheartsonline.us.com

Comment by sanjunn 13 weeks and 4 days ago

Your point of view

You must be signed in to comment.