我一直在运行一些find命令,并注意到一些关于bash如何处理.vs作为字符串输入的目录的奇怪之处.
find . -type f -exec sh -c 'cd $(dirname "$0") && aunpack "$0"' {} \;
Run Code Online (Sandbox Code Playgroud)
行为完全不同于
find [current dir] -type f -exec sh -c 'cd $(dirname "$0") && aunpack "$0"' {} \;
Run Code Online (Sandbox Code Playgroud)
是什么赋予了?
bash对待'.' 和字符串指定的目录路径不同.不是'.' 替代现在的目录?
什么find是将路径的其余部分附加到作为参数传递的位置.
即:如果你在dir"/ home/user/find":
find .
Run Code Online (Sandbox Code Playgroud)
打印:
.
./a
./b
Run Code Online (Sandbox Code Playgroud)
但如果你尝试:
find /home/user/find
Run Code Online (Sandbox Code Playgroud)
它打印:
/home/user/find
/home/user/find/a
/home/user/find/b
Run Code Online (Sandbox Code Playgroud)
因此,find将路径的其余部分(/ a,/ b ...)附加到参数(.或/ home/user/find).
| 归档时间: |
|
| 查看次数: |
111 次 |
| 最近记录: |