Skip to content


Folders and files

Last commit message
Last commit date

Latest commit



16 Commits

Repository files navigation


pb_cli is a no bullshit pb client.


An install script is provided for convenience.

$ curl -Lo- "" | sudo bash

This is just a handful of trivial commands to install pb in /usr/local/bin. Feel free to copy-paste instead if you wish.


Dependencies are not considered during installation; you need to make these exist on your own.

  • curl
  • bash>4.0
  • jq
  • capture (optional, for screen capture)
  • maim (optional, for screenshots)
  • xclip (optional, for clipboard manipulation)


Maximum simple:

$ pb <<< 'hello world'

The url is provided on stdout to make pb easy to use in pipelines/scripting.


If you don't have the PhD in bash like #bash presumes, this might not be obvious to you:

pb < /path/to/my/file


Create a "private" paste (disables short url).

pb private


This uses maim to create a screenshot. You can either click-drag a bounding box for a region, or click a window for the entire window.

pb png

screen capture

This uses capture to create a screen capture, convert to webm or gif, and upload to pb. Usage is very similar to pb png--both use slop for window/region selection.

pb webm
pb gif

When you are done, press q once to stop recording.


When set, by default, PB_CLIPBOARD will put the paste url in the X11 primary buffer. You can modify this behavior by setting PB_CLIPBOARD_TOOL, possibly with additional arguments.


For usability, you'll likely want to export this variable in your shell rc file if this is a feature you want to use regularly.

advanced usage

If you have more complex scripting needs (like capturing the uuid for updates/deletes), you can use the PB_JSON environment variables to get the raw json:

$ PB_JSON='.' pb <<< test
  "status": "already exists",
  "url": "",
  "short": "f5-D",
  "size": 5,
  "long": "AE4SQ70ixm52wrqe3cH5E5Tlf5-D",
  "date": "2015-02-28T14:45:23.444000+00:00",
  "digest": "4e1243bd22c66e76c2ba9eddc1f91394e57f9f83"

So, for example:

$ eval "$(PB_JSON='.' pb <<< test | jq -r '@sh "url=\(.url) short=\(.short)"')"
$ echo $short
$ echo $url