gpt4 book ai didi

Bash:别名中的嵌套反引号会导致问题

转载 作者:行者123 更新时间:2023-11-29 08:52:21 24 4
gpt4 key购买 nike

我正在尝试编写一个别名,它将跳转到包含指定文件的 cwd 的后代目录(或第一个 find 找到的此类文件名):

下面的命令组合可以达到预期的效果:

cd `dirname \`find -name 'MyFile.txt' | sed -n 1p\``

但是,我似乎无法以创建工作别名的正确方式转义:

alias jump="cd \`dirname \\\`find -name '$1' | sed -n 1p\\\`\`"

输出:

/*
dirname: missing operand
Try `dirname --help' for more information.
bash: cd: find: No such file or directory

我的逻辑是,反引号需要在带有单个 \ 的双引号字符串中转义,而我不能将 \\ 转换为字符串中的单个反斜杠, 所以第二个嵌套反引号需要 1+2=3。

有什么建议吗?

最佳答案

别名不能接受像 $1 这样的参数。请改用函数。

还可以使用 $(command) 代替反引号进行命令替换,因为这样更容易嵌套。

函数将是:

jump() {
cd $(dirname $(find -name "$1" | sed -n 1p))
}

关于Bash:别名中的嵌套反引号会导致问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8928599/

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