find:路径必须在表达式:b.txt 之前查找:谓词名称?后可能的未引号模式Linux为什么会出现
时间: 2024-09-25 15:09:43 浏览: 14
在Linux命令行中,`find`是一个强大的文件搜索工具,它可以根据指定的条件在目录树中查找文件。当你看到这样的命令格式 `find: 路径必须在表达式:b.txt 之前查找:谓词名称? 后可能的未引号模式`,这看起来像是对`find`命令用法的一个误解或片段。
实际上,完整的`find`命令应该像下面这样:
```shell
find [起始目录] -name "b.txt" -type f \( -path "[某个路径]" \! -prune \) -print
```
这里的参数解释如下:
- `-name "b.txt"`:寻找名字为 `b.txt` 的文件。
- `-type f`:只搜索普通文件,不包括目录等其他类型。
- `-path "[某个路径]"`:如果需要在 `b.txt` 之前的特定路径查找,你需要将 `[某个路径]` 替换为你想要限制查找范围的实际路径。
- `\! -prune`:防止在找到目标路径时停止搜索,因为`-prune`选项通常用于跳过某些目录。
- `-print`:打印匹配到的文件信息。
如果出现“找不到路径”的情况,可能是路径错误、权限不足或者`b.txt` 文件不在预期位置。此外,如果在表达式中使用了特殊字符,可能需要添加转义(例如用`\`预前),如果没有正确引用或理解模式语法也可能导致问题。
相关问题
编写一个二分查找函数要求如下:1.画控制流图; • 2.分别确定3条路径,满足100%语句覆盖、完全分支覆盖、 完全谓词覆盖;并推导出相应路径的路径谓词表达式; • 3.求解每个谓词表达式,找出至少一条不可行路径; • 4.引入至少一个缺陷,使得某个特定的满足完全分支覆盖准 则的测试用例,未能检测出该缺陷。
以下是二分查找函数的控制流图:
![二分查找函数控制流图](https://i.imgur.com/9yS5QmS.png)
接下来,我们分别确定三条路径并推导出相应的路径谓词表达式:
路径1:1 → 2 → 3 → 4 → 10
路径谓词表达式:low <= high ∧ key <= arr[mid]
路径2:1 → 2 → 3 → 4 → 5 → 6 → 7 → 8 → 9 → 10
路径谓词表达式:low <= high ∧ key > arr[mid]
路径3:1 → 2 → 3 → 4 → 5 → 6 → 7 → 8 → 9 → 11
路径谓词表达式:low > high
接着,我们求解每个谓词表达式并找出至少一条不可行路径:
路径1的谓词表达式 low <= high ∧ key <= arr[mid] 成立,不需要进行修改。
路径2的谓词表达式 low <= high ∧ key > arr[mid] 成立,不需要进行修改。
路径3的谓词表达式 low > high 不成立,因为 low 和 high 都是数组下标,它们应该始终满足 low <= high,因此我们需要修改路径3的谓词表达式。
我们可以将路径3的谓词表达式修改为 low >= high,这样就能够找到至少一条不可行路径了。
最后,我们引入一个缺陷,使得某个特定的满足完全分支覆盖准则的测试用例未能检测出该缺陷。我们可以在代码中增加一个错误的判断条件,例如将路径1的谓词表达式修改为 low >= high ∧ key <= arr[mid],这样在测试用例满足完全分支覆盖准则时,程序并不会报告查找失败,从而无法检测出这个错误。
编写一个二分查找函数: • 1.画控制流图; • 2.分别确定3条路径,满足100%语句覆盖、完全分支覆盖、 完全谓词覆盖;并推导出相应路径的路径谓词表达式; • 3.求解每个谓词表达式,找出至少一条不可行路径; • 4.引入至少一个缺陷,使得某个特定的满足完全分支覆盖准 则的测试用例,未能检测出该缺陷。 • 5.使用VS上机实践并完成上述任务。 • 6.根据实训,试提出一种方法,能检测出前一步引入的缺陷
1. 二分查找函数控制流图如下:
![二分查找函数控制流图](https://i.imgur.com/gqVhw6M.png)
2. 根据控制流图,可以得到以下三条路径:
- 路径1:进入while循环,mid等于key,返回mid
- 路径2:进入while循环,mid小于key,改变low的值,继续while循环
- 路径3:进入while循环,mid大于key,改变high的值,继续while循环
对应的路径谓词表达式如下:
- 路径1:mid == key
- 路径2:mid < key
- 路径3:mid > key
3. 对于路径2,当数组中不存在key时,low会不断逼近high,导致死循环。因此,当low不小于high时,应该退出循环。
4. 引入一个缺陷:将while循环条件改为while(low <= high)。这样,当数组中不存在key时,程序会进入死循环,而原本能够检测到该缺陷的测试用例,现在却无法检测到。
5. 使用VS上机实践,并完成上述任务。
6. 为了检测出前一步引入的缺陷,可以添加一个新的测试用例,数组中不存在key,期望返回-1。这个测试用例可以覆盖路径2和路径3,并且路径谓词表达式中的mid < key和mid > key均为真。如果程序进入了死循环,说明存在缺陷。