gpt4 book ai didi

bash - 可以CD成文件吗?

转载 作者:行者123 更新时间:2023-12-04 16:16:49 24 4
gpt4 key购买 nike

我找到了我需要 cd 到(显然是到父目录)的文件列表。

如果我执行 cd ./src/components/10-atoms/fieldset/package.json 我得到错误 cd: not a directory:,这是有道理的.

但是没有办法允许这样做吗?因为操作路径字符串非常麻烦,对我来说,有一个选项是完全有意义的,因为 cd 是一个目录函数,如果路径不会结束会很酷在一个文件中,它会递归地跳得更高,并从给定的路径中找到“第一个目录”。

所以 cd ./src/components/10-atoms/fieldset/package.json 会让我进入 ./src/components/10-atoms/fieldset/告诉我我选择了一个文件而不是目录。

最佳答案

您可以编写一个 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[@]}"}
}

如果您希望它成为默认行为,请将其放入您的~/.bashrc。它不会被 shell 脚本或其他程序继承,因此它们不会受到影响。

它修改cd 的参数,用父目录替换任何文件名。带有前导破折号的选项将被保留。 command cd 调用底层的 cd 内置函数,这样我们就不会陷入递归循环。

(这个邪恶的野兽是什么:${args[0]+"${args[@]}"}?就像"${args[@] }",它扩展了参数数组,但如果你的 bash 版本是 4.0-4.3 并且你启用了 set -u,它会避免触发 a bash bug with empty arrays。)

关于bash - 可以CD成文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59049000/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com