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

All commands from sorted by
Terminal - All commands - 11,928 results
Add to ~/.inputrc: set match-hidden-files off
sed -n '/<Tag>/,/<\/Tag>/p' logfile.log
2009-07-20 13:24:56
User: sanmiguel
Functions: sed
0

If your XML is appended to a line with a time stamp or other leading text irrelevant to the XML, then you can append a s/foo/bar/ command, like this:

sed -n /<Tag>/,/<\/Tag>/p; s/.*\(<Tag.*\)/\1/' logfile.log
pkill $1
2009-07-20 12:47:41
User: svg
-5

There's already a proper command for what the former alternative tried to script

ps -u $USER |grep $1 | awk '{ print $1}'| xargs kill
2009-07-20 10:06:32
User: buffer
Functions: awk grep ps xargs
-4

Well this can come handy , when you don't feel like playing with pid rather if you know

the process name say "firefox",it would kill it.The script given below would kill the process with its name given as first parameter , though not robust enough to notify that process doesn't exist , well if you know what you are doing that's wouldn't be a problem.:)

----

killhim.sh

----

#!/bin/bash

ps -u $USER |grep $1 | awk '{ print $1}'| xargs kill

----

for i in *.xml; do sed -i 's/foo/bar/g' "$i"; done
gzip -dc /tmp/pavanlimo.gz | psql -U user db
lynx -dump somefile.html
mencoder dvd://<title> -dvd-device <device> -aid 128 -info srcform='ripped by mencoder' -oac mp3lame -lameopts abr:br=128 -ovc xvid -xvidencopts pass=2:bitrate=-700000 -ofps 30000/1001 -o '<outputfile.avi>'
2009-07-19 20:53:54
User: din7
Tags: mencoder
2

This set of commands will rip a dvd title using a 2 pass mencoder xvid encode. It will provide a great quality rip. It will rip as close to 700MB as possible. (note the bitrate of -700000)

Enjoy!

mencoder dvd://<title> -dvd-device <device> -aid 128 -info srcform='ripped by mencoder' -oac mp3lame -lameopts abr:br=128 -ovc xvid -xvidencopts pass=1:chroma_opt:vhq=4:bvhq=1:quant_type=mpeg -vf pp=de,crop=0:0:0:0, -ofps 30000/1001 -o '/dev/null'
2009-07-19 20:50:57
User: din7
2

This set of commands will rip a dvd title using a 2 pass mencoder xvid encode. It will provide a great quality rip. It will rip as close to 700MB as possible. (note the bitrate of -700000)

Enjoy!

remind -z1 -k'echo %s |ssh <user>@<host> "growlnotify"' ~/.reminders &
2009-07-19 17:35:30
User: mattjbarlow
Functions: ssh
0

Requires Linux Remind:

http://www.roaringpenguin.com/products/remind

and Growl on the Mac:

http://growl.info/

growlnotify needs to be in the executable path on the mac.

Combined with "prowl" in the iPhone you can receive push notifications of your reminders to the iPhone.

amixer sset Master toggle
(cd /source/dir ; tar cv .)|(cd /dest/dir ; tar xv)
2009-07-19 10:31:13
User: marssi
Functions: cd tar
-11

the f is for file and - stdout, This way little shorter.

I Like copy-directory function It does the job but looks like SH**, and this doesn't understand folders with whitespaces and can only handle full path, but otherwise fine,

function copy-directory () { ; FrDir="$(echo $1 | sed 's:/: :g' | awk '/ / {print $NF}')" ; SiZe="$(du -sb $1 | awk '{print $1}')" ; (cd $1 ; cd .. ; tar c $FrDir/ )|pv -s $SiZe|(cd $2 ; tar x ) ; }

watch lsof -i :80
tar -pczf archive_name.tar.gz /path/to/dir/or/file
2009-07-17 19:53:02
User: ryuslash
Functions: tar
Tags: bash tar gzip
-2

Create a single tar.gz archive

I know it's a very basic one, but it's one I keep forgetting.

sudo rmmod pcspkr
2009-07-17 18:21:19
User: zombiedeity
Functions: rmmod sudo
8

To ensure that it will never come back, you can edit /etc/modprobe.d/blacklist

Add "blacklist pcspkr" sans quotes

wget <URL> -O- | wget -i -
lsof -i -n -P | grep :80
grep -Ir foo *
2009-07-17 15:30:10
User: libdave
Functions: grep
0

short command to find a string in all text files in all subdirectories, excluding all files grep does not deem text files.

vmstat 1 | awk '{now=strftime("%Y-%m-%d %T "); print now $0}'
2009-07-17 07:41:57
Functions: awk vmstat
8

Also useful with iostat, or pretty much anything else you want timestamped.

curl -sd 'rid=value&submit=SUBMIT' <URL> > out.html
2009-07-17 03:51:00
7

Assume that you have a form , in the source look for something similar to :

input name="rid" type="TEXT"

input name="submit" value="SUBMIT" type="SUBMIT" align="center"

Then exec the command to get the response into html

More info : www.h3manth.com

curl -A Mozilla http://www.google.com/search?q=test |html2text -width 80
ran=$(head /dev/urandom | md5sum); MAC=00:07:${ran:0:2}:${ran:3:2}:${ran:5:2}:${ran:7:2}; sudo ifconfig wlan0 down hw ether $MAC; sudo ifconfig wlan0 up; echo ifconfig wlan0:0
2009-07-16 16:21:44
User: workingsmart
Functions: echo head ifconfig sudo
7

Next time you are leaching off of someone else's wifi use this command before you start your bittorrent ...for legitimate files only of course.

It creates a hexidecimal string using md5sum from the first few lines of /dev/urandom and splices it into the proper MAC address format. Then it changes your MAC and resets your wireless (wlan0:0).

$ grep -or string path/ | wc -l
!!
2009-07-16 08:07:35
User: Blackbit
-3

I don't know why this ain't written as simply as it is. I always see it's just used as parameter, like: vi `!!`

But i use it to repeat a command, as i always work on several shells and check the result of one shell on a second.