使用当前目录设置 unix 别名如何在每个路径上工作

how set unix alias with current directory works on every path

我有这个在“/”目录上工作的别名,但在路径改变时停止工作

    alias exesh='chmod +x $(find . -maxdepth 1 -name '*.sh')'

我是 Unix 新手,欢迎任何帮助
*我正在使用 cygwin,如果这可能是问题所在 *

Bash,关于这个问题,我这样说


    find: paths must precede expression: 2b.sh
    Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]
    chmod: missing operand after '+x'
    Try 'chmod --help' for more information.

但是如果我在命令行上粘贴 chmod +x $(find . -maxdepth 1 -name '*.sh') 它可以正常工作,所以我认为这取决于当前目录 .

尝试:

alias exesh='chmod +x $(find . -maxdepth 1 -name '"'"'*.sh'"'"')'

你的问题是你的蜱虫里面有蜱虫 - '。刻度和引号 - " 可以自由连接,因此这是在刻度中编码刻度的可靠方法。

我还打算建议使用 find -exec 而不是命令扩展,但我找不到在这种结构中从 find 转义 + 字符的方法。

关于使用 find -exec 的建议我终于解决了我的问题。解决方案是:
alias exesh='find . -name "*.sh" -exec /bin/chmod +x {} \;'