想要创建此命令的别名
find . -name '*.sh' -exec chmod a+x '{}' \;
Run Code Online (Sandbox Code Playgroud)
并且在设置别名时我无法转义单引号
alias mx='find . -name '*.sh' -exec chmod a+x '{}' \;'
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏.
atx*_*atx 16
你可以使用双引号:
alias mx="find . -name '*.sh' -exec chmod a+x {} \;"
Run Code Online (Sandbox Code Playgroud)
编辑:此外,'周围的单引号{}是没有必要的.
cle*_*oux 14
你想要的是一个功能,而不是别名.
function mx {
find . -name '*.sh' -exec chmod a+x '{}' \;
}
Run Code Online (Sandbox Code Playgroud)
这将具有别名所具有的相同效果,避免任何"创造性解决方案"进行工作,并且如果您需要灵活性则更灵活.在这种情况下,这种灵活性的一个很好的例子是允许用户指定要搜索的目录,如果没有指定目录,则默认为当前目录.
function mx {
if [ -n $1 ]; then
dir=$1
else
dir='.'
fi
find $dir -name '*.sh' -exec chmod a+x '{}' \;
}
Run Code Online (Sandbox Code Playgroud)
Mar*_*ark 12
其他答案在这个(大多数)情况下包含更好的解决方案,但是你可能因为某种原因真的想要逃避',你可以做到'"'"'实际结束字符串,添加'转义"并再次启动字符串.
alias mx='find . -name '"'"'*.sh'"'"' -exec chmod a+x {} \;'
Run Code Online (Sandbox Code Playgroud)
有关如何在单引号字符串中转义单引号的更多信息?