Commands by mulad (10)

  • 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.


    -1
    mount -t cd9660 /dev/`mdconfig -a -t vnode -f discimg.iso` /cdrom
    mulad · 2009-02-19 06:31:14 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.


    1
    mplayer $(ls -t /tmp/Flash*|head -1)
    mulad · 2009-02-19 04:38:40 4
  • 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.


    0
    find cvsdir -name Root -exec sed -i 's/oldserver/newserver/' {} \;
    mulad · 2009-02-19 04:31:13 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 }


    1
    apt-get () { [ "$1" = source ] && (command apt-get "$@";true) || sudo apt-get "$@" }
    mulad · 2009-02-19 04:17:24 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.


    2
    tar ztf tar-lacking-subdirectory.tar.gz | xargs rm
    mulad · 2009-02-19 00:34:09 2
  • 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.


    1
    for f in *.ogg; do vorbiscomment -l "$f" | sed 's/peter gabriel/Peter Gabriel/' | vorbiscomment -w "$f"; done
    mulad · 2009-02-18 23:54:01 2
  • Yet another ps grep function, but this one includes the column headings. Show Sample Output


    1
    psg () { ps auxwww | egrep "$1|PID" | grep -v grep }
    mulad · 2009-02-18 23:37:35 2
  • 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. Show Sample Output


    0
    while true; do read i; echo $[$i]; done
    mulad · 2009-02-18 23:13:09 3
  • 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.


    6
    while [ $(deborphan | wc -l) -gt 0 ]; do dpkg --purge $(deborphan); done
    mulad · 2009-02-18 22:31:22 2
  • 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.


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

What's this?

commandlinefu.com is the place to record those command-line gems that you return to again and again. 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.

Share Your Commands


Check These Out

Selecting a random file/folder of a folder
Also looks in subfolders

Kill all processes that don't belong to root/force logoff
explanation: grep -- displays process ids -v -- negates the matching, displays all but what is specified in the other options -u -- specifies the user to display, or in this case negate The process loops through all PIDs that are found by pgrep, then orders a forced kill to the processes in numerical order, effectively killing the parent processes first including the shells in use which will force the users to logout. Tested on Slackware Linux 12.2 and Slackware-current

Create a transition between two videos
We take the first 50 frames of a.mp4 for track a, and 24 blank frames followed by b.mp4 for track b. We then create a transition from track a to track b starting from frame 25 and ending at frame 49. The output is stored in out.mp4 To view the results without saving remove "-consumer avformat:out.mp4" from the end. Documentation of the mlt framework and the melt command can be found here: http://www.mltframework.org/bin/view/MLT/Documentation

Install pip with Proxy
Installs pip packages defining a proxy

List all information about all files (in current dir)
This is a funny usage of the traditional command ls. It could be basically simplified as: $ ls -a -l Duplicating arguments is permitted: $ ls -a -l -l And this markup could be shortened as: $ ls -al Extra note: To view filesizes like a pro, pray for your God: $ ls -allah

Which processes are listening on a specific port (e.g. port 80)
swap out "80" for your port of interest. Can use port number or named ports e.g. "http"

Numeric zero padding file rename
rename file name with fixed length nomeric format pattern

Skip to next selection in playlist
Uses process signal to play next selection

Are the two lines anagrams?
This works by reading in two lines of input, turning each into a list of one-character matches that are sorted and compared.

Makes the permissions of file2 the same as file1
Also works with: $chgrp --reference file1 file2 $chown --reference file1 file2


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: