我在this主题中看到,如果你想使用参数,你可以在shell登录脚本中添加一个函数而不是别名。然而,我将以下代码放在我的.cshrc文件中有别名的部分:
function gf() { grep -n $1 `find .` | grep -v "can't open" }
但是当我输入source.cshrc时,我得到错误消息:位置不佳()。C shell的语法与Bash shell的语法不同吗?如果是,正确的语法是什么?
cbeh67ev1#
不幸的是,您不能在csh中定义函数,就像在大多数其他shell中一样。此功能在csh中不存在。唯一的选择是创建一个脚本并将其放置在PATH上的目录中,例如。~/bin。
csh
PATH
~/bin
jckbn6z72#
如果你只需要传递一个参数,那么就把\!$放在你希望你的参数所在的位置。例如:如果将alias mygrep grep -i \!$ myfile.txt放入~/.cshrc中,并运行mygrep mykeyword,csh将运行alias mygrep grep -i mykeyword myfile.txt。请参阅this了解更多信息。
\!$
alias mygrep grep -i \!$ myfile.txt
~/.cshrc
mygrep mykeyword
alias mygrep grep -i mykeyword myfile.txt
gorkyyrv3#
以下是我的解决方案:
#!/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
35g0bw714#
在.cshrc或.tcshrc中设置以下内容:
.cshrc
.tcshrc
alias function '( set argv = ( \!* ) ; source ~/.cshfuncs )'
在.cshfuncs中定义函数:
.cshfuncs
# Functions for C Shell. switch ("$1") case "myfunc": grep -n "$2" "`find .`" | grep -v "can't open" exit case "myfunc2": echo "Another function." exit default: echo "Function $1 not set." exit -1 endsw
4条答案
按热度按时间cbeh67ev1#
不幸的是,您不能在
csh
中定义函数,就像在大多数其他shell中一样。此功能在csh
中不存在。唯一的选择是创建一个脚本并将其放置在
PATH
上的目录中,例如。~/bin
。jckbn6z72#
如果你只需要传递一个参数,那么就把
\!$
放在你希望你的参数所在的位置。例如:
如果将
alias mygrep grep -i \!$ myfile.txt
放入~/.cshrc
中,并运行mygrep mykeyword
,csh
将运行alias mygrep grep -i mykeyword myfile.txt
。请参阅this了解更多信息。
gorkyyrv3#
以下是我的解决方案:
35g0bw714#
在
.cshrc
或.tcshrc
中设置以下内容:在
.cshfuncs
中定义函数: