Hide

What's this?

commandlinefu.com is the place to record those command-line gems that you return to again and again.

Delete that bloated snippets file you've been using and share your personal repository with the world. That way others can gain from your CLI wisdom and you from theirs too. All commands can be commented on, discussed and voted up or down.


If you have a new feature suggestion or find a bug, please get in touch via http://commandlinefu.uservoice.com/

Get involved!

You can sign-in using OpenID credentials, or register a traditional username and password.

First-time OpenID users will be automatically assigned a username which can be changed after signing in.

Hide

Stay in the loop…

Follow the Tweets.

Every new command is wrapped in a tweet and posted to Twitter. Following the stream is a great way of staying abreast of the latest commands. For the more discerning, there are Twitter accounts for commands that get a minimum of 3 and 10 votes - that way only the great commands get tweeted.

» http://twitter.com/commandlinefu
» http://twitter.com/commandlinefu3
» http://twitter.com/commandlinefu10

Subscribe to the feeds.

Use your favourite RSS aggregator to stay in touch with the latest commands. There are feeds mirroring the 3 Twitter streams as well as for virtually every other subset (users, tags, functions,…):

Subscribe to the feed for:

Hide

News

2011-03-12 - Confoo 2011 presentation
Slides are available from the commandlinefu presentation at Confoo 2011: http://presentations.codeinthehole.com/confoo2011/
2011-01-04 - Moderation now required for new commands
To try and put and end to the spamming, new commands require moderation before they will appear on the site.
2010-12-27 - Apologies for not banning the trolls sooner
Have been away from the interwebs over Christmas. Will be more vigilant henceforth.
2010-09-24 - OAuth and pagination problems fixed
Apologies for the delay in getting Twitter's OAuth supported. Annoying pagination gremlin also fixed.
Hide

Tags

Hide

Functions

Serve current directory tree at http://$HOSTNAME:8000/

Terminal - Serve current directory tree at http://$HOSTNAME:8000/
python -m SimpleHTTPServer
2009-02-05 11:57:43
User: pixelbeat
Functions: python
715
Serve current directory tree at http://$HOSTNAME:8000/

Alternatives

There is 1 alternative - vote for the best!

Terminal - Alternatives
python -m http.server
2010-12-17 12:52:45
User: Alanceil
Functions: python
24

In Python version 3, the module was merged into http.server. Gentlemen, change your aliases.

twistd -n web --path .
python -m SimpleHTTPServer
2011-08-29 03:19:26
Functions: python
Tags: python
3

This works on all versions of python 2.X.

Tested on Linux and bundled python versions on Mac OSX and Solaris / UNIX

Note: Serves globally on port 8000.

Ctrl+c to stop.

Don't start the server and leave it on a internet connected machine. :)

python3 -m http.server
python3 -m http.server

Know a better way?

If you can do better, submit your command here.

What others think

To use a different port:

python -m SimpleHTTPServer 8080
Comment by taoufix 284 weeks and 6 days ago

Many thx to the both of you and python developers :)

Comment by AmadeusZull 283 weeks ago
python -m SimpleHTTPServer

+Serving HTTP on 0.0.0.0 port 8000 ...

....

Comment by grep 282 weeks and 3 days ago

Cool. I'd been using webfs for this.

http://linux.bytesex.org/misc/webfs.html

Comment by Viaken 280 weeks and 2 days ago

This is great way to get something to open without configuring webserver.

I love it.

Comment by k00pa 279 weeks ago

See also CGIHTTPServer

Comment by dstahlke 276 weeks and 3 days ago

Awesome!!

Comment by d4n3sh 275 weeks and 1 day ago

How to kill the servers? :P

Comment by Meeko 275 weeks ago

I changed this up a bit and added it to my .bashrc. My function also logs into my web server via ssh and forwards a port back to me. It also copies the URL to my primary selection.

webshare () { local SSHHOST=hostname.of.server python -m SimpleHTTPServer & echo http://$SSHHOST:8000 | xclip echo Press enter to stop sharing, http://$SSHHOST:8000 copied to primary selection

/usr/bin/ssh -R 8000:127.0.0.1:8000 $SSHHOST 'read'

kill `jobs -p | head` }
Comment by wonko 271 weeks and 1 day ago

Neat. I've been using a more complicated system:

# Create an index.html, trying to preserve names with whitespace

du -a | awk ?{ print $2,$3,$4,$5}? | \ until [[ -z $L ]];

do

read L;

echo ??$L??;

done > ./index.html;

#Instantiate an SSL web server on port 8080

openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout \

server.pem -out server.pem -subj ?/C=XX/O=XX/OU=XX/CN=XX?;

openssl s_server -accept 8080 -WWW

Comment by lbonanomi 254 weeks and 3 days ago

Wow, quoting went horribly wrong there.

# Create an index.html, trying to preserve names with whitespace

du -a | awk '{ print $2,$3,$4,$5}' | until [[ -z $L ]];

do

read L;

echo ''$L'';

done > ./index.html;

#Instantiate an SSL web server on port 8080

openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout \

server.pem -out server.pem -subj ?/C=XX/O=XX/OU=XX/CN=XX?;

openssl s_server -accept 8080 -WWW

Comment by lbonanomi 254 weeks and 3 days ago

nice ! tfs

Comment by sazwqa 233 weeks and 4 days ago

all of the hacking around detracts from the beautiful simplicity of this command. I'm totally in love with this. I'd up-vote it a 100 times if I could. Nice work.

Comment by 4fthawaiian 230 weeks and 5 days ago

nice

Comment by warlock 230 weeks and 3 days ago

awesome

Comment by tunguyen 226 weeks and 6 days ago

This is a great trick!

Does anyone know similar trick that invoke simple FTP server?

Comment by yorams70 226 weeks and 4 days ago

If you don't know how to kill the server (^c doesn't work) try the following

kill `ps | grep SimpleHTTP | grep -v grep | awk '{print $1}'`
Comment by jafraldo 221 weeks and 6 days ago

In order to kill the server you can try:

killall python
Comment by samy 194 weeks and 5 days ago

killall python is too brutal. It may kill some useful python process accidently .

Comment by al_crow 165 weeks ago

Just run to view

firefox http://$HOSTNAME:8000/
Comment by totti 155 weeks and 5 days ago

This is awesome. Does anyone know how to do this with Python 2.3 or earlier?

Comment by adamlehenbauer 151 weeks and 6 days ago

http://ubuntuguide.net/http-server-support-uploading-files-from-windows-in-ubuntu

I found a python script that support uploading files. It's useful.

Comment by franzcai 98 weeks and 1 day ago

If the default port 8000 already in use, you can specify port on commandline:

python -m SimpleHTTPServer 9000

Comment by sesom42 59 weeks and 2 days ago

I tried using this to quickly send a folder full of games to some people on my LAN, but it would only let one person download at a time. Try

sudo apt-get install python-twistd-web twistd -no web

instead.

Comment by nkorth 24 weeks and 4 days ago

Your point of view

You must be signed in to comment.

Related sites and podcasts