/ bin / sh需要识别文件内容类型

时间:2018-07-29 23:44:56

标签: shell file sh busybox

我正在使用busybox,只有/ bin / sh可用。 我想了解是否将使用脚本处理的文件视为ASCII(只需读取并执行我需要做的事情)或gzip(因此先解压缩然后再做我需要做的事情)即可。

这里的“文件”命令是完美的,但是不幸的是它不可用,因此我不知道要调用哪个过程,因为我正在处理的输入文件可以是任何一种格式。

我想知道是否有一个简单的解决方法,在这里我找不到它了...

1 个答案:

答案 0 :(得分:1)

您的问题中的隐含之处是您拥有一个gunzip命令,并试图弄清楚是否需要调用它。

一个可以告诉您...的命令是gzip

contents_of_file() {
  if gzip -t <"$file" >/dev/null 2>&1; then
    gunzip -c <"$file"
  else
    cat <"$file"
  fi
}

也就是说,您也可以询问grep文件是否没有不可打印的非空白字符:

is_plain_text() {
  if grep -q -e '[^[:graph:][:space:]]' <"$1"; then
    echo "$1 has non-ASCII characters"
  else
    echo "$1 is plain text"
  fi
}