Unix下去掉^M的方法



在vi中:

按Esc切换到命令模式;

:%s/^M//g

即可。

其中:^M是通过 Ctrl+v+Shift+m输入的,即按住ctrl键按v键,不放ctrl键,再按shift键和m键,完成后全部放开


在linux上经常遇到这种问题,从网上下载文件到 linux 上后,就多了很多 ^M这种东西,如何集体删除这种东西呢!

(1)方法一

最简单的办法就是用里linux下vim行的替换文法:

进入vim的命令行模式输入

:%s/\r//gc

同理:如果出现^V则用:%s/^V//gc替换

(2)方法二

也是在vim命令行模式下

:set ff=unix 
:w

先把格式换成unix的,然后重新保存以下就可以了!

(3)方法三

用一个工具dos2unix(注意:不同系统不一样 ) ,例如我使用的是ubuntu,其下有一个替代工具tofrodos,具体安装可以参考我的另一篇文章

http://www.cnblogs.com/xiaofengkang/archive/2012/12/06/2805642.html 

使用:

将DOS格式文本文件转换成Unix格式,最简单的用法就是dos2unix直接跟上文件名。

格式:dos2unix file

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

格式:dos2unix file1 file2 file3

格式:dos2unix -o file1 file2 file3

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

格式:dos2unix oldfile newfile

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

格式:dos2unix -k file

格式:dos2unix -k file1 file2 file3

格式:dos2unix -k -o file1 file2 file3

格式:dos2unix -k -n oldfile newfile

注:unix2dos命令的使用方式与dos2unix命令的类似。



cat -A filename 就可以看到windows下的断元字符 ^M
要去除他,最简单用下面的命令:
dos2unix filename
 
第二种方法:
 
sed -i 's/^M//g' filename
#注意:^M的输入方式是 Ctrl + v ,然后Ctrl + M
 
第三种方法:
 
#vi filename
 
:1,$ s/^M//g

^M 输入方法: ctrl+V ,ctrl+M
 
第四种方法:
#cat filename |tr -d '\r' > newfile
#^M 可用 \r 代替



### 关于 Ansible Navigator `doc` 命令 `-m stdout` 参数 Ansible Navigator 的 `doc` 命令用于显示有关特定模块、插件或其他组件的文档信息。通过使用 `-m stdout` 参数,可以将输出格式化为纯文本形式以便更清晰地查看相关内容[^2]。 以下是调用 `doc` 命令并设置 `-m stdout` 参数的一个示例: ```bash $ ansible-navigator doc ansible.builtin.copy -m stdout ``` 此命令会展示内置 `copy` 模块的相关文档,并以标准输出的形式呈现给用户。 --- ### Ansible `builtin.copy` 模块介绍 `ansible.builtin.copy` 是一个常用的模块,主要用于在远程主机之间复制文件或内容。它支持多种选项来定义源文件位置、目标路径以及其他属性(如权限模式)。下面是一些常见的参数及其功能说明[^4]: - **src**: 定义要复制的本地文件路径。 - **dest**: 设置目标机器上的保存路径。 - **content**: 如果不需要从本地读取文件,则可以通过该字段直接写入字符串作为新文件的内容。 - **mode**: 可选参数,用来设定目标文件的 Unix 权限位。 - **owner**, **group**: 分别指定了所有权和所属组。 #### 示例 Playbook 使用 `copy` 模块 以下是一个简单的 YAML 文件片段展示了如何利用 `copy` 模块完成基本操作: ```yaml --- - name: Copy example file to remote server hosts: webservers tasks: - name: Ensure the destination directory exists ansible.builtin.file: path: "/var/www/html" state: directory mode: '0755' - name: Copy index.html into place ansible.builtin.copy: src: ./index.html dest: /var/www/html/index.html owner: root group: root mode: '0644' ``` 以上脚本首先确认 `/var/www/html` 存在与否;接着把当前工作目录下的 `index.html` 移动至服务器相应的位置上,同时调整其拥有者及访问控制列表 ACLs[^3]. --- ### 结合实际场景的应用案例 假设我们需要部署一个新的配置文件到多个 Linux 主机当中去,在这种情况下就可以借助上面提到过的工具链实现自动化流程管理。具体步骤如下所示 (伪代码): 1. 创建包含所有待处理节点 IP 地址或者域名在内的动态库存表; 2. 编辑适合业务需求的任务清单即 Playbooks; 3. 执行相关联的操作序列直至结束为止。 最终效果便是每台设备都能获得一致性的初始状态准备就绪等待进一步开发测试活动开展下去啦! ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值