Stories
Slash Boxes
Comments

All the Perl that's Practical to Extract and Report

use Perl Log In

Log In

[ Create a new account ]

Ovid (2709)

Ovid
  (email not shown publicly)
http://publius-ovidius.livejournal.com/
AOL IM: ovidperl (Add Buddy, Send Message)

Stuff with the Perl Foundation. A couple of patches in the Perl core. A few CPAN modules. That about sums it up.

Journal of Ovid (2709)

Monday January 16, 2006
08:29 PM

Bash alias arguments?

[ #28376 ]

I find myself writing this all the time in the bash shell:

grep -r $some_string .|grep -vE 'svn|blib'

It seems that either my bash shell knowledge is too limited or bash aliases cannot take argument (for $some_string). How do you handle that? A bit of Perl or a simple shell script? (I believe zsh allows aliases to take arguments but I really don't want to learn another shell).

The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
 Full
 Abbreviated
 Hidden
More | Login | Reply
Loading... please wait.
  • You can also define functions in your .bashrc. Functions are more flexible than aliases, so you'll probably be able to do what you want.
  • The Advanced Bash-Scripting Guide might profide you with some help. http://www.tldp.org/LDP/abs/html/ [tldp.org]
  • Look at my program ack, available as a distro in my CPAN directory [cpan.org].

    It doesn't exclude blib yet, but it does ignore .svn and CVS directories, and it does recursing into directories by default.

    --

    --
    xoa

  • That's why I use Svk. Well, okay... I use it for other reasons, but that's a nice benefit.

    (No, bash aliases can't take arguments.)

  • I suggest rgrep [darcs.net] by Michael Schwern.

    This seems like one of those things that seemed "too small to put on CPAN", but probably isn't.

  • In csh, the alias syntax would be:

        alias stringgrep 'grep -r \!* .|grep -vE "svn|blib"'

    I suspect the bash syntax is similar.
    • No, there isn't an equivalent syntax for Bash aliases. This is because in C Shell the ! there is a history substitution, and history works differently in Bash from in C Shell.

      As others have said, use a function; there isn't really any advantage in using a Bash alias over a function (other than you're more likely already to know the alias syntax).

      I think this should do what you want (untested):

      function kerplop
      {
        grep -r "$@" . | grep -vE 'svn|blib'
      }

      (Function name courtesy of meta [cpan.org].)

      Smylers

  • Bash functions are amazingly useful, and ridiculously simple. Just put something like this in your .bashrc.

    ovidgrep () {
      grep -r "$1" .| grep -vE 'svn|blib'
    }