UpFront

UpFront

Tech Tip

If you run a lot of terminal tabs or scripts that all
need to make OpenSSH connections to the same server,
you can speed them all up with multiplexing: making
the first one act as the master and letting the
others share its TCP connection to the server.

If you don't already have a config file in the
.ssh directory in your home directory, create it with
permissions 600: readable and writeable only by you.

Then, add these lines:

Host *
ControlMaster auto
ControlPath ~/.ssh/master-%r@%h:%p

ControlMaster auto tells ssh to try to start a
master if none is running, or to use an existing master
otherwise. ControlPath is the location of a socket
for the ssh processes to communicate among themselves.
The %r, %h and
%p are replaced with your user name,
the host to which you're connecting and the port
number—only ssh sessions from the same user to
the same host on the same port can or should share
a TCP connection, so each group of multiplexed ssh
processes needs a separate socket.

To make sure it worked, start one ssh session and keep
it running. Then, in another window, open another
connection with the -v option:

~$ ssh -v example.com echo "hi"

And, instead of the long verbose messages of a normal
ssh session, you'll see a few lines, ending with:

debug1: auto-mux: Trying existing master
hi

Pretty fast.

If you have to connect to an old ssh implementation
that doesn't support multiplexed connections, you
can make a separate Host section:

Host antique.example.com
ControlMaster no

For more info, see man ssh and man
ssh_config.

Tech Tip

You can use the convert command that comes with ImageMagick to
extract parts of an image.

You can cut out a 100-pixel-wide chunk from somewhere in the middle
of an image:

Note that there was no need to specify the height of the image in any of
the above commands. If you need to adjust the height instead of the
width, the steps are similar, but use -append
instead of +append to paste
the slices vertically.

Tech Tip

Occasionally, you need to process a number of files—some of which have
been compressed and some which have not (think log files). Rather
than running two variations, one compressed and one not, wrap it in a bash
function: