shell批处理中利用vi设置文件的fileformat

本文介绍如何将DOS格式文件转换为UNIX格式,特别是解决因换行符差异导致的可执行文件无法运行的问题。提供了使用vi编辑器进行转换的具体步骤及批处理命令。

dos格式文件传输到unix系统时,会在每行的结尾多一个^M,即dos文件中的换行符“\r\n”会被转换为unix文件中的换行符“\n”,而此文件若是一个可执行文件的话,会导致此文件不能被执行,转换的方式有下面一个:

 

 

vi exec.sh
:set ff=unix(或者:set fileformat=unix)
:wq

 

如果以上步骤要求在一个shell批处理文件中完成,那么该怎么办?

 

可以这样:

 

vi +':w ++ff=unix' +':q' ${file}

 这样一条命令就可以搞定了,但是要严格注意上面空格的位置,不能多不能少。

 

参见:

http://stackoverflow.com/questions/82726/how-do-i-convert-dos-files-to-linux-files-in-vim

Shell 批处理文件(即 Shell 脚本)是将一系列的命令组合在一起,让它们按顺序自动执行的文件。以下是不同场景下的 Shell 批处理文件编写教程: ### 基础编写与执行 在 Linux 下,若要将一系列命令做成文件自动顺序执行,可使用 `source` 命令。以在 Linux 源代码目录下创建批处理文件为例,先在如 `/usr/src/linux - 2.4.20` 目录下建立文件,如 `make_command`,将所需命令写入其中。`source` 命令的作用是把文件内容当成 shell 来执行 [^1]。 ### 简单网络测试脚本 以 `shownet.sh` 批处理文件为例,它可以用于网络测试。其内容如下: ```bash #!/bin/bash ping -c 4 www.qq.com ping -c 4 192.168.10.99 ping -c 4 192.168.20.11 ping -c 4 192.168.10.24 echo 'good' ``` 首行 `#!/bin/bash` 是脚本解释器声明,表明该脚本使用 Bash 解释器执行。后续的 `ping` 命令用于向指定的 IP 地址或域名发送 4 个 ICMP 数据包进行网络连通性测试,最后输出 `good` [^2]。 ### 文件处理脚本 下面的脚本用于处理指定目录下特定后缀的文件,并且增加了用户交互功能。 ```bash cur_dir="./" suffix="txt" for file_name in `ls ${cur_dir} | grep "${suffix}"` do tmp_file=`basename ${file_name}` echo $tmp_file done echo "remove tars?(y/n)" read input if [ "${input}"x = "y"x ]; then for file_name in `ls ${cur_dir} | grep "$suffix"` do echo $file_name # rm -f $file_name done echo "success" fi ``` 此脚本中,使用变量 `cur_dir` 存储当前目录,`suffix` 存储文件后缀,便于修改和测试。通过 `for` 循环遍历当前目录下后缀为 `txt` 的文件,并输出文件名。之后询问用户是否删除这些文件,若用户输入 `y`,则再次遍历文件并输出文件名(注释掉的 `rm -f $file_name` 为删除文件的命令),最后输出 `success` [^3]。 ### 根据正则表达式处理文件内容 使用 `awk` 命令可以根据正则表达式匹配符合要求的行。示例如下: ```bash awk -F ':' '$1~/.o./ {print $1}' /opt/passwd.txt ``` 该命令用于扫描 `/opt/passwd.txt` 文件,以 `:` 作为分隔符分割每一行。若分割后的第一项中含有字符 `o`,则输出该行分割后的第一项内容 [^4]。 ### 使用 adb shell 测试的批处理文件 以下是使用 `adb shell` 进行测试的批处理文件示例: ```bash adb shell input keyevent 26 adb shell input swipe 370 1250 370 200 1000 adb shell sleep 3 adb shell input keyevent 26 adb shell sleep 3 echo the%%i time test end!! ``` 此脚本通过 `adb shell` 向 Android 设备发送一系列命令,包括模拟按键事件、滑动操作和等待时间等,最后输出测试结束信息 [^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值