Managing gists on the command line
I do appreciate the convenience of saving general-purpose code snippets and example code to Github gists, but the UX is less than stellar for a platform aimed at programmers. A gist must be added either by a drag-and-drop operation of your file into the browser, or by copy-pasting the code into a text box (or, if you really feel like it, by making a POST request to the API). Once uploaded each gist - often a single file - is treated like a full-featured git repo.
All of this feels a bit clunky and bloated just for saving some snippets. Luckily though there is a third-party gist command-line tool which makes this process a whole lot easier.
Setup
On many Linux distributions (and on Macs) it can be installed trivially using the package manager. For instance on Ubuntu:
sudo apt-get install gist
This will then make available the gist-paste
utility. Authentication is managed with a OAuth2 token, obtained once through a web login flow and then saved to ~/.gist
, by doing:
gist-paste --login
Uploading
Most commonly I create a new gist with:
gist-paste -d "Description of the gist" myfile.ext
This will print the URL to stdout, which should give you the GIST_ID
. The -p
flag can be used to make it a secret gist instead.
To update the same gist:
gist-paste -u GIST_ID myfile.ext
Downloading
Should you want to use one of your previously uploaded gists, list them to find the GIST_ID
- perhaps grep
’ed by words in the description to find the one you’re looking for:
gist-paste -l
To then download and use one specific gist, read it to stdout and save to a file. If the gist comprises of multiple files, the filename should be specified as well.
gist-paste -r GIST_ID > myfile.ext
And that’s it really! Have a look at the man
for some more options, in particular with regard to automatically putting the URL on the clipboard.