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.

World cup college
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

2010-03-18 - Top 10 commands explained
There's a great article by Peteris Krumins explaining the current top 10 commands: http://www.catonmat.net/blog/top-ten-one-liners-from-commandlinefu-explained/
2010-03-03 - Commandlinefu @ SXSW 2010
Am going to be at SXSW this year, in case you want to submit any CLI nuggets or suggestions to me in person. Ping me on the @codeinthehole Twitter account.
2009-09-12 - Email updates now available
You can now enable email updates to let you know each time you're command is commented on.
2009-07-11 - API and javascript blog widget now available
A simple API has been released, allowing commands to be retrieved in various formats. This also allows commands to be embedded on blogs/homepages.
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
411
Serve current directory tree at http://$HOSTNAME:8000/

Alternatives

There is 1 alternative - vote for the best!

Terminal - Alternatives
twistd -n web --path .

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 82 weeks ago

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

Comment by AmadeusZull 80 weeks ago
python -m SimpleHTTPServer

+Serving HTTP on 0.0.0.0 port 8000 ...

....

Comment by grep 79 weeks and 3 days ago

Cool. I'd been using webfs for this.

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

Comment by Viaken 77 weeks and 2 days ago

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

I love it.

Comment by k00pa 76 weeks and 1 day ago

See also CGIHTTPServer

Comment by dstahlke 73 weeks and 3 days ago

Awesome!!

Comment by d4n3sh 72 weeks and 1 day ago

How to kill the servers? :P

Comment by Meeko 72 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 68 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 51 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 51 weeks and 3 days ago

nice ! tfs

Comment by sazwqa 30 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 27 weeks and 5 days ago

nice

Comment by warlock 27 weeks and 4 days ago

awesome

Comment by tunguyen 23 weeks and 6 days ago

This is a great trick!

Does anyone know similar trick that invoke simple FTP server?

Comment by yorams70 23 weeks and 5 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 19 weeks ago

Your point of view

You must be signed in to comment.

Related sites and podcasts