文章目录
- 背景
- CSHLL 代码实现
- cshell 中 unset 的介绍
- bash 中监控文件的方法
背景
由于开发代码是在外网编译,而镜像的烧写是在内网中的EDA工具中进行的,所以就需要先将代码在外网编译好后,再通过FTP工具将镜像传输到内网中,然后在内网EDA软件中加载镜像,这样每次在不同的环境中重复操作很 费劲,就萌生了一个想法:是不是可以在内网中监控要烧写的文件,如果发现该文件的时间戳发生变化,就将烧写文件从内网中的FTP目录拷贝到烧写目录。
CSHLL 代码实现
#!/bin/cshset cur_time=`ls -rtl /mnt/ftp/download.img | awk '{print $8}' | awk -F ":" '{print $1$2}'`
sleep 1while (1)set pre_time=$cur_timeunset cur_timeset cur_time=`ls -rtl /mnt/ftp/download.img | awk '{print $8}' | awk -F ":" '{print $1$2}'`if ($pre_time == $cur_time) thenecho "sleep 3s wait for new version"sleep 3elseecho "copy new files to eda dir"endif
end
测试结果:
关于 命令 awk
的使用请见:嵌入式开发 Linux 常用命令系列 7 – awk 常用方法
cshell 中 unset 的介绍
C Shell中的unset命令用于删除环境变量或者shell变量。该命令的格式如下:
unset variable
在这里,variable是你要删除的变量的名字。
例如,假设你已经设置了一个名为MY_VAR的环境变量,你可以使用以下命令删除它:
unset MY_VAR
需要注意的是,unset
命令只能删除当前shell环境中的变量,它不能删除其他shell环境或者子进程中的变量。此外,如果你试图删除一个不存在的变量,unset
命令不会报错,它会默默地忽略这个操作。
bash 中监控文件的方法
watch命令可以定期执行一条命令,并显示其输出,因此可以用来监控文件的状态。例如,下面的命令会每两秒钟显示一次文件 file.txt
的前10行:
watch -n 2 "head file.txt"
inotify 是一个Linux特有的文件系统监视机制,它可以用来监视文件或目录的变化。在Shell中,可以使用inotifywait
和inotifywatch
等命令来使用这个机制。例如,下面的命令会监视file.txt
的修改,并在文件被修改时输出一条消息:
inotifywait -m -e modify file.txt
请注意,inotify
的相关命令可能并不在所有的Linux发行版中都预装,如果需要使用,你可能需要手动安装。