Q:

How to create a new Shapefile with the same attributes as an existing one?

It is quite a frequent occurrence that I want the data I'm about to add to a new shapefile, to have all the same attribute fields as one I created in a previous project.
For example, I might have previously mapped all the fence lines in a filed and recorded their attributes - fence type, condition, wire, length, height, etc.
I then want to produce the same sort of survey for a different client. I just want my 'fence' layer to look exactly the same as the 'fence' layer on the previous project, same style, same labels, same fields, but the only thing I can save seems to be the style.
Could anyone help with the best way to do this?

A:

You can take the layer you created for the first client, save it as a different-named shapefile, and then delete all the features in it.

A:

You can create a shapefile layer with your generic list of attribute fields and simply duplicate this layer within QGIS and Save as... another shapefile (or copy/paste the physical files such as .shp, .dbf etc). Then also save a generic style file and use these when dealing with clients.
So basically, you have a shapefile "template" to work with.

A:

You can do it with ogr2ogr at the command line too by using the -where flag.
ogr2ogr -f "ESRI Shapefile" -where "FID < 0" output_template.shp input.shp
What this does is execute a SQL where query and selects those features with a FID less than 0. None should exist because FID's usually don't have a negative or below zero value, so no new features are passed to the new shapefile.

