shell脚本实现自动生成文件并更改其权限

在学习shell的时候,会不断的创建新文件,然后在新文件中的编写shell脚本学习。于是就有如下几个步骤:

1、 使用touch命令新建shell脚本

2、 编写shell脚本

3、 使用chmod更加shell脚本权限,使其具有可执行权限,然后执行

当多写几个脚本后,就发现这个过程很繁琐,而且新建的shell脚本是以数字升序进行创建的。为什么不写一个脚本来实现上述三个过程了。于是就开始了,结果花了好长一段时间才弄出来,真实惭愧,还是对shell不熟悉了。

先说说实现的思路:

1、 先得到目录下最新的脚本名,提取数字

2、 将数字加1,然后和.sh进行拼接,得到新的脚本名

3、 使用touch创建新脚本

4、 使用chmod更改权限

对于第一步:

使用ls –t参数, 以时间排序显示。

要提取第一行数据,需要使用head –n 1,因此使用管道,将两个命令拼接。

要提取其中的数字。使用tr –cd ‘[0-9]’,将处理字符串中的除0-9之外的所有字符删除掉,还是需要使用管脚,与之间的命令拼接。

这里后面加echo只是为了让得出来的数字显示在一行。

所以在脚本中,就下面一句代码就搞定了。将提取出来的数字保存在变量number中。

第二步:

使用$(( 表达式 )) 进行数学运算。

拼接,直接将字符串连写一起即可。

第三步:

使用bash的 `命令` 来执行shell命令。

第四步:

还是使用bash的 `命令` 来执行shell命令

所以,只需要如下几句代码即可实现想要的功能了。

number=`ls -t | head -n 1 | tr -cd ‘[0-9]‘`
number=$(( $number + 1 ))
new_sh_file="$number"".sh"
`touch $new_sh_file`
`chmod a+x ./ -R`

还可以将该脚本赋值到/usr/bin目录下,这样,以后在什么地方都可以直接执行该脚本了。

时间: 2024-10-08 17:13:53

shell脚本实现自动生成文件并更改其权限的相关文章

Mybatis中使用mybatis-generator结合Ant脚本快速自动生成Model、Mapper等文件

使用过Mybatis的同学都知道,针对每一个项目中使用到的数据库表都需要建立其对应的数据库增删改查xxxMapper.xml文件.实体类xxx.java文件以及其他类用来调用进行数据库操作的xxxMapper.java文件.在开始学习Mybatis时,我相信不少人都是通过手动来建立这些文件的.毫无疑问,如果项目比较大的话还通过手动建立这些文件效率是非常低的,这时我们可以通过mybatis-generator来自动生成这些文件.但是,这个工具默认是以命令行的形式来生成相关文件的,因此我们可以通过写

Linux基础之-利用shell脚本实现自动监控系统服务

目的:监控集群内nginx及nfs服务运行是否正常,如任一服务异常,则发送邮件通知用户 条件:1. 主机及子机IP地址,hostname已确定: 2. 主机与子机能够免密通讯,即基于密匙通讯(相关命令:ssh-keygen;ssh-copy-id -i web1); 需要的文件:    1. python邮件发送工具: 2. nfc.sh监控脚本,监控nginx及nfs服务状态,并调用mail发送工具通知用户: 3. nfc-install.sh监控部署脚本,运行在主机,为子机配置文件,执行命令

上传文件时自动生成文件夹

#region 返回当前日期的文件夹 /// <summary>        ///上传文件时自动生成文件夹        /// </summary>        /// <param name="path">要保存的路径</param>        /// <returns>返回生成的文件夹</returns>        public static string CreateDis(string pa

linux shell 脚本获取和替换文件中特定内容

1.从一串字符串中获取特定的信息 要求1:获取本机IP:menu.lst为系统镜象的IP配置文件,需要从中获取到本机IP信息(从文件获取信息) 1 timeout 1 2 default 0 3 4 title live 5 find --set-root /casper/vmlinuz 6 kernel /casper/vmlinuz boot=casper ignore_uuid showmounts ip=eth0,10.0.66.66,255.255.240.0,10.0.64.3 7

如何使用shell脚本快速排序和去重文件数据

前面写过一篇通过shell脚本去重10G数据的文章,见<用几条shell命令快速去重10G数据>.然而今天又碰到另外一个业务,业务复杂度比上次的单纯去重要复杂很多.找了很久没有找到相应的办法,于是用shell脚本程序去处理.具体业务逻辑: 1.首先根据给定指定进行排序 2.排序后对给定字段进行去重,去重的规则如下: a)排序后如果相邻N行给定字段值相同的行数不超过两行,则两行都保留. a)排序后如果相邻N行给定字段值相同的行数超过两行,则保留首行和尾行. 就这样一个业务逻辑,其实看起来并不是太

4-论自动生成文件

在版本5.0-rc4中发现加入: define('APP_AUTO_BUILD', false);不能自动生成相关模块文件.参照版本5.0-rc1,发现其原因为:1.版本5.0-rc1中的代码增加了:(1)在\thinkphp\base.php中多了: defined('APP_AUTO_BUILD') or define('APP_AUTO_BUILD', false); // 是否自动生成应用模块 defined('APP_AUTO_RUN') or define('APP_AUTO_RUN

linnux下setgid与setfacl的结合,解决apache自动生成文件权限问题

setgid与setfacl的结合,能够解决apache/nginx自动生成的文件导致ftp用户删除时权限不足的问题. 需求这样的: 1:ThinkPHP框架运行时生成Runtime(755)文件,文件权限所有者为apache:apache用户.组. 2:而ftp用户已属apache组用户,因为Runtime文件夹的所有组(不可写),所以此文件夹下面的文件无法被ftp用户删除,而开发的时候又需要实时的删除缓存文件来使更改生效. 关于两个命令的讲解建议观看另两篇文章: setgid setfacl

Shell脚本(自动填充函数模板)

最近很多同学在看我视频教程的时候,对 vii 这货很好奇,vii 是 vi 的亲戚吗?为什么用它新创建一个新程序能自动填充程序框架代码呢? 今天就来扒一扒这货. 其实,vii 是我写的一个脚本,跟 vi 没半毛钱关系,只不过借用一下这个名字而已.那这个脚本长什么样呢?look: 下面听我详细为你解析上面的代码,来看第1行: #!/bin/bash 这是Shell脚本的格式,没啥好讲的. 再来看第3-6行: if [ $# -eq 0 ] then vi fi 这是是判断执行 vii 的时候带不带

shell脚本0——一切皆文件与管道

管道:grep foo /path/to/file | grep -n -k 3 | more 实际过程与我们直观认为的相反,最好通过实际过程理解.首先运行的是more,它的输入被连接至一个管道.然后是sort,并且其输出被连接至之前的那个管道.接着创建第二个管道,并且将sort的stdin连接至该管道.最后执行grep,将其stdout连接至与sort进程相连的那个管道. 当grep开始运行并输出数据时,数据顺着管道流向sort,sort处理后顺着管道输出到more,由more对管道输出的全部