Linux shell CLI文件从字符串变量获取mime类型

ffx8fchx  于 2023-10-23  发布在  Shell
关注(0)|答案(1)|浏览(131)

我想在sh shell中根据字符串变量的内容检测适当的文件扩展名。我试着用那个file-manual
如果我这样做:

echo "bar" > foo.txt
file foo.txt
file --mime-type foo.txt

然后我得到一个有效的结果:

foo.txt: ASCII text
foo.txt: text/plain

但是如何在不创建文件和获取内容类型的情况下获得相同的结果呢?
我试过:

file <(echo 'bar')

得到:

/dev/fd/63: symbolic link to pipe:[1452271]

并与:

echo 'bar' | file

我阴阳怪气:

Usage: file [-bcCdEhikLlNnprsSvzZ0] [--apple] [--extension] [--mime-encoding]
            [--mime-type] [-e <testname>] [-F <separator>]  [-f <namefile>]
            [-m <magicfiles>] [-P <parameter=value>] [--exclude-quiet]
            <file> ...
       file -C [-m <magicfiles>]
       file [--help]

有没有什么方法可以使用file

foo.txt: ASCII text
foo.txt: text/plain

但不创建文件本身?
也许我可以使用其他应用程序,而不是file

zbsbpyhn

zbsbpyhn1#

尝试使用file的破折号“-”参数。
例一:

file - <<< abc
/dev/stdin: ASCII text

例二:

echo abc | file - 
/dev/stdin: ASCII text

实施例3:

file - <<< '#!/bin/sh'
/dev/stdin: POSIX shell script, ASCII text executable

实施例4:

MY_VAR='#!/bin/awk'
file --mime-type - <<< $MY_VAR
/dev/stdin: text/x-awk

相关问题