NetAdminTools.com
 
SignalQ Sites:
NetAdminTools - Coprolite - NoNIC - SpotBridge - NAW
RoboCoop - AreWeDown - SolarPower - SysAdminTools
Xfig - Gold Loaf - GeekPapa - FixGMC - MCJ - FixRambler
Categories:
GNU/Linux | Homebrew designs | Perl | Administration | Backup/Recovery | Bugs/Fixes | Certification | Database | Email | File/Print | Hardware | Information Grab Bag | Interoperability | GNU/Linux ABCs | Monitoring | Name Resolution | Network Services | Networking | Remote Control | Security | Desktop | Web | BSD | Solaris | GIAGD | REALbasic

Last 30 Days | Last 60 Days | Last 90 Days | All Articles | RSS | Hail Support


Categories:
·GNU/Linux
·Homebrew designs
·Perl
·Administration
·Backup/Recovery
·Bugs/Fixes
·Certification
·Database
·Email
·File/Print
·Hardware
·Information Grab Bag
·Interoperability
·GNU/Linux ABCs
·Monitoring
·Name Resolution
·Network Services
·Networking
·Remote Control
·Security
·Desktop
·Web
·BSD
·Solaris
·GIAGD
·REALbasic
·All Categories


Aliases & Functions in Bash
Topic: GNU/Linux   Posted:2000-10-17
Printer Friendly: Print

spacerspacer
You might save some time and have a little fun by putting some aliases and functions in your .bashrc file. You can put functions or aliases in .bash_profile or .bashrc in your home directory. But by using .bashrc instead of .bash_profile, they'll be read in not only when you log in, but whenever you start a new shell such as by launching an xterm, using su, etc. Your .bash_profile is read only when you log in. You might also want to look at /etc/profile and /etc/bashrc, these are the system-wide bash initialization files which are read in for every user and serve as the defaults. These should only be changed when necessary for all users, and is usually not a good place to put functions and aliases. The idea here is to personalize your environment and make it easier for you to be lazy.

Aliases

I usually put them at the very top or the very bottom of .bashrc to keep them all together. Aliases are one-liners, nicknames for commands that are too long or hard to remember to type every time.

I get tired of typing this:
[usr-3@srv-3 usr-3]$ ls -al | more

Let's call it lam instead. But first make sure there's not already a command called lam in my path:
[usr-3@srv-3 usr-3]$ which lam
It returns nothing, so we're ok. I'll edit /usr-3/.bashrc and add the line:

alias lam="ls -al | more"

We'll have to read it in, otherwise I'd have to launch a new shell to get it:

[usr-3@srv-3 usr-3]$ source ~/.bashrc
[usr-3@srv-3 usr-3]$ lam
total 1354
drwxr-xr-x  32 usr-3   users        3072 Oct 17 08:32 .
drwxr-xr-x   5 root     root         1024 Jul 22 17:26 ..
-rw-r--r--   1 usr-3   users        5422 Oct 17 08:00 .X.err
-rw-r--r--   1 usr-3   users        5742 Dec  8  1998 .Xdefaults
-rw-r--r--   1 usr-3   users          46 May  7  1996 .Xmodmap
-rw-r--r--   1 usr-3   users        1940 Jul 22 16:06 .acrorc
-rw-r--r--   1 usr-3   users           0 Sep  2 11:23 .addressbook
-rw-------   1 usr-3   users        2285 Sep  2 11:23 .addressbook.lu
-rw-------   1 usr-3   users       12288 Oct 17 08:33 .article.swp
-rw-------   1 usr-3   users        5853 Oct 17 08:13 .bash_history
-rw-r--r--   1 usr-3   users        1379 Oct 17 08:32 .bashrc
-rw-------   1 usr-3   users       12288 Oct 17 08:32 .bashrc.swp
-rw-r--r--   1 usr-3   users           0 Nov 19  1995 .dayplan
-rw-------   1 usr-3   users           0 May  8  1996 .dayplan.priv
-rw-r--r--   1 usr-3   users         208 Nov 17  1995 .dvipsrc
-rw-r--r--   1 usr-3   users        4143 Mar 15  1999 .emacs
-rw-r--r--   1 usr-3   users        1168 Feb  3  1998 .exrc
drwxr-xr-x  13 usr-3   users        1024 Sep 30 16:18 .gimp-1.1
-rw-r--r--   1 usr-3   users        5376 Aug 28  1996 .gimprc
drwx------   2 usr-3   users        1024 Jan  2  2000 .grok
--More--
Some other examples:

Get a summary of the disk usage in human readable format
alias duh="du -h --max-depth=1"

[usr-3@srv-3 music]$ duh .
689M    ./d7
192M    ./misc_tunes
749M    ./mike
1.6G    .

kill everything netscape:
alias dienet='kill `ps auxwww | grep netscape | cut -c10-15`'
(notice the use of single quotes around the alias, double quotes take away the command substitution magic of the backticks.)

kill it really dead:
alias dienet9='kill -9 `ps auxwww | grep netscape | cut -c10-15`'

You can also define aliases on the command line, but of course they won't persist beyond the life of the shell.

[usr-3@srv-3 music]$ alias smithandjones="ssh -l smith jones"
[usr-3@srv-3 music]$ smithandjones
smith@jones's password: 
Linux 2.2.16.
No mail.
jones:/home/smith$ 

Back on srv-3, if I launch a new shell I lose the alias:

[usr-3@srv-3 music]$ bash
[usr-3@srv-3 music]$ smithandjones
bash: smithandjones: command not found

Functions

A function is like a shell script that you can put in your .bashrc file. This is good for things that won't fit on a single command line or which require logic or looping. As with aliases or shell scripts, work out the commands at the prompt before you try to run them as a function from your files. Unlike a shell script, no new process is executed to interpret functions.

Here's a function for something I get tired of doing by hand:

function fame {
wget http://www.slashdot.org -O ~/slashdot.html
FAME=`grep "Urbana Dergahad" ~/slashdot.html`
if test -n "$FAME"
then
mail mom -s "Look Ma I'm Famous" < ~/slashdot.html
else echo "sorry...."
fi
}

So I add it to my .bashrc and read it in:

[usr-3@srv-3 usr-3]$ vi .bashrc
[usr-3@srv-3 usr-3]$ . .bashrc
[usr-3@srv-3 usr-3]$ fame
sorry....

Always the same! Oh well. You might be able to think of some more practical and less hopeless examples!





Please read our Terms of Use
Microsoft, Windows, Windows XP, Windows 2003, Windows 2000, and NT are either trademarks or registered trademarks of Microsoft Corporation. NetAdminTools.com is not affiliated with Microsoft Corporation. Linux is a registered trademark of Linus Torvalds, and refers to the Linux kernel. The operating system of most distributions that contain the Linux kernel is GNU/Linux. All logos and trademarks in this site are property of their respective owner. Copyright 1997-2008 NetAdminTools.com

Created by:
MCJ
MCJ CMS