首页 > 解决方案 > 如何在 csh/tcsh 中写一个可以用 shebang 写一个文件的别名?

问题描述

我想用我的别名编写一个脚本,但无法使用 echo 命令在我的脚本中添加 bang 行。我尝试了这些方法:

alias wnc 'echo "#\!/bin/csh " > cshCMD.csh; echo "ncl" >> cshCMD.csh; chmod +x cshCMD.csh; '

alias wnc "echo '#\!/bin/csh ' > cshCMD.csh; echo 'ncl' >> cshCMD.csh; chmod +x cshCMD.csh;"  

如果我在没有别名的情况下运行这些行,那么它们对我有用。

echo "#\!/bin/csh " > cshCMD.csh; echo "ncl" >> cshCMD.csh; chmod +x cshCMD.csh; 

通过直接输入和使用命令,我将在文件 cshCMD.csh 中获取数据:

而当我在命令行上使用别名时

wnc 

我收到了这条消息:

/bin/csh: Event not found

标签: linuxshellcommand-linecshtcsh

解决方案


你需要一个\!在你的别名的扩展,所以你必须\\!在定义它的时候使用。第一个反斜杠在别名定义命令的处理过程中消失,第二个反斜杠在!别名运行时保护。


推荐阅读