使用 `touch` 命令识别文件类型并自动生成 shebang?

Using `touch` command, recognize file type and auto-generate shebang?

所以,我真的很喜欢 Vim allows you to auto-write text (most of the times shebangs) when creating a new file with a specific file extension.

这样的文本编辑器

但是,我想知道是否可以使用 touch 命令从终端执行此操作。

例如,我想为我刚从终端创建的 Python 脚本自动生成 shebang,如下所示:

$ touch test.py                   # create file and auto-generate
$ cat test.py                     # see the contents to confirm
#!/usr/bin/env python
# -*- coding: utf-8 -*-

我知道我可以在我的环境中创建一堆自动生成的文本变量,例如 PY_SHEBANG="#\!/usr/bin/env python\n# -*- coding: utf-8 -*-" 然后执行:

$ echo $PY_SHEBANG > file.py

但是一想到要经历这么多麻烦,我的脑袋就乱了。

也就是说:有什么方法可以配置 terminal/shell 以便它可以识别我正在创建的文件的文件类型,并根据文件类型自动向其附加文本, 使用单个 touch 命令?

注意:我正在使用 zsh 和 oh-my-zsh。

当然可以。只需使用别名并将 touch 替换为我们自己编写的函数。但是我建议使用别名 etouch(增强触摸),所以如果您决定正常使用 touch 命令,您可以。

由于您使用的是 zsh,它使事情变得更加简单(但我想 bash 会类似)在您的 .zshrc(或 .bashrc,我不知道),编写一个函数来检查文件类型并输入任何内容,如下所示:

# function for auto-generating shebang
function enhanced_touch () {
    if [ -f  ]; then
       echo " already exists"
       return 0
    fi
    if [[ $(echo -n "" | tail -c 3) == ".py" ]]; then
        echo "#!/usr/bin/env python\n# -*- coding: utf-8 -*-" > 
    else
        touch 
    fi
}

alias etouch="enhanced_touch"

显然,我只是按照您的要求定制了识别python个文件的功能。但是我会把其他文件类型留给你写。

还有,别忘了source .zshrc。祝你好运!