find 命令语法的差异

find 命令语法的差异

看着 find 命令,我很好奇两者之间有什么区别:

find -type f

find ${1} -type f

它们似乎都执行相同的功能,那么它们的${1}用途是什么?

答案1

${1}与find无关,它是一个shell参数。

例如,如果第二个 find 命令在 shell 脚本内运行,则如下所示test.sh

#!/bin/bash
find ${1} -type f

然后,如果你test.sh

./test.sh cica

然后cica就会被 shell 替换到find命令行中。该find命令将看到一个

find cica -type f

..它也会运行(因此,它将在目录中查找文件cica,而不是在当前目录中)。

bashPs 我们一生中都应该读一次、、lscp的手册strace

答案2

正如 @DopeGhoti 提到的,${1}(或 $1)是脚本或函数的第一个参数。

我怀疑您所质疑的代码是看起来像这样的函数的一部分:

#/bin/bash
function show {
    find ${1} -type f -print
}
show        #...find with current directory as starting point...
show mydir  #...find using `mydir` as starting point...

也就是说,如果调用函数时不存在任何参数,则该函数${1}为空并find -type f...运行。

答案3

${1}(或$1) 是脚本或函数的第一个参数。您在问题中调用的命令可能在脚本中。举一个非常基本的例子:

#!/bin/bash
find "${1}" -type f

如果该文件保存为可执行文件seek.sh,并且您运行了该命令./seek.sh /home,则将执行的命令是find "/home" -type f.

相关内容