Application programming interface (API)

Commands in different content-types

The content of commandlinefu.com is available in a variety of different formats for you to do what you like with. Any page which contains a list of commands (such as the listings by tag, function or user) can be returned in a format of your choice through a simple change to the request URL.

For example, Use a URL of the form http://www.commandlinefu.com/commands/<command-set>/<format>/ Here, <command-set> is the URL component which specifies which set of commands to return. Possible values are:

  • browse/sort-by-votes - All commands sorted by votes
  • tagged/163/grep - Commands tagged with 'grep', sorted by date (the default sort order)
  • matching/ssh/c3No - Search results for the query 'ssh' (note that the final segment is a base64-encoding of the search query)

Also, <format> is one of the following:

plaintext Returns the content as plain text (Content-type: text/plain). Eg:
# commandlinefu.com by David Winterbottom

# coloured tail
tail -f FILE | perl -pe 's/KEYWORD/\e[1;31;43m$&\e[0m/g'

# Check version of DNS Server
nslookup -q=txt -class=CHAOS version.bind NS.PHX5.NEARLYFREESPEECH.NET

# Archive every file in /var/logs
find /var/logs -name * | xargs tar -jcpf logs_`date +%Y-%m-%e`.tar.bz2

# Search for all files that begin with . and delete them.
find ~/Desktop/ \( -regex '.*/\..*' \) -print -exec rm -Rf {} \;

# Uncompress a CSS file
cat somefile.css | awk '{gsub(/{|}|;/,"&\n"); print}' >> uncompressed.css

# resolve hostname to IP our vice versa with less output
resolveip -s www.freshmeat.net
...

This content-type is best for working from the command-line. The format of the returned commands has also been chosen to be easily grep-able. Example commands for retrieving a set of commands are:

lynx -dump "http://www.commandlinefu.com/commands/browse/sort-by-votes/plaintext"

or

curl "http://www.commandlinefu.com/commands/browse/sort-by-votes/plaintext"
json Returns the content Javascript object notation (JSON). This is useful for writing javascript widgets (see the instructions on how to embed your commands on your blog or homepage).
[{ "id":"13", "command":"sudo !!", "summary":"Run the last command as root", "votes":"334", "url":"http://www.commandlinefu.com/commands/view/13/run-the-last-command-as-root" }, { "id":"71", "command":"python -m SimpleHTTPServer", "summary":"Serve current directory tree at http://$HOSTNAME:8000/", "votes":"250", "url":"http://www.commandlinefu.com/commands/view/71/serve-current-directory-tree-at-httphostname8000" }, { "id":"51", "command":"cd -", "summary":"change to the previous working directory", "votes":"179", "url":"http://www.commandlinefu.com/commands/view/51/change-to-the-previous-working-directory" }, { "id":"1204", "command":":w !sudo tee %", "summary":"Save a file you edited in vim without the needed permissions", "votes":"151", "url":"http://www.commandlinefu.com/commands/view/1204/save-a-file-you-edited-in-vim-without-the-needed-permissions" }, ... ]
rss Returns the content using the web feed format RSS XML (content-type: application/rss+xml).
<?xml version="1.0" encoding="utf-8"?> <rss xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0"> <channel> <title><![CDATA[All commands sorted by votes]]></title> <link>http://www.commandlinefu.com/commands/browse/sort-by-votes/rss</link> <description><![CDATA[A repository for the most elegant and useful UNIX commands. Great commands can be shared, discussed and voted on to provide a comprehensive resource for working from the command-line]]></description> <pubDate>Sat, 11 Jul 2009 16:09:33 +0000</pubDate> <generator>Zend Framework Zend_Feed</generator> <language>en-us</language> <docs>http://blogs.law.harvard.edu/tech/rss</docs> <item> <title><![CDATA[Run the last command as root]]></title> <link>http://www.commandlinefu.com/commands/view/13/run-the-last-command-as-root</link> <guid>http://www.commandlinefu.com/commands/view/13/run-the-last-command-as-root</guid> <description><![CDATA[<code style="padding:5px; font-family:monospace; font-size:12pt">$ sudo !!</code> <div style=""><p>Useful when you forget to use sudo for a command. "!!" grabs the last run command.</p> (by <strong>root</strong>)</div> <ul style="list-style:none; padding: 0; margin: 0"> <li><a href="http://www.commandlinefu.com/commands/view/13/run-the-last-command-as-root">View this command to comment, vote or add to favourites</a></li> <li><a href="/commands/by/root">View all commands by <strong>root</strong></a></li> </ul> <p><a href="http://www.commandlinefu.com"><img src="http://www.commandlinefu.com/images/header-logo.jpg" alt="commandlinefu.com"/></a></p> <p>by David Winterbottom (<a href="http://codeinthehole.com">codeinthehole.com</a>)</p> ]]></description> <pubDate>Sat, 11 Jul 2009 16:09:33 +0000</pubDate> </item> ... </channel> </rss>

If you have any suggestions for how this API could be improved, please get in touch or suggest an improvement using the uservoice forums.