Linux Shell脚本的一道作业
来源:互联网 发布:淘宝男士 编辑:程序博客网 时间:2024/06/01 12:42
今天刚学完Linux基础,老师作业中有这样一道题:
先把/etc 目录下面(不包括子目录)所有以.conf 结尾的文件负责到/tmp 目录下面去,然后写一个脚本,实现把tmp 目录所有以.conf 结尾的文件,后缀改成.config。
我的思路是这样的:(复制就不说了,直接cp就好)
- 用ls列出/tmp目录中的所有文件信息;
- 使用grey过滤后缀.conf;
- 使用awk获取文件名;
- 根据文件名获取具体路径和重命名后的路径;
- 用mv重命名。
#!/bin/bashNAME=""NEWNAME="""ls -l /tmp/ | awk -F ' ' '{print $9}'" | grep .conf | while read linedoNAME="/tmp/$line"NEWNAME="/tmp/`echo "$line" | awk -F '.' '{print $1}'`.config"mv "$NAME" "$NEWNAME"done
执行后果断出错:
我也是挺佩服自己出这种错误的,把ls -l /tmp/ | awk -F ' ' '{print $9}'用""引起来相当于把他整体当作一个文件给 | 去处理,所以又自作聪明的加上了反引号:
#!/bin/bashNAME=""NEWNAME="""`ls -l /tmp/ | awk -F ' ' '{print $9}'`" | grep .conf | while read linedoNAME="/tmp/$line"NEWNAME="/tmp/`echo "$line" | awk -F '.' '{print $1}'`.config"mv "$NAME" "$NEWNAME"done
这就错的更厉害了。。
图太长,没有接完,总之就是把我的查找结果当成了一个命令,当然不会有这个命令,其实直接写就好,什么都不用加:
#!/bin/bashNAME=""NEWNAME=""ls -l /tmp/ | awk -F ' ' '{print $9}' | grep .conf | while read linedoNAME="/tmp/$line"NEWNAME="/tmp/`echo "$line" | awk -F '.' '{print $1}'`.config"mv "$NAME" "$NEWNAME"done
--------------------------------------------------------华丽的分割线---------------------------------------------------------------------------------------------------
今天看了一下同学的做法,发现我想的太复杂了。。。
有一种茅塞顿开的感觉,看来我的思想还停留在Java编程上,没有认识到Shell中一切皆文件的特性,死板的按Java的思路,现获取文件名再做处理,其实Shell中可以直接通过命令来查询文件名。
看来还有很多要学的,加油吧!
阅读全文
0 0
- Linux Shell脚本的一道作业
- Linux shell脚本作业
- linux的shell脚本
- shell 脚本作业
- linux的shell脚本编程
- linux的Shell脚本程序
- linux shell 脚本的颜色
- linux脚本----shell 的 && 和 ||
- linux下的shell脚本
- linux shell脚本的编写
- Linux下的SHELL脚本
- linux的shell脚本入门
- linux Shell脚本的基础知识
- Linux shell脚本的字符串
- linux 常用的shell脚本
- linux执行shell脚本的
- Linux的shell脚本基础
- Linux简单的shell脚本
- 编译型与解释型、动态语言与静态语言、强类型语言与弱类型语言概念详解与区别
- UVA
- 使用Spring Boot Cli快速启动web服务
- 修改input标签的placeholder中文本的颜色
- Python的对象类型
- Linux Shell脚本的一道作业
- UE4导入模型不是一个整体的解决方法
- Linux常用目录的作用及文件搜索命令
- Unity_简单对象池_032
- 使用Maven构建多模块层级项目
- 1146: 吃糖果
- androidstudio快捷键
- JAVA 配置管理库 typesafe.config
- 怎么样简单的进行dwg转pdf格式