Je suis nouveau à coup, et je suis en train de construire mon propre alias grep pour rechercher dans les fichiers est le script ici je CONSTRUIT:Comment le renforcement de la fonction grep personnalisée
function gia() {
if [ -z "$1" ]; then
echo "-You need to define what are you looking for-"
else
echo "-Looking for \"$1\".-"
if [ -z $2 ]; then
echo "-no path passed, searching all files-"
grep -i --color "$1" ./*
else
echo "-Looking in \"$2\".-"
grep -i --color "$1" $2
fi
fi
}
la deuxième option ne fonctionne pas Eh bien, si je l'essayer, je reçois cette sortie:
$$ gia 'sometext' ./*.html
-Looking for "sometext".-
-Looking in "./login.html".-
Je ne ai jamais spécifié login.html, mais il a fallu un des fichiers dans mon répertoire et cherché en elle. et le grep échoue.
par exemple, si j'ai 3 fichiers dans myfiles répertoire:
1.html, 2.txt et 3.html
et 3.html a le texte "backquotes"
si je recherche comme ceci:
cd myfiles
gia 'backquotes'
Je reçois les résultats
-Looking for "backquotes".-
-no path passed, searching all files-
./3.html: <backquotes>...</backquotes>
mais si j'étais sur la racine et la recherche comme ceci:
gia 'backquotes' ~/myfiles/*.html
Je reçois ceci:
-Looking for "backquotes".-
-Looking in "./1.html".-
aucun résultat est revenu parce qu'il recherché seulement dans 1.html. si j'avais des "backquotes" dans 1.html. il reviendra, mais je ne reçois rien des autres fichiers, il ne fait que chercher dans le premier fichier et quitte.
Je sais que l'étoile est un caractère spécial dans bash, mais comment puis-je résoudre ce problème?
Merci pour votre aide à l'avance.
EMMNS
Montrez-nous comment vous appeler 'gia'. D'après les apparences, $ 2 semble avoir la valeur './login.html' – Tuxdude
mis à jour mon poste – EMMNS
alternativement vous pouvez utiliser 'trouver $ dir_name -name" $ file_name_pattern "-exec grep -i --color = auto" $ string_to_grep "{} \;' – Alex