ix(1)                                 IX                                   ix(1)

NAME

    ix: command line pastebin.


TL;DR

    ~$ echo Hello world. | curl -F 'f:1=<-' ix.io
    http://ix.io/fpW


GET

    ix.io/ID
        raw

    ix.io/ID/
        default syntax language (by filetype, if provided)
        append #n-LINENO to link directly to a particular line
        uses pygments, see pygments documentation for details

    ix.io/ID/LANG
        explicitly set language

    ix.io/user/USER
        pastes from USER

    ix.io/user/
        last 100 anonymous pastes


POST

    ix.io/

        f:N    contents or attached file.
        id:N   id to replace. login required if used.
        name:N set filename (if f:N is not attached).
        ext:N  set filetype (eg .txt, if f:N is not attached).
        read:N set number of reads allowed before deletion.
        rm     id to delete. login required if used.

    where N is a unique number within request. (This allows you to post
    multiple files at once.)

    Use Basic-Auth to login. If the login does not exist, it will be created.
    Don't use an important password, this is not secure.

    returns: http://ix.io/id for N in request


PUT

    ix.io/ID
        replace ID. authentication required


DELETE

    ix.io/ID
        delete ID. authentication required


EXAMPLES

    Anonymous, unnamed paste, two ways:

        cat file.ext | curl -F 'f:1=<-' ix.io
        curl -F 'f:1=@file.ext' ix.io

    Delete ID, two ways:

        curl -n -X DELETE ix.io/ID
        curl -F 'rm=ID' USER:PASS@ix.io

    Replace ID, two ways:

        curl -n -X PUT -F 'f:1=@file.ext' ix.io/ID
        cat file.ext | curl -F 'f:1=<-' -F 'id:1=ID' USER:PASS@ix.io

    Paste that can be only be read twice:

        cat file.ext | curl -F 'f:1=<-' -F 'read:1=2' ix.io


CLIENT

    A client is maintained at ix.io/client

        curl ix.io/client > ix
        chmod +x ix
        ./ix -h

    Or if you wish, paste the following function into $HOME/.bashrc:

        ix() {
            local opts
            local OPTIND
            [ -f "$HOME/.netrc" ] && opts='-n'
            while getopts ":hd:i:n:" x; do
                case $x in
                    h) echo "ix [-d ID] [-i ID] [-n N] [opts]"; return;;
                    d) $echo curl $opts -X DELETE ix.io/$OPTARG; return;;
                    i) opts="$opts -X PUT"; local id="$OPTARG";;
                    n) opts="$opts -F read:1=$OPTARG";;
                esac
            done
            shift $(($OPTIND - 1))
            [ -t 0 ] && {
                local filename="$1"
                shift
                [ "$filename" ] && {
                    curl $opts -F f:1=@"$filename" $* ix.io/$id
                    return
                }
                echo "^C to cancel, ^D to send."
            }
            curl $opts -F f:1='<-' $* ix.io/$id
        }


CAVEATS:
    Paste at your risk. Be nice please.


CHANGES

    20121205
        Lots of changes to the bashrc function, and made a script version
        available at /client.
    20141201
        PUT and DELETE support
    20141130
        Migrated backend for better concurrency
        Respect login:token via netrc/Basic-Auth (overrides request)
        If file is attached set name/ext from the filename
        Python client retired. We'll just build the shell snippet a bit more
        Add delete after N reads functionality
    20090911
        new client released (v0.4):
            * prompts for filename and filetype in interactive/pipe mode
            * more intuitive use of -i (-i ID FILE)
            * allow multiple deletes at the same time (-d ID -d ID2 ...)
            * allow multiple gets at the same time (-g ID -g ID2 ...)
    20090910
        Support deleting multiple items in one request
    20090801
        OK i'm hashing tokens in the db, looks like things still work.
    20090711
        add id:N parameter, for replacing previous pastes (that you own)
        python client updated to v0.3 accordingly
        changed behavior of returned URL for pastes of multiple files at once


TODO
    * allow anonymous, owned pastes. You own them and can delete them, but
      they don't show up in listings, and don't have sequential IDs.