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 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
$ 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
“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
Idle every time, and then stop Dropbox. Here is simple alias (to
.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.