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) Show Sample Output
Any thoughts on this command? Does it work on your machine? Can you do the same thing with only 14 characters?
You must be signed in to comment.
commandlinefu.com is the place to record those command-line gems that you return to again and again. 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.
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:
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;}
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;}
....^....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.....^....1....^....2....^....3 123456789012345678901234567890
....^....1....^....2....^....3
123456789012345678901234567890
echo ${str[1,$COLUMNS]}
while (( ${#str} < $COLUMNS + 10 ))
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.