grep: unknown directories method

The title of the post is the error message I got when attempting to grep a directory containing a file whose name started with a hyphen ( – ).

What has happened is that grep interprets hypens as switches, as if the idea was to convey options to use. This gave me a problem as I realised the file shouldn’t have been placed there in the first place and subversion was unable to remove it.

The Double-Hyphen Trick

The resolution is to pass two hyphens to the command, I didn’t know this before but this means “enough of the options, here’s the list to operate on”, or words to that effect. I used them to remove the file in question


svn rm -- \-*

Hopefully I’ll remember to look here next time I see this error message … but maybe not. So long as I don’t find myself on Google again

Boost Your Popularity – Flame Facebook

I recently wrote that I don’t get social networking, with interesting results. I posted links to all my various profiles in various places, and I now have ten friends on Facebook (up from two when I wrote the first article) and one flickr friend as well.

I find it interesting that people respond in this way – its nice to be friends with my friends though so I’m certainly not complaining. It is a bit strange though when a website announces that you are now friends with someone … that you’ve been dating for seven years :)

Am I any closer to “getting” social networking? Not really. I’ve written on walls, given gifts, and joined groups. Suggestions for other exciting things to do are most welcome …

Alternative Uses for a Shoe Rack

A few houses ago, I had a shoe rack.

I remember it in our first house together, and I’m not sure if it got assembled in the house after that. Its been in storage since then until yesterday. When I unpacked it, I discovered this sign attached to it (not before I had torn it though!)

It reads:

Shoe Rack. Alternative uses:
– small shelves
– large spice rack
– firewood

It turns out that the author didn’t consider the future of the shoe rack closely enough … its now a handbag store :)

What’s your most innovative furniture adaptation?

Cleaning up Windows Line Endings in Vim

I have a file which has been edited in windows with an incorrect setting. All the lines have


^M

At the end of each line.

To search for these in Vim, you can type ctrl+v (to mean “take my next key combination literally”) then ctrl+m. To clean up my file I used:


:% s/^M$//

Where the ^M is typed using Ctrl+V, Ctrl+M. I’ve recorded it as a macro as I seem to be fixing the same thing a lot these days. Hope that helps someone!

Social Networking Sites Are Pointless

Social networking seems to be the buzzword of the moment, MySpace and Beebo are apparently a bit last year and now its Facebook, Flickr and Twitter. Call me old-fashioned, but I don’t really “get” it. I mean, its not that I don’t have friends. I do, lots of them. So many in fact that they all go months and months without hearing from me as I find it so hard to keep up with them all! My friends are (almost without exception) internet-enabled so they should fit well onto the social networking model. Some of them are people I only know through the internet, but that doesn’t seem to change my persective.

Its not that I’m actively avoiding these things. Here are links to my accounts on:

I have the accounts, but I don’t really know what to do with them. The most useful so far has been del.icio.us, which I use to keep hold of bookmarks between multiple locations but not to share stuff really1. I think I “get” LinkedIn; I try to keep up with colleagues that I respect and would work with again on there, and in fact have actually used it today to check if I’m linked to someone, which is nice. Flickr is fine, I put my friend’s wedding photos there for her, but I’m not raving about it. Facebook has landed in my offline friendship group recently and I’m still waiting for the penny to drop about why people seem to be losing whole swathes of their lives to it. I’m on there, but if I haven’t seen you for years and/or your number isn’t in my mobile phone, then I’m not adding you as friend because clearly you’re not! And as for twitter … this is just a mystery.

So has the world gone mad or am I simply missing the point, like people who read websites in real life rather than on feed readers? Your thoughts please!

1 Also I used its API to write a game earlier in the year.

Seeing stderr from PHP exec()

Today I was using the PHP command exec() in a script, which runs whatever you pass to it as it you had typed it on the command line. Its possible to check both the output of the command and the return value, which I did since I wasn’t getting the results I expected.

When you look at the output of the exec call, it isn’t the same as what you would see on the screen when typing the command. PHP returns you the content from stdout, but if anything goes wrong it will go to stderr which PHP doesn’t provide.

Redirect stdout to stderr

To get around this problem I altered my call from this:


exec ('unzip '.escapeshellarg($filename));

to this:


exec('unzip '.escapeshellarg($filename).' 2>&1);

This collection of characters tacked on the end of the code tells the system to send output 2 (stderr) to the address of output 1 (stdout). And the upshot is that I started to see the error messages being returned by the unzip program.

Postscript

Not really relevant to my point but probably useful for reference – the actual problem was that unzip was returning 50 as its return value. This apparently means the disk is full, which it wasn’t.

What had happened was that I was unzipping a file in another directory and unzip was trying to place the contents into my current working directory rather than the one with the zip file in! I used the -d switch to unzip to direct the inflated files to the right place and this worked a treat.

Painting Platforms

There’s lots to do in the house now – the list of jobs runs is frightening and has everything from “fix kitchen drawer” to “rewire house” on it. Redecorating is a long way down the list but I’ve bought beautiful red curtains for the front room … and the existing terracotta paint now looks ridiculous so something needs to be done.

I can sort out a tin of paint and a brush but our ceilings are so high that to reach them, I have to stand on the top step of the step ladder. The step ladder is of average height but I, at 5’11”, am not and I still can’t reach – this is one tall ceiling. So also on the list is finding something safe to stand on and paint/paper the house from. Not sure if we’re going to go with a platform or another step ladder plus plank, but we need something.

Happy Housewarming

Last weekend we combined good friends, plenty of drink, a barbecue and a surprising spell of good weather to make a house warming party! We started mid afternoon and people dropped as their schedules permitted which worked really well1 . The barbecue was perfect and in fact we had two rounds – one where we fed people their tea, and another one at about 9pm where a few more people turned up and I also remembered I forgot we had marshmallows – they’re more fun after dark anyway.

The next morning I found myself cooking breakfast for eight people, most of whom has stayed the night, so all in all it was a successful weekend!! Big thanks to everyone that made it, we both had a great time and it was wonderful to see so many people wishing us well. Having hostessed quite so much I now feel more like the house is ours so thanks to you all :)

1 I completely failed to take a single photo, sorry!

Open Office Font Shortcuts

When typing a long document the other day with sore hands, I looked up the keyboard shortcuts for applying headings in Open Office. Here’s a quick few:

._ Font Shortcut
Heading1 Ctrl + 1
Heading2 Ctrl + 2
Heading3 Ctrl + 3
Body Text Ctrl + 0

Bash Idle Timeout

I’ve set an idle timeout on the development server at work in an attempt to cut down the number of sessions that have been left logged in on unattended PCs. It was really easy to set up!

You can set this in /etc/profile but I realised that ours just includes a file /etc/bash.bashrc so I added my line to that:


# set the idle timeout - logs you out after an hour
TMOUT=3600

New sessions logged in after this will automatically log themselves out after one hour of continuous inactivity.