Linux别名,什么';怎么了?

Linux别名,什么';怎么了?,linux,alias,Linux,Alias,我有一个别名: alias gi='grep -r -i $1 ./*' alias gi='find . | xargs grep -i' 当我这样做的时候 gi someString 它执行grep,但是在我提供的字符串之外的其他字符串上,通常带有“p/或其他类似的东西 我正在使用类似的方法来刷新历史记录: alias gh='history | grep $1' 这很好用 编辑:根据echo$shell,我在/bin/bash shell上 谢谢!试试这个别名: alias gi=

我有一个别名:

alias gi='grep -r -i $1 ./*'
alias gi='find . | xargs grep -i'
当我这样做的时候

gi someString
它执行grep,但是在我提供的字符串之外的其他字符串上,通常带有“p/或其他类似的东西

我正在使用类似的方法来刷新历史记录:

alias gh='history | grep $1'
这很好用

编辑:根据echo$shell,我在/bin/bash shell上

谢谢!

试试这个别名:

alias gi='grep -r -i $1 ./*'
alias gi='find . | xargs grep -i'
如果您仍然只想使用alias解决问题,这将起作用。

尝试使用此别名:

alias gi='grep -r -i $1 ./*'
alias gi='find . | xargs grep -i'

如果您仍然只想使用alias来解决问题,这将起作用。

alias机制只是替换一个单词。同一行中的任何其他单词都保留在原来的位置,因此通常只替换命令并保留参数。这对您的grep示例不起作用,因为您希望重新排列l伊恩

现在,
$1
将引用shell进程(或shell函数)参数,无论是哪种情况,都不会引用在同一行上键入的单词

在这种情况下,使用shell函数会更好,它可以在任何Posix shell上工作,包括bash

gi () {
  grep -r -i "$1" ./*
}

alias
机制仅替换一个单词。同一行中的任何其他单词都保留在原来的位置,因此通常只替换命令并保留参数。这对于您的grep示例不起作用,因为您希望重新排列该行

现在,
$1
将引用shell进程(或shell函数)参数,无论是哪种情况,都不会引用在同一行上键入的单词

在这种情况下,使用shell函数会更好,它可以在任何Posix shell上工作,包括bash

gi () {
  grep -r -i "$1" ./*
}

无法将参数传递给
别名
,有关详细信息,请参阅。您需要的是一个函数。请尝试以下行:

function gi() {
grep -r -i "$1" ./*
}
希望这有帮助


注:至于
alias gh='history | grep$1'
为什么有效,是因为它与
alias gh='history | grep
一样,在静态设置
别名时,
$1
会被展开。

您不能将参数传递给
alias
,请查看详细信息。您需要的是一个函数。请尝试以下几行:

>
function gi() {
grep -r -i "$1" ./*
}
希望这有帮助


注:至于
alias gh='history | grep$1'
为什么有效,是因为它与
alias gh='history | grep
一样,在静态设置
别名时,
$1
会被展开。

您可能也应该共享您正在使用的shell。谢谢,完成了。alias只是您特定的shell内置命令您正在使用的shell可能是bash。实际上这并不重要,因为别名是Posix,答案适用于任何Posix shell。对不起,Digi,不确定您在这篇评论中要解决的困惑是什么?谢谢。您可能也应该分享您正在使用的shell。谢谢,完成了。别名只是您特定的shell内置命令d、 您正在使用的shell可能是bash。实际上这并不重要,因为别名是Posix,答案适用于任何Posix shell。对不起,Digi,不确定您在这篇评论中要解决的困惑是什么?谢谢。谢谢,非常有用!谢谢,非常有用!谢谢链接。投票结果是肯定的,但Dig击败了您实际答案;-)@Nathaniel:没问题,他的答案实际上解释了很多:)谢谢你的链接。投票结果不错,但Dig在实际答案上击败了你;-)@Nathaniel:没问题,他的答案实际上解释了很多:)