2025年dos 转 unix(dos转unix命令)

dos 转 unix(dos转unix命令)前言 最近在给 CentOS 系统配置环境变量的时候 因操作不慎把 etc profile 文件给玩坏了 尽管勉强能恢复文件 但在执行生效配置命令 source etc profile 报错如下 bash command not found p p p bash p

大家好,我是讯享网,很高兴认识大家。



cfc429f536d9cdfb2eefe6636056cc65.png
讯享网

前言

最近在给CentOS系统配置环境变量的时候,因操作不慎把/etc/profile文件给玩坏了,尽管勉强能恢复文件,但在执行生效配置命令 source /etc/profile 报错如下:-bash: \(&#39; &#39;: command not found</p> <p>-bash: \)‘ ’: command not found

-bash: \(&#39; &#39;: command not found</p> <p>-bash: /etc/profile: line 11: syntax error near unexpected token &#96;\)‘{ ’‘

’bash: /etc/profile: line 11: `pathmunge () {

比较郁闷明明已经恢复原始配置文件了,依然存在报错,使用 cat -v /etc/profile 命令检查一下发现文件中多了大量的Windows下的换行符^M。

8d75985df9795468a5a2e2669530f6a0.png

解决方案:执行dos2unix /etc/profile将profile文件从Windows格式文件转换为Unix、Linux格式,然后在执行source /etc/profile使之生效,问题解决 ,这也是这篇文章诞生的原因。

安装yum -y install dos2unix unix2dos

语法dos2unix [-hkqV] [-c convmode] [-o file …] [-n infile outfile …]

选项-k:保持输出文件的日期不变

-q:安静模式,不提示任何警告信息

-V:查看版本

-c:转换模式,模式有:ASCII, 7bit, ISO, Mac, 默认是:ASCII

-o:写入到源文件

-n:写入到新文件

实例:

方法一

最简单的用法就是dos2unix直接跟上文件名:dos2unix file

如果一次转换多个文件,把这些文件名直接跟在dos2unix之后。(注:也可以加上-o参数,也可以不加,效果一样)dos2unix file1 file2 file3

dos2unix -o file1 file2 file3

上面在转换时,都会直接在原来的文件上修改,如果想把转换的结果保存在别的文件,而源文件不变,则可以使用-n参数。dos2unix -n oldfile newfile

如果要保持文件时间戳不变,加上-k参数。所以上面几条命令都是可以加上-k参数来保持文件时间戳的。dos2unix -k file

dos2unix -k file1 file2 file3

dos2unix -k -o file1 file2 file3

dos2unix -k -n oldfile newfile

以上是转换单个文件,如果要转换目录或文件夹的话,请看方法二。

方法二

Linux系统本身提供了dos2unix和unix2dos这两个命令来实现Windows和Linux系统文件的转换,但是dos2unix和unix2dos本身没有提供递归也就是批量修改的方式,这样一来我们就需要借助于xargs命令了。

xargs的命令的作用就是将参数列表转换成小块分段传递给其他命令,借助于xargs,我们可以很简单的实现批量替换;

这里假设我需要替换的文件所在目录为 public/components目录下。find public/components/ -name “*” | xargs dos2unix

其中,号表示所有文件。

要更改文件格式的后缀为.py ,那么借助于下面的命令就可以轻松的实现批量替换格式:

批量替换为linux文件格式:sudo find public/components/ -name “.py” | xargs dos2unix

批量替换为dos文件格式:sudo find public/components/ -name “.py” | xargs unix2dos

优点:批量替换,工作量小, 总的来说,方法二借助于管道符和xargs来实现的批量命令,将方法二修改一下就可以实现很多的批量操作。比如:

1、批量删除整个linux系统中后缀为.tmp的文件;那么命令可以这么写:sudo find /home/test -name “.tmp” | xargs rm -f

2、删除整个linux系统中与apache相关的文件:sudo find /home/test -name “*apache” | xargs rm -rf

小讯
上一篇 2025-06-07 11:25
下一篇 2025-06-09 16:21

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/204832.html