我想在我的.bash_profile中创建bash函数,它基本上是find ./ -name $1
,非常简单的想法,似乎不起作用。我的尝试不能以正确的方式打印东西,例如:
find_alias() {
`find ./ -name $1 -print`
}
alias ff='find_alias $1'
以上如果我做ff *.xml
之类的话,我会得到以下一个内容:
bash:.pom.xml:权限被拒绝
之后:
find_alias() {
echo -e `find ./ -name $1 -print`
}
alias ff='find_alias $1'
确实找到了所有这些,但是把它的输出放在一条很长的线上,我在这里做错了什么?
答案 0 :(得分:2)
find_alias() {
find ./ -name $1 -print
}
你不需要也不想要反引号。那会尝试执行find
命令返回的内容。
答案 1 :(得分:1)
反引号使shell处理其内部输出作为应执行的命令。如果您尝试´echo "ls"´
,那么它将首先执行echo "ls"
,获取文本ls
的输出,然后执行列出所有文件。
在您的情况下,您正在执行find ./ -name *.xml -print
的文本结果,这是匹配文件的列表。当然没有任何意义,因为匹配的文件名(在大多数情况下)不是命令。
您获得的输出意味着两件事:
./pom.xml
) - 毫无意义因此,正如@Mat建议的那样,解决问题的简单方法是删除反引号并让find
的输出显示在终端中。