Dropbox has a useful but rather simplistic command-line interface, which I use almost exclusively. The reason I call it simplistic is that when you start Dropbox with
dropbox start, all you see is
dropbox start $ Starting...Done!
It starts Dropbox then brings you right back to the command-line prompt, at which point you have no idea what Dropbox is doing in the background. For me it’s important to know when Dropbox is finished syncing because I prefer to leave Dropbox off otherwise; that is, once the sync is done, I want to know that and then stop Dropbox.
There is a command
dropbox status, but all that does is check the status (whether Dropbox is idle, uploading, downloading, indexing, etc.) at the particular moment you call
dropbox status, and that’s it. I could of course keep calling
dropbox status until it starts to return
Idle every time
dropbox status $ Connecting... dropbox status $ Initializing... dropbox status $ Starting... dropbox status $ Downloading file list... dropbox status $ Updating (4 files) Indexing (4 files) dropbox status $ Idle dropbox status $ Idle
but there is an easier way to do this: the Linux command
watch, which “execute[s] a program periodically, showing output fullscreen.” Suppose I want to check Dropbox’s status every one second. Then I just run
watch -n1 dropbox status
-n1 is short for
--interval 1 and always refers to seconds.)
To stop watching the program (to exit
watch), just hit
When I run Dropbox, I basically just want to start it, watch what it does until it returns
Idle every time, and then stop Dropbox. Here is simple alias (to put in
.zshrc or whatever) that lets me do that:
alias db='dropbox start && watch -n1 dropbox status && dropbox stop'
With this alias, I just type
db at the command line, watch what Dropbox does until I keep seeing
Ctrl-C, and then Dropbox stops automatically.