Bash Unix脚本自动将shebang插入到perl文件中

Bash Unix脚本自动将shebang插入到perl文件中,bash,unix,Bash,Unix,我正在练习一些Perl脚本,而不是每次我决定编写一个基本的Unix脚本时都键入shebang,该脚本将创建一个扩展名为.pl的新文件和shebang,然后打开该文件进行编辑。我尝试的是: alias ep "echo '#! /usr/bin/perl' >> perl/\!*.pl; emacs perl/\!*.pl;" 但如果文件不存在,则会导致错误。我觉得很奇怪,因为我认为>>会附加或创建。因此,我将>>更改为>,这只在文件不存在的情况下起作用。如果该文件确实存在,则会因错

我正在练习一些Perl脚本,而不是每次我决定编写一个基本的Unix脚本时都键入shebang,该脚本将创建一个扩展名为.pl的新文件和shebang,然后打开该文件进行编辑。我尝试的是:

alias ep "echo '#! /usr/bin/perl' >> perl/\!*.pl; emacs perl/\!*.pl;"
但如果文件不存在,则会导致错误。我觉得很奇怪,因为我认为>>会附加或创建。因此,我将>>更改为>,这只在文件不存在的情况下起作用。如果该文件确实存在,则会因错误而崩溃。我尝试添加一个if语句,但也会出现语法错误和不正确的then错误。我为if所做的是:

alias ep "if [ ! -f perl/\!*.pl ] then echo '#! /usr/bin/perl' > perl/\!*.pl fi; emacs perl/\!*.pl;"

我错过了什么?我不太熟悉Unix脚本,但有一些常识。

似乎您可能有
set-C
,也称为
set-o noclobber


您可以使用重定向操作符
|
,或者使用
set+C

撤消该选项,继续对文件进行重击。看起来您可能有
set-C
,也称为
set-o noclobber


您可以使用重定向操作符
|
,或者使用
set+C

撤消选项,继续对文件进行重击,您不想这样做;有很多事情需要考虑(如果它已经存在,那么它真的是perl文件吗,等等)

您可以直接使用emacs来执行此操作


看看这个:

你不想这样做;有很多事情需要考虑(如果它已经存在,那么它真的是perl文件吗,等等)

您可以直接使用emacs来执行此操作


检查此项:

这正是问题所在。我将保留no-clobber选项,因为如果文件已经存在,我不想覆盖它,但是感谢您回答我的问题,这就是问题所在。我将保留no clobber选项设置,只是因为我不想覆盖一个已经存在的文件,但感谢您回答我的问题。这非常有效,在emacs中设置一个映射到.pl文件的自动插入,并更改脚本以只添加.pl扩展名。这非常有效,在emacs中设置映射到.pl文件的自动插入,并将脚本更改为只添加.pl扩展名