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

Commands by mulad from sorted by
Terminal - Commands by mulad - 10 results
mount -t cd9660 /dev/`mdconfig -a -t vnode -f discimg.iso` /cdrom
2009-02-19 06:31:14
User: mulad
Functions: mount
-1

FreeBSD version of the Linux command

mount discimg.iso /cdrom -o loop

The "mdconfig" command creates a device and prints the name (typically "md0"). Just append that to "/dev/" and mount.

Once unmounted, you can unconfigure the device with

mdconfig -d -u 0

using "0" for md0, "1" for md1, etc.

mplayer $(ls -t /tmp/Flash*|head -1)
2009-02-19 04:38:40
User: mulad
Functions: ls
1

Many sites with Flash video players will download video files to /tmp on Linux, with temporary filenames like "FlashbGTHm4". These will often play in mplayer, totem, or other movie playing software. You must first navigate to a video page, let it start loading, and then pause playback.

find cvsdir -name Root -exec sed -i 's/oldserver/newserver/' {} \;
2009-02-19 04:31:13
User: mulad
Functions: find sed
0

If your CVS server has moved, here's a way to update your CVS Root files throughout your code tree without checking out a new copy of your files.

apt-get () { [ "$1" = source ] && (command apt-get "$@";true) || sudo apt-get "$@" }
2009-02-19 04:17:24
User: mulad
Functions: apt command sudo
1

An apt-get wrapper function which will run the command via sudo, but will run it normally if you're only downloading source files.

This was a bit of an excuse to show off the framework of

cmd && echo true || echo false

...but as you can see, you must be careful about what is in the "true" block to make sure it executes without error, otherwise the "false" block will be executed.

To allow the apt-get return code to pass through, you need to use a more normal if/else block:

apt-get () { if [ "$1" = source ]; then command apt-get "$@"; else sudo apt-get "$@"; fi }
tar ztf tar-lacking-subdirectory.tar.gz | xargs rm
2009-02-19 00:34:09
User: mulad
Functions: tar xargs
2

These days, most software distributed in tar files will just contain a directory at the top level, but some tar files don't have this and can leave you with a mess of files in the current folder if you blindly execute

tar zxvf something.tar.gz

This command can help you clean up after such a mistake. However, note that this has the potential to do bad things if someone has been *really* nasty with filenames.

for f in *.ogg; do vorbiscomment -l "$f" | sed 's/peter gabriel/Peter Gabriel/' | vorbiscomment -w "$f"; done
2009-02-18 23:54:01
User: mulad
Functions: sed
1

The "vorbiscomment" utility lets you update information such as artist names and song and album tags in an Ogg Vorbis file. You can use this command to fix any mistakes that were made when ripping an album.

psg () { ps auxwww | egrep "$1|PID" | grep -v grep }
2009-02-18 23:37:35
User: mulad
Functions: egrep grep ps
1

Yet another ps grep function, but this one includes the column headings.

while true; do read i; echo $[$i]; done
2009-02-18 23:13:09
User: mulad
Functions: echo read
0

The $[...] block in bash and zsh will let you do math.

echo $[6*7]

This is the same as using $((...)), which also works in ksh. Of course, this is a simple, dumb wrapper and doesn't allow floating-point.

while [ $(deborphan | wc -l) -gt 0 ]; do dpkg --purge $(deborphan); done
2009-02-18 22:31:22
User: mulad
Functions: wc
6

Upgraded Debian/Ubuntu/etc. systems may have a number of "orphaned" packages which are just taking up space, which can be found with the "deborphan" command. While you could just do "dpkg --purge $(deborphan)", the act of purging orphans will often create more orphans. This command will get them all in one shot.

for i in *; do mv "$i" "$(echo $i|tr A-Z a-z)"; done
2009-02-18 21:29:28
User: mulad
Functions: mv
5

This will convert filenames from uppercase to lowercase. I find this useful after downloading images from my digital camera. This works for English, but other languages may need something slightly more complex like this:

for i in *; do mv "$i" "$(echo $i|tr [:upper:] [:lower:])"; done

Also, the quote marks aren't necessary if your filenames don't contain spaces.