Kom*_*ave 9 bash nested escaping find
我正在尝试编写一个别名,它将跳转到cwd的后代目录,该目录包含一个指定的文件(或首次find发现的这种文件名):
以下命令组合可实现所需结果:
cd `dirname \`find -name 'MyFile.txt' | sed -n 1p\``
Run Code Online (Sandbox Code Playgroud)
但是,我似乎无法以正确的方式来创建一个工作别名:
alias jump="cd \`dirname \\\`find -name '$1' | sed -n 1p\\\`\`"
Run Code Online (Sandbox Code Playgroud)
输出:
/*
dirname: missing operand
Try `dirname --help' for more information.
bash: cd: find: No such file or directory
Run Code Online (Sandbox Code Playgroud)
我的逻辑是反引号需要在双引号字符串中转义为单个\而我无法\\将其转换为字符串中的单个反斜杠,因此第二个嵌套反引号需要1 + 2 = 3.
有什么建议?
dog*_*ane 16
别名不能像参数一样$1.请改用功能.
也可$(command)用于命令替换而不是反引号,因为它更容易嵌套.
功能将是:
jump() {
cd $(dirname $(find -name "$1" | sed -n 1p))
}
Run Code Online (Sandbox Code Playgroud)
反引号是命令替换的旧形式,并且不能轻松嵌套它们。然而,新$() 形式确实很容易嵌套:
cd $(dirname $(find -name 'MyFile.txt' | sed -n 1p))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3486 次 |
| 最近记录: |