unset命令的作用是从环境中删除变量或函数。这个命令不能删除shell本身定义的只读变量
#/bin/sh
foo="Hello World"
echo foo
unset foo
echo foo
2.find命令
它的功能是查找文件,它及其有用,它不仅仅是因为它有选项,测试和动作类型的参数,也由于其中一个参数的处理结果可以影响后续参数的处理。
首先看一个例子,在本地机器上查找名为wish的文件。
find / -name wish -print
/usr/bin/wish
这个命令的含义是:从根目录开始查找名为wish的文件并且输出文件名。这非常简单。
find / -mount -name wish -print
/usr/bin/wish
这样任然找到文件,但不必再搜索挂载的其他文件系统。
find [path] [options] [tests] [actions]
path域很容易理解,我们可以使用绝对路径,如/bin,或者相对路径,如. 如果需要,我们可以指定多个路径,如find /var /home。
选项 含义
-depth 在查看目录本身之前先搜索目录的内容
-follow 跟随符号链接
-maxdepths N 最多搜索N层目录
-mount 不搜索其他文件系统中的目录
测试 含义
-atime N 文件在N天之前被访问过
-mtime N 文件在N天之前被修改过
-name pattern 文件名匹配提供的模式pattrern,为了确保pattern被直接传递给find命令而不是由shell来处理,patern必须总是用引号括起来。
-newer otherfile 文件比otherfile文件要新
-type c 文件的类型为C,C可以是一个特殊类型。最普通的类型是d目录和f普通文件。
-user username 文件的拥有者是指定的用户username
操作符,短格式 长格式 含义
! -not 测试取反
-a -and 两个测试都必须为真
-o -or 两个测试之一必须为真
find . -newer while2 -print
这个会打印 .
./elif3
./words.txt
看起来不错,不过结果包含当前目录,而不是我们想要的。
find . -newer while2 -type f -print
它打印的是: ./elif3
./words.txt
find . \(-name "_*" -or -newer while2 \) -type f -print
必须转义圆括号使得它们不会被shell处理
-exec command 执行一条命令。
-print 打印文件名
-ls 对当前文件使用命令ls -dils
find . -newer while2 -type f -exec ls -l {} \;
-rwxr-xr-x 1 rick rick 275 Feb 8 17:07 ./elif3