题目描述
实现一个脚本,可以在指定的目录下查找某个文件/目录。
如果找到该文件/目录,显示其完整路径名
如果找到多个文件,则每个文件名都显示
命令格式如下:
SCRIPT_NAME SEARCH_ON_DIR SEARCH_FILENAME
思路
1) 按照所给的命令格式,首先得设置变量dir=”
1
”
、
f
i
l
e
n
a
m
e
=
”
{1}”、filename=”
1”、filename=”{2}”,分别表示上级文件和寻找的文件(我设置的是filename为文件名的开头,即搜索的是以filename为开头的文件)。
但是如何将查找到的文件存起来以便在输出路径时循环使用呢?
为了解决这个问题,我设置了一个head变量来存这个数组。按照课上 file=ls -a
这个语法,file最终等于ls -a所查到的内容。那么,我可以设置
head=ls $dir/$filename*
这样,head就表示我们搜索到的结果,就可以利用head进行循环输出路径。但是,还存在找不到文件的情况,这时候head就是空的,因为它是一个字符串类型,所以用 if [-z “$head”] 来判断,非空才做循环操作输出搜到的每个文件的路径。
2) 利用 chmod +x Searchit 开启权限
3) 为了能够随时使用该 Searchit 脚本,我查找资料,先是讲该脚本复制到 usr/local 和 usr/bin 中,但是我仍然用不了。这一点我没找到原因。所以我通过查资料去改变环境变量,让这个脚本能够随时使用。通过命令
#PATH=$PATH:/usr/local/Searchit/bin
改变了环境变量以后,就能随时使用了。
不足的是,这个设置是一次性的,即只在这一个终端窗口中起作用。在下一次开启终端时,如果想使用该脚本,还是得重新设置环境变量。