确定没有扩展名的文件的文件类型

determine file type of a file without extension

我想使用 pygmentize 突出显示一些没有扩展名的脚本文件 (python/bash/...)。但是 pygmentize 要求我使用 -l 指定词法分析器。它不会自动从内容中识别文件类型。

我手头有以下选项,但 none 现在可用:

  1. 使用file -b --mime-type。但是这个命令输出 x-pythonx-shellscript 而不是 pythonbash 我不知道规则
  2. 使用vim -e -c 'echo &ft|q' the_file。对于任何带或不带文件扩展名的文件,vim 都有一种猜测文件类型的机制。但它不起作用。由于输出进入 vim window 并在 q 之后消失。

我能做什么?


@Samborski 的方法在正常情况下工作正常,但在 python subprocess.check_output 中不起作用,因为没有分配 pts。如果你使用nvim,你可以使用这种更直接的方式:

HOME=_ nvim --headless -es file <<EOF
call writefile([&ft], "/dev/stdout")
EOF

您可以这样使用vim:

vim -c ':silent execute ":!echo " . &ft . " > /dev/stdout"' -c ':q!' the_file

它只是将 shell 中的 运行 的命令构造为字符串连接。