I often work with multiple Mac Terminal tabs open, and as a result I like to set the title in the titlebar to whatever I’m working on in each tab (such as “MONGO” or “PLAY”), so I wrote a little script named settitle
to let me set the title in the titlebar from the Unix command line.
More recently I realized I was often setting the title to the uppercase version of the current directory. I came up with this command pipeline (I like to call them “mashups”) to do easily do that:
settitle `pwd | xargs basename | tr '[a-z]' '[A-Z]'`
The basename
command doesn’t accept args in a pipeline, so I used xargs
to handle that problem. The tr
command makes the directory name uppercase.
settitle and other commands
The settitle
script is easy:
#!/bin/sh # name: settitle # purpose: set the Mac Terminal title # usage: to set the titlebar to 'PLAY', type: settitle PLAY echo "\033]0;${1}\007\c"
xargs
, basename
, and tr
are all standard Unix commands.
macOS changes
The latest versions of macOS make this a little more difficult, but if you go into the macOS Terminal preferences, then go to the “Tab” settings and un-check the defaults (un-check all of the checkboxes that affect the tab title), this script will work as advertised.