Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何在嵌入式环境中确定行尾?_C_Bash_Embedded Linux_Busybox_Line Endings - Fatal编程技术网

C 如何在嵌入式环境中确定行尾?

C 如何在嵌入式环境中确定行尾?,c,bash,embedded-linux,busybox,line-endings,C,Bash,Embedded Linux,Busybox,Line Endings,如何使用busybox版本的命令确定文本文件的行尾 我的目标是:列出目录中的文件,以及它们是否有DOS行结尾或UNIX行结尾。理想情况下,我希望在某种循环中这样做: for i in *; do **determineEndings** $i done 或 不幸的是,因为我有busybox版本的命令,所以我没有文件命令来帮助我。我为我的目标系统找到了一个二进制文件file,并将magic文件复制到file--version告诉我的位置,但仍然出现以下错误: $ file -d myfi

如何使用busybox版本的命令确定文本文件的行尾

我的目标是:列出目录中的文件,以及它们是否有DOS行结尾或UNIX行结尾。理想情况下,我希望在某种循环中这样做:

for i in *; do
    **determineEndings** $i
done

不幸的是,因为我有
busybox
版本的命令,所以我没有
文件
命令来帮助我。我为我的目标系统找到了一个二进制文件
file
,并将
magic
文件复制到
file--version
告诉我的位置,但仍然出现以下错误:

$ file -d myfile.txt
unknown, 0: Warning: using regular magic file `/usr/share/misc/magic'
file: could not find any valid magic files!
我可以为目标环境编译C代码,因此我可以为目标系统编译成二进制的简单C代码也可以工作。

尝试一下:

grep -q `echo -e '\015'` $i && echo DOS
echo命令将生成一个CR-LF对,然后grep将搜索这些精确的字符,并在DOS文本文件中找到它们。我已经用busybox echo和grep对此进行了测试,并且成功了。有可能不同版本的busybox在中编译了不同的功能,但可能不起作用

具有混合行结尾的文件将被检测为DOS。您可以使用
-c
获得CR-LF对的计数,然后与
wc-l
的总行数进行比较,以确定它有多少DOS结尾和多少UNIX结尾

如果您有二进制文件,则必须以另一种方式确定该文件是文本文件还是二进制文件。

尝试一下:

grep -q `echo -e '\015'` $i && echo DOS
echo命令将生成一个CR-LF对,然后grep将搜索这些精确的字符,并在DOS文本文件中找到它们。我已经用busybox echo和grep对此进行了测试,并且成功了。有可能不同版本的busybox在中编译了不同的功能,但可能不起作用

具有混合行结尾的文件将被检测为DOS。您可以使用
-c
获得CR-LF对的计数,然后与
wc-l
的总行数进行比较,以确定它有多少DOS结尾和多少UNIX结尾


如果您有二进制文件,则必须以另一种方式确定该文件是文本文件还是二进制文件。

是否可以使用类似
grep-c“\r”$i
?我想建议一些类似于沃尔特的东西:
grep-l$'\r'*
列出Dos文件,而
grep-l$'\r'*
列出Unix文件。
-c
建议在我的同一文件的Dos和Unix版本上返回
90
。谢谢事实上,我没考好。这不起作用。你能用像
grep-c“\r”这样的东西吗$i
?我想建议一些类似于沃尔特的东西:
grep-l$'\r'*
列出Dos文件,而
grep-l$'\r'*
列出Unix文件。
-c
建议在我的同一文件的Dos和Unix版本上返回
90
。谢谢事实上,我没考好。这是行不通的。