The Terminal can be an incredibly powerful tool for anyone willing to give it a go (as all Digi Techs should). While intimidating at first, after learning a few basic commands and concepts, you’ll have everything you need to get started. That said, if you’re not a Digital Tech, or someone who regularly needs the extra power and flexibility that the Command Line affords, then having to re-discover useful commands whenever you do come back to the Terminal may not add much value to your life.

Getting Started

If you’re new to the Terminal, Andy Trevorah has written a brief History of the Command Line that can give you a good idea as to how everything works conceptually, and how simple commands can be strung together to accomplish complex tasks. TreeHouse has a good intro to navigating the Terminal. For more complex commands (if, for example, you find something while googling for whatever functionality you’re after) you can break them down to figure out exactly what they do with ExplainShell.

Examples

Here I’d like to give a few use case examples that Digital Techs, Photographers, Editors or Retouchers might find helpful, or that may at least open your eyes to to some of the Terminal’s potential.

This is a very dense topic, so I’ll just briefly touch on a few useful examples here. I plan to do more in-depth posts for many, if not all, of the examples listed below.

Rsync

rsync can copy/synchronize files/folders (directories). This example forces  verification using checksums, rather than just modification time.

rsync -vrazch /path/to/source /path/to/destination

rsync can also be employed in a script that can be run on a schedule with cron, or quickly called up via an alias during any downtime on set. It can also be used to create bootable backups of entire drives, or used over ssh to transfer files between the local and a remote machines.

Diff

diff can be used to quickly determine wether or not two files are exact copies of one another.

diff -q /path/to/file/1 /path/to/file/2
Renice

the niceness of a process determines what priority it is given to access the CPU. So if you have several programs running, you can move one up or down in priority. -20 being the meanest (highest priority) and 19 being the nicest.

sudo renice -p <PID>

Replace <PID> with the ID of the process in question.

List filenames

This can be very handy, for example, if you have a folder full of jpgs for which you need to find the corresponding raw files. it will remove the file extention, and copy the comma separated list of filenames to the clipboard.

cd /folder/full/of/images; ls -1 | sed s/....$/,/ | tr 'n' ' ' | pbcopy; cd -
Make test file of any size
mkfile -n 10m ~/Desktop/10megabyteTest.jpg
Open multiple instances of an app
open -n /Applications/Adobe\ Lightroom\ Classic\ CC/Adobe\ Lightroom\ Classic\ CC.app
Create empty folder structure

Creates 10 new empty, numbered shot folders, and any parent folders that don’t already exist.

mkdir -p /Users/Shared/CaptureOneSession/Capture/Shot_{01..10}