by Sandra Henry-Stocker
Operating systems

Unix tip: Useful Unix aliases

December 17, 2008, 01:46 PM — 

It's easy to create aliases and some of them can save you a lot of time and trouble. Stored in one of your startup files (e.g., .profile), they can provide a modestly easier environment for your work. This week, we'll look at a bunch of especially useful aliases.

If you use functions, but lose track of what you've called them, you can use this handy alias for listing them:

boson# alias functions='set | grep "()"'

Type "functions" on your command line with this function in effect and you might see something like this:

boson# functions
SHOW_ARGC=()
SHOW_ARGV=()
SHOW_LINENO=()
SHOW_SOURCE=()
STACK=()
GROUPS=()

You can also set up aliases for helping you to move around in the file system and find your way back. Some of these just save you a bit of typing, but consider how often you type cd commands.

alias ..="cd .."
alias ...="cd ../.."
alias ....="cd ../../.."
alias back='cd $OLDPWD'

The last alias in the list above might prove particularly useful if you're working between two directories and just want to bounce back and forth between the two of them. Each time you move, $OLDPWD takes on the value of the directory you were just in.

There are a number of ways to get a listing of only the directories in your current file system location. This one seems the snappiest:

alias dirs='ls -d */'

To shorten what you have to type to get long listings or categorized listings, you might try these:

alias ll='ls -l'
alias lf='ls -F'
alias l='ls -al'

The "lf" alias will provide a file listing with / at the end of directory names and @ at the ends symbolic links. The "l" alias will, of course, provide a long listing of all files and with a nice savings on keystrokes.

A useful extension of the aliases shown above is to include a pipe to more so that you are sent one screenful of output at a time. This alias has been very nice to use:

alias lm="ls -al | more"

To be prompted before you remove files, you can use one of the following aliases. I generally don't want to have to type "y" for each and every file deletion, so I prefer leaving rm as is and using del when I want the extra check. Of course you can always just use "rm -i".

alias rm='rm -i'
alias del='rm -i'

You can use the same idea with other aliases that return a lot of text. It's a good idea to use a consistent naming scheme (i.e., adding an "m") so the aliases are easier to remember. Here's an example with the history command:

alias h=history
alias hm="history | more"

You can set up a case-insensitive grep command and save a little typing with this "gi" alias. Notice how easily it selects your target text without concern for how the text appears in the target file.

alias gi="grep -i"
boson# gi hello /tmp/msgs865
hello world
Hello World
HELLO WORLD

One additional alias that I have found very useful, since I am often looking for particular files and don't want directories in my listings is this "ff" (find file) alias:

alias ff="find . -type f -name"

This ff alias starts at the current directory. You could instead have two such aliases, one that looks from root and one that looks from the current directory:

alias ff="find / -type f -name"
alias f.="find . -type f -name"

Once you've defined and invoked a large useful set of aliases, you should be prepared to turn them off selectively or in one fell swoop. Keep the "unalias " command in mind if you want to disable a particular alias and "unalias -a" if you want to dsiable all of your aliases at once.

I like it!
Comments

Aliases etc.

Thanks - there were some useful aliases in your latest article. You might like this function, which I find very useful when looking for permission errors:

lsdup() {
here=$(pwd)
while true
do
print "$(ls -ld) $PWD"
cd ..
[ $PWD = "/" ] && break
done
cd $here
}

| reply

moving to previous directory

To go back to the previous directory I just use "cd -". No special alias is required. But what if you're working amongst three directories? What's a good way to quickly set up shortcuts which allow to bounce between them?
| reply

aliases

You may not want to aliase rm -i as rm, especially if you use rm to remove files, etc using a script in cron, using the next choice would be better.
| reply
Free books

Essential JavaFX
Get started building rich Web apps quickly with an introduction to the power of JavaFX key features -- scene node graphs, nodes as components, the coordinate system, layout options, colors and gradients, custom classes with inheritance, animation, binding, and event handlers.Enter now!

The Nomadic Developer
Consulting can be hugely rewarding, but it's easy to fail if you are unprepared. To succeed, you need a mentor who knows the lay of the land. Aaron Erickson is your mentor, and this is your guidebook. Enter now!

Featured Sponsor

AISO founders envisioned a Web hosting company that was environmentally friendly. While the company employed energy-efficient innovations like solar panels, its infrastructure produced unacceptable power and cooling requirements. Find out how AISO leveraged AMD technology to overcome their challenge in this case study white paper.

In this whitepaper, Scalar explores the opportunity to change the landscape with respect to mission critical databases built around Oracle. Leveraging technologies such as Linux, high-end commodity processing power and Oracle RAC technology to architect, design, build and maintain database infrastructure that delivers maximum availability, reliability and performance at a fraction of traditional cost.

On a typical day, weather.com, the Web site for The Weather Channel in Atlanta, serves up between 15 million and 20 million page views. But in September 2004, when back-to-back hurricanes ransacked Florida, the peak traffic on one day more than tripled: over 70 million page views by more than 7 million unique visitors. Read the full success story now.

Marketplace