Function Instead of Alias in C Shell Login Script

Function Instead of Alias in C Shell Login Script

I saw in this topic that you can add a function in the shell login script instead of an alias if you want to use parameters. However, I placed the following code inside my .cshrc file in the section with aliasses:

function gf()
{
    grep -n $1 `find .` | grep -v "can't open"
}

But when I type source .cshrc, I get the error message: Badly placed ()'s. Is the syntax different for a C shell than in a Bash shell? If so, what is the correct syntax?

3 Answers

Unfortunately, you can't define functions in csh, like you can in most other shells. This feature does not exist in csh.

The only alternative is to create a script and place it in a directory on your PATH e.g. ~/bin.

2

Here is my solution:

#!/bin/csh

if ("$1" == "run") goto $2

echo "Now in default mode"

echo "Calling myself"

csh -f dummy run sub1

csh -f dummy run sub2

exit


sub1:

echo "In sub1"

exit

sub2:

echo "In sub2"

exit

If you are looking for passing only one argument, just put \!$ where you wish your argument to sit.

For example:

If you put alias mygrep grep -i \!$ myfile.txt in ~/.cshrc, and run mygrep mykeyword, csh will run alias mygrep grep -i mykeyword myfile.txt.

See this for more info.

1

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Alexander Ross
Author

Alexander Ross

Alexander Ross has covered the video game industry for a decade, writing deep dives on game design, esports tournaments, VR developments, and gaming culture.