确定没有扩展名的文件的文件类型
determine file type of a file without extension
我想使用 pygmentize
突出显示一些没有扩展名的脚本文件 (python/bash/...)。但是 pygmentize
要求我使用 -l
指定词法分析器。它不会自动从内容中识别文件类型。
我手头有以下选项,但 none 现在可用:
- 使用
file -b --mime-type
。但是这个命令输出 x-python
和 x-shellscript
而不是 python
和 bash
我不知道规则
- 使用
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 中的 运行 的命令构造为字符串连接。
我想使用 pygmentize
突出显示一些没有扩展名的脚本文件 (python/bash/...)。但是 pygmentize
要求我使用 -l
指定词法分析器。它不会自动从内容中识别文件类型。
我手头有以下选项,但 none 现在可用:
- 使用
file -b --mime-type
。但是这个命令输出x-python
和x-shellscript
而不是python
和bash
我不知道规则 - 使用
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 中的 运行 的命令构造为字符串连接。