0

私はこのエイリアスを持っています:

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

私がする時

gi someString

それはgrepを実行しますが、私が提供するものとは異なる文字列で、通常は「p /」などを含みます.

履歴をgrepするために似たようなものを使用しています:

alias gh='history | grep $1'

これは完璧に機能します。

編集: echo $SHELL に従って、/bin/bash シェルを使用しています。

ありがとう!

4

3 に答える 3

2

このaliasメカニズムは、単に単語を置き換えるだけです。同じ行にある他の単語はそのまま残されるため、通常はコマンドを置き換えて引数を残します行を再配置したいので、これはgrepの例ではうまく機能しません。

ここで$1、シェルプロセス(またはシェル関数)パラメーターを参照します。どちらの場合も、同じ行に入力された単語ではありません。

この場合、bashを含むすべてのPosixシェルで機能するシェル関数を使用した方がよいでしょう。

gi () {
  grep -r -i "$1" ./*
}
于 2013-02-06T16:51:31.947 に答える
0

このエイリアスを試してください:

alias gi='find . | xargs grep -i'

それでも問題を解決するためにエイリアスを使用したい場合は、これでうまくいきます。

于 2013-02-06T16:50:31.653 に答える