0

我想在我的 .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'

确实找到了它们,但是将其输出放在一条长长的线上,我在这里做错了什么?

4

2 回答 2

2
find_alias() {
  find ./ -name $1 -print
}

您不需要也不想要反引号。那将尝试执行find命令返回的内容。

于 2012-09-10T04:37:57.617 回答
1

反引号使 shell 将其中的输出视为应执行的命令。如果您尝试过´echo "ls"´,那么它将首先执行echo "ls",获取文本输出,ls然后执行它列出所有文件。

在您的情况下,您正在执行的文本结果find ./ -name *.xml -print是匹配文件的列表。当然它没有意义,因为匹配的文件名(在大多数情况下)不是命令。

你得到的输出意味着两件事:

  • 你试图从 pom.xml 执行脚本(就像你输入的那样 ./pom.xml) - 没有意义
  • 您没有该文件的执行权限

因此,正如@Mat 建议的那样,针对您的问题的简单解决方案是删除反引号并让输出find显示在您的终端中。

于 2012-09-10T05:13:39.617 回答