Long solenoid (50cm stroke)
DC solenoids are hard to do at larger distances because the magnetic field decays with the square of distance.  At 50 cm, you'd need a ridiculous amount of current. Such a solenoid is not impossible, but it is impractical.  

The cheapest way to do linear motion (which, given your lack of speed and power constraints, is probably your primary motivating factor) is generally to use a stepper motor to move a belt or chain. 50 cm is actually quite a lot for linear motion, and this solution frees you from expensive long machined parts, like cylinder bores, pistons, threaded rods, and gear racks.

Something like this McMaster timing belt mated with a pair of these pulleys and with the (or whatever you're displaying) clamped to the middle of the belt should do the trick.  Add a standard stepper motor, and be careful with your programming to avoid over-extending your belt.