我找到了需要访问的文件列表cd(显然是在父目录中)。
如果我做得到cd ./src/components/10-atoms/fieldset/package.json错误cd: not a directory:,那是有道理的。
但是没有办法允许这种情况吗?因为操作路径字符串非常繁琐,对我来说,为此提供一个选项是很有意义的,因为这cd是一个目录函数,并且很酷的是,如果路径不会以文件结尾,它将以递归方式跳转更高,并从给定路径中找到“第一个目录”。
您可以编写一个shell函数来做到这一点。
cd() {
local args=() arg
for arg in "$@"; do
if [[ $arg != -* && -e $arg && ! -d $arg ]]; then
args+=("$(dirname "$arg")")
else
args+=("$arg")
fi
done
builtin cd ${args[0]+"${args[@]}"}
}
Run Code Online (Sandbox Code Playgroud)
~/.bashrc如果您希望将其作为默认行为,则将其放入。Shell脚本或其他程序不会继承它,因此它们不会受到影响。
它修改cd的参数,用父目录替换所有文件名。带有前划线的选项将保留。command cd调用底层的cd内置函数,因此我们不会陷入递归循环中。
(这是什么邪恶的野兽:${args[0]+"${args[@]}"}?就像"${args[@]}",它扩展了参数数组,但是避免了在bash版本为4.0-4.3且已set -u启用的情况下触发带有空数组的bash错误)。
| 归档时间: |
|
| 查看次数: |
73 次 |
| 最近记录: |