Il s'agit de la commande ack-grepp qui peut être exécutée dans le fournisseur d'hébergement gratuit OnWorks en utilisant l'un de nos multiples postes de travail en ligne gratuits tels que Ubuntu Online, Fedora Online, l'émulateur en ligne Windows ou l'émulateur en ligne MAC OS
PROGRAMME:
Nom
ack - chercheur de texte de type grep
SYNOPSIS
ack [options] MOTIF [FICHIER...]
ack -f [options] [RÉPERTOIRE...]
DESCRIPTION
Ack est conçu comme une alternative à grep pour les programmeurs.
Ack recherche les fichiers d'entrée nommés (ou l'entrée standard si aucun fichier n'est nommé, ou le fichier
name - est donné) pour les lignes contenant une correspondance avec le PATTERN donné. Par défaut, ack
imprime les lignes correspondantes.
PATTERN est une expression régulière Perl. Les expressions régulières Perl se trouvent couramment dans
d'autres langages de programmation, mais pour les particularités de leur comportement, veuillez consulter
<http://perldoc.perl.org/perlreref.html|perlreref>. Si vous ne savez pas utiliser régulièrement
expression mais êtes intéressé à apprendre, vous pouvez consulter
<http://perldoc.perl.org/perlretut.html|perlretut>. Si vous n'avez pas besoin ou souhaitez utiliser
expressions régulières, veuillez consulter l'option "-Q"/"--literal".
Ack peut également lister les fichiers qui seraient recherchés, sans les rechercher réellement, pour laisser
vous profitez des capacités de filtrage de type de fichier d'ack.
DOSSIER SÉLECTION
Si les fichiers ne sont pas spécifiés pour la recherche, que ce soit sur la ligne de commande ou transmis avec le
option "-x", ack explore les sous-répertoires en sélectionnant les fichiers à rechercher.
ack est intelligent sur les fichiers qu'il recherche. Il connaît certains types de fichiers, en fonction
à la fois sur l'extension du fichier et, dans certains cas, sur le contenu du fichier. Ces
les sélections peuvent être faites avec le --taper option.
Sans sélection de fichier, ack recherche dans les fichiers normaux qui ne sont pas explicitement
exclu par --ignore-répertoire et à la --ignore-fichier options, soit présentes dans accusé de réception fichiers ou sur
la ligne de commande.
Les options par défaut pour ack ignorer certains fichiers et répertoires. Ceux-ci inclus:
· Fichiers de sauvegarde : correspondance des fichiers ### ou se terminant par ~.
· Coredumps : correspondance des fichiers noyau.\d+
· Les répertoires de contrôle de version comme .svn et à la .va.
Courir ack avec l'option "--dump" pour voir quels paramètres sont définis.
Toutefois, ack recherche toujours les fichiers indiqués sur la ligne de commande, quel que soit leur type. Si
tu dis ack pour rechercher dans un coredump, il recherchera dans un coredump.
ANNUAIRE SÉLECTION
ack descend dans l'arborescence des répertoires de départ spécifiés. Sinon
répertoires sont spécifiés, le répertoire de travail courant est utilisé. Cependant, il ignorera
les répertoires fantômes utilisés par de nombreux systèmes de contrôle de version et les répertoires de construction
utilisé par le système Perl MakeMaker. Vous pouvez ajouter ou supprimer un répertoire de cette liste avec
le --[non]ignore-répertoire option. L'option peut être répétée pour ajouter/supprimer plusieurs répertoires
de la liste des ignorés.
Pour une liste complète des répertoires qui ne sont pas recherchés, exécutez "ack --dump".
QUAND À UTILISATION GREP
ack atouts grep comme un outil de tous les jours 99% du temps, mais ne jetez pas grep loin, parce que
il y a des moments où vous en aurez encore besoin.
Par exemple, rechercher dans d'énormes fichiers à la recherche d'expressions régulières pouvant être exprimées avec grep
la syntaxe devrait être plus rapide avec grep.
Si votre script ou programme parent utilise grep "--quiet" ou "--silent" ou nécessite la sortie 2 sur IO
erreur, utilisez grep.
OPTIONS
--ackrc
Spécifie un fichier ackrc à charger après tous les autres ; voir "SÉMANTIQUE DE L'EMPLACEMENT ACKRC".
-A NUM, --after-context=NUM
Imprimé NUM lignes de contexte de fin après les lignes correspondantes.
-B NUM, --avant-context=NUM
Imprimé NUM lignes de premier contexte avant de faire correspondre les lignes.
--[pas de rupture
Imprimez une pause entre les résultats de différents fichiers. Activé par défaut lorsqu'il est utilisé
de manière interactive.
-C [NUM], --contexte[=NUM]
Imprimé NUM lignes (par défaut 2) de contexte autour des lignes correspondantes.
-c, --compter
Supprimer la sortie normale ; à la place, imprimez un nombre de lignes correspondantes pour chaque fichier d'entrée.
If -l est en vigueur, il n'affichera que le nombre de lignes pour chaque fichier qui a des lignes
correspondant à. Sans -l, certains nombres de lignes peuvent être des zéros.
Si combiné avec -h (--pas de nom de fichier) ack n'envoie qu'un seul compte total.
--[sans couleur, --[pas]couleur
--Couleur met en surbrillance le texte correspondant. --sans couleur supprime la couleur. C'est par
par défaut à moins que la sortie ne soit redirigée.
Sous Windows, cette option est désactivée par défaut sauf si le module Win32::Console::ANSI est
installé ou la variable d'environnement "ACK_PAGER_COLOR" est utilisée.
--color-filename=Couleur
Définit la couleur à utiliser pour les noms de fichiers.
--correspondance des couleurs=Couleur
Définit la couleur à utiliser pour les correspondances.
--color-lineno=Couleur
Définit la couleur à utiliser pour les numéros de ligne.
--[pas]colonne
Affiche le numéro de colonne de la première correspondance. Ceci est utile pour les éditeurs qui peuvent placer
votre curseur à une position donnée.
--create-ackrc
Vide les options d'accusé de réception par défaut sur la sortie standard. Ceci est utile lorsque vous souhaitez
personnaliser les valeurs par défaut.
--décharger
Écrit la liste des options chargées et leur provenance sur la sortie standard. Pratique
pour le débogage.
--[non]env
--noenv désactive tous les traitements de l'environnement. Non .ackrc est lu et tout environnement
les variables sont ignorées. Par défaut, ack considère .ackrc et les paramètres dans le
environnement.
--affleurer
--affleurer vide la sortie immédiatement. Ceci est désactivé par défaut sauf si ack est en cours d'exécution
interactivement (lorsque la sortie va vers un tube ou un fichier).
-f N'imprimez que les fichiers qui seraient recherchés, sans réellement effectuer de recherche.
PATTERN ne doit pas être spécifié, sinon il sera utilisé comme chemin de recherche.
--files-from=DOSSIER
La liste des fichiers à rechercher est précisée dans DOSSIER. La liste des fichiers est
séparés par des sauts de ligne. Si DOSSIER est "-", la liste est chargée à partir de l'entrée standard.
--[pas de filtre
Force ack à agir comme s'il recevait une entrée via un tube.
--[pas de suivi
Suivre ou ne pas suivre les liens symboliques, autres que les fichiers ou répertoires de départ
ont été spécifiés sur la ligne de commande.
Ceci est désactivé par défaut.
-g RECONNAISSANCE
Imprimer les fichiers où le chemin relatif + le nom du fichier correspondent RECONNAISSANCE. Cette option peut être
combiné avec --Couleur pour qu'il soit plus facile de repérer le match.
--[pas]groupe
--grouper regroupe les correspondances par nom de fichier. Il s'agit de la valeur par défaut lorsqu'il est utilisé de manière interactive.
--pas de groupe imprime un résultat par ligne, comme grep. C'est la valeur par défaut lorsque la sortie est
redirigé.
-H, --avec-nom-de-fichier
Imprimez le nom de fichier pour chaque match. C'est la valeur par défaut, sauf si vous recherchez un seul
fichier explicitement spécifié.
-h, --pas de nom de fichier
Supprimez le préfixe des noms de fichiers sur la sortie lorsque plusieurs fichiers sont recherchés.
--[pas] d'en-tête
Imprimez un en-tête de nom de fichier au-dessus des résultats de chaque fichier. C'est la valeur par défaut lorsqu'il est utilisé
de manière interactive.
--Aidez-moi, -?
Imprimez une courte déclaration d'aide.
--help-types, --help=types
Imprimez tous les types connus.
-i, --ignore-cas
Ignorer les distinctions de casse dans PATTERN
--ignore-ack-defaults
Indique à ack d'ignorer complètement les définitions par défaut fournies avec ack. C'est
utile en combinaison avec --create-ackrc si tu vraiment voulez personnaliser ack.
--[non]ignore-dir=NOM DIR, --[non]ignore-répertoire=NOM DIR
Ignorer le répertoire (car CVS, .svn, etc. sont ignorés). Peut être utilisé plusieurs fois pour ignorer
plusieurs répertoires. Par exemple, les utilisateurs maçons peuvent souhaiter inclure --ignore-dir=données.
Le --noignore-dir L'option permet aux utilisateurs de rechercher des répertoires qui seraient normalement
ignoré (peut-être pour rechercher le contenu de .svn/accessoires répertoires).
Le NOM DIR doit toujours être un simple nom de répertoire. Répertoires imbriqués comme nourriture/bar
ne sont PAS pris en charge. vous auriez besoin de préciser --ignore-dir=foo et puis aucun fichier de
tout répertoire foo est pris en compte par ack à moins qu'il ne soit explicitement indiqué sur la commande
ligne.
--ignore-fichier=TYPE DE FILTRE : FILTERARGS
Ignorer les fichiers correspondants TYPE DE FILTRE : FILTERARGS. Les filtres sont spécifiés de manière identique à
filtres de type de fichier comme vu dans "Définition de vos propres types".
-k, --types-connus
Limitez les fichiers sélectionnés à ceux dont les types sont connus d'ack. Ceci équivaut à
le comportement par défaut trouvé dans ack 1.
--lignes=NUM
Imprimer uniquement la ligne NUM de chaque fichier. Plusieurs lignes peuvent être données avec plusieurs --lignes
options ou sous forme de liste séparée par des virgules (--lignes=3,5,7). --lignes=4-7 fonctionne aussi. Les
les lignes sont toujours sorties dans l'ordre croissant, quel que soit l'ordre donné sur la commande
ligne.
-l, --files-with-matchs
N'imprimez que les noms de fichiers des fichiers correspondants, au lieu du texte correspondant.
-L, --files-sans-correspondances
N'imprimez que les noms de fichiers des fichiers qui ne pas correspondre.
--rencontre RECONNAISSANCE
Spécifie le RECONNAISSANCE explicitement. Ceci est utile si vous ne voulez pas mettre la regex comme
votre premier argument, par exemple lors de l'exécution de plusieurs recherches sur le même ensemble de fichiers.
# recherche de foo et bar dans des fichiers donnés
ack fichier1 t/fichier* --match foo
ack file1 t/file* --match bar
-m=NUM, --max-count=NUM
Arrêter de lire un fichier après NUM allumettes.
--homme
Imprimez cette page de manuel.
-n, --pas de récure
Pas de descente dans les sous-répertoires.
-o Afficher uniquement la partie de chaque ligne correspondant au MOTIF (désactive la surbrillance du texte)
--sortie=expr
Sortir l'évaluation de expr pour chaque ligne (désactive la surbrillance du texte) Si PATTERN
correspond plus d'une fois, une ligne est générée pour chaque correspondance sans chevauchement. Pour plus
informations, veuillez consulter la section « Exemples de --output".
--pager=Programme, --nopager
--pageur dirige la sortie de ack à travers Programme. Ceci peut également être spécifié via le
Variables d'environnement "ACK_PAGER" et "ACK_PAGER_COLOR".
L'utilisation de --pager ne supprime pas le regroupement et la coloration comme la sortie de tuyauterie sur le
la ligne de commande le fait.
--nopager annule tout réglage dans ~/.ackrc, "ACK_PAGER" ou "ACK_PAGER_COLOR". Non
la sortie sera envoyée via un pager.
--passer à travers
Imprime toutes les lignes, qu'elles correspondent ou non à l'expression. La mise en évidence sera toujours
fonctionne, cependant, il peut donc être utilisé pour mettre en évidence les correspondances tout en continuant à voir l'intégralité
fichier, comme dans :
# Regardez un fichier journal et mettez en surbrillance une certaine adresse IP
$ queue -f ~/access.log | accusé de réception --passthru 123.45.67.89
--print0
Ne fonctionne qu'en conjonction avec -f, -g, -l ou -c (sortie du nom de fichier). Les noms de fichiers sont
sortie séparée par un octet nul au lieu du retour à la ligne habituel. Ceci est utile lorsque
traiter les noms de fichiers qui contiennent des espaces, par exemple
# supprime tous les fichiers de type html
ack -f --html --print0 | xargs -0 rm -f
-Q, --littéral
Citez tous les métacaractères dans PATTERN, il est traité comme un littéral.
-r, -R, --récurseur
Recurez-vous dans les sous-répertoires. C'est la valeur par défaut et juste ici pour la compatibilité avec
grep. Vous pouvez également l'utiliser pour tourner --pas de récure de.
-s Supprimez les messages d'erreur concernant les fichiers inexistants ou illisibles. Ceci est tiré de
fgrep.
--[no]cas intelligent, --no-smart-cas
Ignorez la casse dans les chaînes de recherche si PATTERN ne contient pas de caractères majuscules. C'est
similaire à "smartcase" dans vim. Cette option est désactivée par défaut et ignorée si "-i" est
spécifié.
-i remplace toujours cette option.
--sort-fichiers
Trie les fichiers trouvés lexicographiquement. Utilisez ceci si vous voulez que vos listes de fichiers
être déterministe entre les séries de ack.
--show-types
Affiche les types de fichiers que ack associe à chaque fichier.
Marche avec -f et à la -g options.
--type=[non]TYPE
Spécifiez les types de fichiers à inclure ou à exclure d'une recherche. TYPE est un type de fichier,
comme perl or xml. --type=perl peut également être spécifié comme --perl et --type=noperl vous
être fait comme --noperl.
Si un fichier est à la fois du type "foo" et "bar", spécifier --foo et --nobar exclura
le dossier, car une exclusion prime sur une inclusion.
Les spécifications de type peuvent être répétées et sont combinées par OU.
See ack --help=types pour une liste de types valides.
--type-ajouter TYPE:FILTRE:FILTRES
Les fichiers avec les FILTERARGS donnés appliqués au FILTRE donné sont reconnus comme étant de
(l'existant) tapez TYPE. Voir aussi "Définition de vos propres types".
--composer TYPE:FILTRE:FILTRES
Les fichiers avec les FILTERARGS donnés appliqués au FILTRE donné sont reconnus comme étant de
tapez TYPE. Cela remplace une définition existante pour le type TYPE. Voir aussi "Définition
vos propres types".
--type-del TYPE
Les filtres associés à TYPE sont supprimés de Ack, et ne sont plus considérés
pour les recherches.
-v, --inverser la correspondance
Inverser la correspondance : sélectionnez les lignes qui ne correspondent pas
--version
Afficher la version et les informations de copyright.
-w, --mot-expression régulière
Forcer PATTERN à ne faire correspondre que des mots entiers. Le MOTIF est entouré de "\b"
métacaractères.
-x Une abréviation pour --files-from=-; la liste des fichiers à rechercher est lue à partir de la norme
input, avec une ligne par fichier.
-1 S'arrête après avoir signalé le premier match, quel qu'il soit. Ceci est différent de --max-count=1
or -m1, où une seule correspondance par fichier est affichée. Aussi, -1 fonctionne avec -f et à la -g, Où
-m ne fait pas.
--thpppt
Affichez le très important logo Bill The Cat. Notez que l'orthographe exacte de
--thpppppt n'est pas important. Il est vérifié par rapport à une expression régulière.
--bar
Vérifiez auprès de l'amiral pour les pièges.
--cathy
Chocolat, chocolat, chocolat !
L' .ackrc DOSSIER
Le .ackrc le fichier contient des options de ligne de commande qui sont ajoutées à la ligne de commande
avant le traitement. Plusieurs options peuvent vivre sur plusieurs lignes. Lignes commençant par un #
sont ignorés. UNE .ackrc pourrait ressembler à ceci:
# Toujours trier les fichiers
--sort-fichiers
# Toujours colorier, même si vous passez à un autre programme
--Couleur
# Utiliser "moins -r" comme téléavertisseur
--pager=moins -r
Notez que les arguments contenant des espaces n'ont pas besoin d'être entre guillemets, car ils ne sont pas
interprété par le shell. Fondamentalement, chaque en ligne dans le .ackrc fichier est interprété comme un
élément de @ARGV.
ack cherche à plusieurs endroits pour .ackrc des dossiers; le processus de recherche est détaillé dans
"SÉMANTIQUE DE L'EMPLACEMENT ACKRC". Ces fichiers ne sont pas pris en compte si --noenv est spécifié sur le
ligne de commande.
Définir votre solution propre types
ack vous permet de définir vos propres types en plus des types prédéfinis. C'est fait
avec des options de ligne de commande qui sont mieux placées dans un .ackrc fichier - alors vous n'avez pas à
définissez vos types encore et encore. Dans les exemples suivants, les options seront toujours
être affichés sur une seule ligne de commande afin qu'ils puissent être facilement copiés-collés.
ack --perl foo recherche foo dans tous les fichiers perl. ack --help=types vous dit que perl
les fichiers sont des fichiers se terminant par .pl, .pm, .pod ou .t. Et si vous vouliez inclure .xs
également lors de la recherche de fichiers --perl ? ack --type-ajouter perl:ext:xs --perl foo
pour vous. --type-ajouter ajoute des extensions supplémentaires à un type existant.
Si vous souhaitez définir un nouveau type ou redéfinir complètement un type existant, utilisez
--composer. ack --composer eiffel:ext:e,eiffel définit le genre eiffel inclure des fichiers
avec les extensions .e ou .eiffel. Donc pour rechercher tous les fichiers eiffel contenant le mot
Bertrand utilise ack --composer eiffel:ext:e,eiffel --iffel Bertrand. Comme d'habitude, vous pouvez également
écrire --type = eiffel au lieu de --iffel. La négation fonctionne aussi, donc --noeiffel exclut tout
eiffel à partir d'une recherche. La redéfinition fonctionne également : ack --composer cc:ext:c,h et à la .xs fichiers
n'appartient plus au type cc.
Lorsque vous définissez vos propres types dans le .ackrc fichier, vous devez utiliser les éléments suivants :
--type-set=eiffel:ext:e,eiffel
ou en écrivant sur des lignes séparées
--composer
eiffel:ext:e,eiffel
Ce qui suit fait ne pas travailler dans le .ackrc fichier:
--type-set eiffel:ext:e,eiffel
Pour voir tous les types actuellement définis, utilisez --help-types, par exemple ack --composer
sauvegarde:ext:bak --type-ajouter perl:ext:perl --help-types
En plus du filtrage basé sur l'extension (comme ack 1.x autorisé), ack 2 propose
types de filtres supplémentaires. La syntaxe générique est --composer TYPE : FILTRE : FILTERARGS;
FILTRES dépend de la valeur de FILTRE.
est:NOM DE FICHIER
is les filtres correspondent exactement au nom de fichier cible. Il faut exactement un argument, qui est
le nom du fichier à rechercher.
Mise en situation :
--type-set make:est:Makefile
poste :EXTENSION[,PROLONGATION2[,...]]
poste les filtres font correspondre l'extension du fichier cible à une liste d'extensions. Non
point de départ est nécessaire pour les extensions.
Mise en situation :
--type-set perl:ext:pl,pm,t
rencontre:RECONNAISSANCE
rencontre les filtres font correspondre le nom de fichier cible à une expression régulière. Le régulier
expression est rendue insensible à la casse pour la recherche.
Mise en situation :
--type-set make:match:/(gnu)?makefile/
match de première ligne :RECONNAISSANCE
match de première ligne fait correspondre la première ligne du fichier cible à une expression régulière.
J'aime rencontre, l'expression régulière est rendue insensible à la casse.
Mise en situation :
--type-add perl:firstlinematch:/perl/
D'autres types de filtres pourraient être disponibles à l'avenir.
ENVIRONNEMENT VARIABLES
Pour les options ack couramment utilisées, les variables d'environnement peuvent rendre la vie beaucoup plus facile. Ces
les variables sont ignorées si --noenv est spécifié sur la ligne de commande.
ACKRC
Spécifie l'emplacement de l'utilisateur .ackrc déposer. Si ce fichier n'existe pas, ack
regarde dans l'emplacement par défaut.
ACK_OPTIONS
Cette variable spécifie les options par défaut à placer devant toutes les options explicites
sur la ligne de commande.
ACK_COLOR_FILENAME
Spécifie la couleur du nom de fichier lorsqu'il est imprimé dans --grouper mode. Par défaut,
c'est "vert gras".
Les attributs reconnus sont clear, reset, dark, bold, underline, underscore, blink,
inverse, noir caché, rouge, vert, jaune, bleu, magenta, on_black, on_red,
on_green, on_yellow, on_blue, on_magenta, on_cyan et on_white. Le cas n'est pas
important. Le soulignement et le trait de soulignement sont équivalents, tout comme le sont clair et réinitialisé. Les
color seule définit la couleur de premier plan et on_color définit la couleur d'arrière-plan.
Cette option peut également être définie avec --nom-fichier-couleur.
ACK_COLOR_MATCH
Spécifie la couleur du texte correspondant lorsqu'il est imprimé en --Couleur mode. Par défaut,
c'est "noir sur_jaune".
Cette option peut également être définie avec --correspondance des couleurs.
See ACK_COLOR_FILENAME pour les spécifications de couleur.
ACK_COLOR_LINENO
Spécifie la couleur du numéro de ligne lorsqu'il est imprimé en --Couleur mode. Par défaut, c'est
"jaune vif".
Cette option peut également être définie avec --color-lineno.
See ACK_COLOR_FILENAME pour les spécifications de couleur.
ACK_PAGER
Spécifie un programme de pager, tel que "plus", "moins" ou "plus", auquel ack enverra
sa sortie.
L'utilisation de "ACK_PAGER" ne supprime pas le regroupement et la coloration comme la sortie de tuyauterie sur le
la ligne de commande le fait, sauf que sur Windows ack supposera que "ACK_PAGER" ne fonctionne pas
couleur de soutien.
"ACK_PAGER_COLOR" remplace "ACK_PAGER" si les deux sont spécifiés.
ACK_PAGER_COLOR
Spécifie un programme de pager qui comprend les séquences de couleurs ANSI. À l'aide de
"ACK_PAGER_COLOR" ne supprime pas le regroupement et la coloration comme la sortie de tuyauterie sur le
la ligne de commande le fait.
Si vous n'êtes pas sous Windows, vous n'avez jamais besoin d'utiliser "ACK_PAGER_COLOR".
DISPONIBLE DES COULEURS
ack utilise les couleurs disponibles dans le module Term::ANSIColor de Perl, qui fournit les
les valeurs listées suivantes. Notez que la casse n'a pas d'importance lors de l'utilisation de ces valeurs.
Premier plan les couleurs
noir rouge vert jaune bleu magenta cyan blanc
brillant_noir brillant_rouge brillant_vert brillant_jaune
Bright_blue Bright_magenta Bright_cyan Bright_white
Arrière-plan les couleurs
sur_noir sur_rouge sur_vert sur_jaune
sur_bleu sur_magenta sur_cyan sur_blanc
on_bright_black on_bright_red on_bright_green on_bright_jaune
on_bright_blue on_bright_magenta on_bright_cyan on_bright_white
ACK & AUTRES OUTILS
Vim l'intégration
ack s'intègre facilement avec l'éditeur de texte Vim. Définissez ceci dans votre .vimrc à utiliser ack plutôt ;
of grep:
définir grepprg=ack\ -k
Cet exemple utilise "-k" pour rechercher uniquement dans les fichiers des types que ack connaît, mais vous
peut utiliser d'autres indicateurs par défaut. Maintenant, vous pouvez rechercher avec ack et parcourez facilement les
résultats dans Vim :
:grep Dumper perllib
Miles Sterrett a écrit un plugin Vim pour ack qui vous permet d'utiliser ":Ack" au lieu de
":grep", ainsi que plusieurs autres fonctionnalités avancées.
Emacs l'intégration
Phil Jackson a mis en place un ack.el extension qui "fournit un mode de compilation simple ...
a la capacité de deviner les fichiers que vous souhaitez rechercher en fonction du mode majeur."
<http://www.shellarchive.co.uk/content/emacs.html>
TextMate l'intégration
Pedro Melo est un utilisateur de TextMate qui écrit "Je passe ma journée principalement à l'intérieur de TextMate, et le
Le find-in-project intégré est nul avec les grands projets. J'ai donc piraté une commande TextMate qui
utilisait find + grep pour utiliser ack. Le résultat est la recherche dans le projet avec ack, et vous
pouvez le trouver ici:
<http://www.simplicidade.org/notes/archives/2008/03/search_in_proje.html>"
coquille et à la Retour Code
Pour une plus grande compatibilité avec grep, ack en utilisation normale, renvoie le code de retour ou de sortie du shell
de 0 uniquement si quelque chose est trouvé et de 1 si aucune correspondance n'est trouvée.
(Le code de sortie du shell 1 est "$?=256" en perl avec "system" ou backticks.)
Le grep le code 2 pour les erreurs n'est pas utilisé.
Si "-f" ou "-g" sont spécifiés, alors 0 est renvoyé si au moins un fichier est trouvé. Sinon
fichiers sont trouvés, puis 1 est renvoyé.
DÉBOGAGE ACK PROBLÈMES
Si ack vous donne une sortie que vous n'attendez pas, commencez par quelques étapes simples.
Utilisez --noenv
Vos variables d'environnement et .ackrc faire peut-être des choses auxquelles vous ne vous attendez pas, ou
oublié que vous avez spécifié. Utilisation --noenv ignorer votre environnement et .ackrc.
Utilisez -f à sur le lien est ce que nous faisons fichiers avons était choisi
Ack's -f a été initialement ajouté en tant qu'outil de débogage. Si ack ne vous trouve pas
pense qu'il devrait trouver, courir ack -f pour voir quels fichiers ont été sélectionnés. Vous pouvez également ajouter
les options "--show-types" pour afficher le type de chaque fichier sélectionné.
Utilisez --décharger
Cela répertorie les fichiers ackrc qui sont chargés et les options chargées à partir d'eux. Donc pour
exemple, vous pouvez trouver une liste de répertoires qui ne sont pas recherchés ou où les types de fichiers sont
Défini.
CONSEILS
Utilisez le .ackrc fichier.
Le .ackrc est l'endroit où mettre toutes vos options que vous utilisez la plupart du temps mais que vous ne voulez pas
rappelles toi. Mettez-y toutes vos définitions --type-add et --type-set. Si tu veux
--smart-case, mettez-le là aussi. J'y ai également défini --sort-files.
Utilisez -f XNUMX de travail avec big jeux de codes
Ack fait plus que rechercher des fichiers. "ack -f --perl" créera une liste de tous les fichiers Perl
dans un arbre, idéal pour envoyer xarg. Par exemple:
# Remplacez tout "ceci" par "cela" dans tous les fichiers Perl d'une arborescence.
ack -f --perl | xargs perl -p -i -e's/this/that/g'
ou si vous préférez :
perl -p -i -e's/this/that/g' $(ack -f --perl)
Utilisez -Q quand in doute à propos métacaractères
Si vous recherchez quelque chose avec un métacaractère d'expression régulière, le plus souvent un
point dans un nom de fichier ou une adresse IP, ajoutez le -Q pour éviter les faux positifs sans tous les
barre oblique inverse. Voir l'exemple suivant pour plus...
Utilisez ack à montre de luxe. enregistrer fichiers
En voici un que j'ai utilisé l'autre jour pour trouver des points chauds pour un visiteur de site Web. L'utilisateur avait
un problème de chargement gênant.gif, j'ai donc pris le journal d'accès et l'ai scanné avec ack deux fois.
ack -Q aa.bb.cc.dd /chemin/vers/accès.log | ack -Q -B5 troublesome.gif
Le premier ack ne trouve que les lignes du journal Apache pour l'IP donnée. Le deuxième trouve
la correspondance sur mon GIF gênant et montre les cinq lignes précédentes du journal dans chaque
Cas.
Exemples of --output
Les variables suivantes sont utiles dans la chaîne d'extension :
$& La chaîne entière correspondant à PATTERN.
1 $, 2 $, ...
Le contenu du 1er, 2e ... groupe entre crochets dans PATTERN.
"$`"
La chaîne avant le match.
"$'"
La chaîne après le match.
Pour plus de détails et d'autres variables, voir
<http://perldoc.perl.org/perlvar.html#Variables-related-to-regular-expressions|perlvar>.
Cet exemple montre comment ajouter du texte autour d'un motif particulier (dans ce cas, ajouter _
autour du mot avec "e")
ack2.pl "\w*e\w*" quick.txt --output="$`_$&_$'"
_Le_ renard brun rapide saute par dessus le chien paresseux
Le renard brun rapide saute par dessus le chien paresseux
Le renard brun rapide saute par dessus le chien paresseux
Cela montre comment sélectionner des parties particulières d'une correspondance en utilisant ( ) dans des
expression.
ack '=head(\d+)\s+(.*)' --output=' $1 : $2'
le fichier d'entrée contient "=head1 NAME"
sortie "1 : NOM"
Partager votre solution spécialisées
Rejoignez la liste de diffusion ack-users. Envoyez-moi vos conseils et je les ajouterai peut-être ici.
QFP
Pourquoi Choisir n'est pas ack trouver a rencontre in (certains déposer)?
Probablement parce que c'est d'un type qu'ack ne reconnaît pas. le comportement de recherche de ack est
piloté par type de fichier. If ack ne pas savoir est ce que nous faisons mots of filet it est, ack ne tient pas compte le fichier.
Utilisez le commutateur "-f" pour voir une liste de fichiers qui ack rechercheront pour vous. Vous pouvez utiliser le
"--show-types" commutateur pour montrer quel type ack pense que chaque fichier est.
Ne serait pas it be l' if ack fait recherche & remplacer?
Non, ack sera toujours en lecture seule. Perl a un très bon moyen de faire des recherches et des remplacements dans
fichiers, en utilisant les commutateurs "-i", "-p" et "-n".
Vous pouvez certainement utiliser ack pour sélectionner vos fichiers à mettre à jour. Par exemple, pour tout changer
"foo" à "bar" dans tous les fichiers PHP, vous pouvez le faire depuis le shell Unix :
$ perl -i -p -e's/foo/bar/g' $(ack -f --php)
Pouvez I a prendre une ack reconnaître .xyz fichiers?
Oui! Veuillez consulter "Définition de vos propres types". Si vous pensez que ack devrait reconnaître un type
par défaut, veuillez consulter « AMÉLIORATIONS ».
Il y a déjà a programme/forfait appelé Ack.
Oui je sais.
Pourquoi Choisir is it appelé ack if c'est appelé ack-grep ?
Le nom du programme est "ack". Certains emballeurs l'ont appelé "ack-grep" lors de la création
packages car il existe déjà un package appelé "ack" qui n'a rien à voir
avec cet ack.
Je vous suggère de créer un lien symbolique nommé ack qui pointe vers ack-grep car l'un des éléments cruciaux
L'avantage de ack est d'avoir un nom si court et si simple à taper.
Pour ce faire, exécutez ceci avec sudo ou en tant que root :
ln -s /usr/bin/ack-grep /usr/bin/ack
Alternativement, vous pouvez utiliser un alias shell :
#bash/zsh
alias ack=ack-grep
#csh
alias ack ack-grep
Quoi ack signifier?
Rien. Je voulais un nom facile à taper et qu'on puisse prononcer en un seul
syllabe.
Pouvez I do multiligne expressions régulières ?
Non, ack ne prend pas en charge les expressions régulières qui correspondent à plusieurs lignes. Cela nécessiterait
lecture dans le fichier entier à la fois.
Si vous voulez voir des lignes près de votre match, utilisez les commutateurs "--A", "--B" et "--C" pour
contexte d'affichage.
Pourquoi Choisir is ack dire me I avons an invalide option quand recherche XNUMX "+foo" ?
ack traite les options de ligne de commande commençant par "+" ou "-" comme des options ; si vous voulez bien
recherchez-les, vous pouvez préfixer votre terme de recherche avec "--" ou utiliser l'option "--match".
(Cependant, n'oubliez pas que "+" est un métacaractère d'expression régulière !)
Pourquoi Choisir "ack '.{40000,}'" échouer? N'est pas qui a Info de contact. expression régulière ?
Le langage Perl limite le quantificateur de répétition à 32K. Vous pouvez rechercher ".{32767}"
mais pas ".{32768}".
ACKRC EMPLACEMENT SÉMANTIQUE
Ack peut charger sa configuration à partir de nombreuses sources. Cette liste précise les sources Ack
recherche la configuration ; chacun qui est trouvé est chargé dans l'ordre spécifié ici, et
chacun remplace les options définies dans l'une des sources qui le précèdent. (Par exemple, si je mets
--sort-files dans mon utilisateur ackrc, et --nosort-files sur la ligne de commande, la ligne de commande
a priorité)
· Les valeurs par défaut sont chargées depuis App::Ack::ConfigDefaults. Ceci peut être omis en utilisant
"--ignore-ack-defaults".
· ackrc global
Les options sont ensuite chargées à partir de l'ackrc global. Il se trouve dans "/etc/ackrc" sur
Systèmes de type Unix.
Sous Windows XP et versions antérieures, le ackrc se trouve dans "C:\Documents and Settings\All
Utilisateurs\Application Data\ackrc".
Sous Windows Vista/7, le ackrc global est à "C:\ProgramData"
L'option "--noenv" empêche le chargement de tous les fichiers ackrc.
· ackrc de l'utilisateur
Les options sont ensuite chargées à partir du fichier ackrc de l'utilisateur. Ceci est situé à "$HOME/.ackrc" sur
Systèmes de type Unix.
Sous Windows XP et antérieur, le ackrc de l'utilisateur se trouve dans "C:\Documents and
Paramètres\$USER\Application Data\ackrc".
Sous Windows Vista/7, le ackrc de l'utilisateur est à .
Si vous souhaitez charger un ackrc de niveau utilisateur différent, il peut être spécifié avec le $ACKRC
variable d'environnement.
L'option "--noenv" empêche le chargement de tous les fichiers ackrc.
· Projet ackrc
Les options sont ensuite chargées à partir du projet ackrc. Le projet ackrc est le premier ackrc
fichier portant le nom ".ackrc" ou "_ackrc", en cherchant d'abord dans le répertoire courant,
puis le répertoire parent, puis le répertoire grand-parent, etc. Cela peut être omis
en utilisant "--noenv".
· --ackrc
L'option "--ackrc" peut être incluse sur la ligne de commande pour spécifier un fichier ackrc qui
peut remplacer tous les autres. Il est consulté même si "--noenv" est présent.
· ACK_OPTIONS
Les options sont ensuite chargées à partir de la variable d'environnement "ACK_OPTIONS". Cela peut être
omis en utilisant "--noenv".
· Ligne de commande
Les options sont ensuite chargées à partir de la ligne de commande.
DIFFÉRENCES ENTRE ACK 1.X ET ACK 2.X
Beaucoup de changements ont été apportés à l'ack 2; en voici une liste.
GÉNÉRAL CHANGEMENTS
· Lorsqu'aucun sélecteur n'est spécifié, ack 1.x ne recherche que les fichiers qu'il peut mapper
à un type de fichier. ack 2.x, en revanche, recherchera dans tous les fichiers non binaires
fichier qui n'est pas explicitement ignoré via --ignore-fichier or --ignore-répertoire. C'est
semblable au comportement du -a/--tout option dans ack 1.x.
· Un système de filtrage plus flexible a été ajouté, afin que des types de fichiers plus puissants puissent être
créé par l'utilisateur. Pour plus de détails, veuillez consulter "Définition de vos propres types".
· ack charge maintenant plusieurs fichiers ackrc ; voir "SÉMANTIQUE DE L'EMPLACEMENT ACKRC" pour plus de détails.
· les définitions de filtre par défaut d'ack ne sont pas spéciales ; vous pouvez dire ack complètement
ignorez-les si vous ne les aimez pas.
ENLEVÉ OPTIONS
· En raison du changement de comportement de recherche par défaut, le -a/--tout et à la -u/--illimité
les options ont été supprimées. De plus, le -k/--types-connus l'option a été ajoutée à
faire en sorte que ack se comporte avec le comportement de recherche par défaut de ack 1.x.
· Le -G l'option a été supprimée. Deux expressions régulières sur la ligne de commande étaient
considéré comme trop déroutant ; simuler -Gfonctionnalités de , vous pouvez utiliser le nouveau -x
option pour diriger les noms de fichiers d'une invocation d'ack à une autre.
· Le --binaire l'option a été supprimée.
· Le --sauté l'option a été supprimée.
· Le --texte l'option a été supprimée.
· Le --invert-file-match l'option a été supprimée. Au lieu de cela, vous pouvez utiliser -v avec -g.
MODIFIÉ OPTIONS
· Les options qui modifient le comportement de l'expression régulière (-i, -w, -Q et -v) peut maintenant
être utilisé avec -g.
AJOUTÉ OPTIONS
· --files-de a été ajouté afin qu'un utilisateur puisse soumettre une liste de noms de fichiers en tant que liste de
fichiers à rechercher.
· -x a été ajouté pour dire à ack d'accepter une liste de noms de fichiers via une entrée standard ; cette liste
est la liste des noms de fichiers qui seront utilisés pour la recherche.
· -s a été ajouté pour dire à ack de supprimer les messages d'erreur inexistants ou illisibles
fichiers.
· --ignore-répertoire et à la --noignore-répertoire ont été ajoutés comme alias pour --ignore-répertoire et à la
--noignore-dir respectivement.
· --ignore-fichier a été ajouté afin que les utilisateurs puissent spécifier des modèles de fichiers à ignorer (ex.
/.*~$/).
· --décharger a été ajouté pour permettre aux utilisateurs de savoir facilement quelles options sont définies où.
· --create-ackrc a été ajouté afin que les utilisateurs puissent créer des fichiers ackrc personnalisés basés sur le
paramètres par défaut chargés par ack, et afin que les utilisateurs puissent facilement visualiser ces paramètres par défaut.
· --type-del a été ajouté pour supprimer sélectivement les définitions de type de fichier.
· --ignore-ack-defaults a été ajouté afin que les utilisateurs puissent ignorer les options par défaut de ack dans
faveur de leur propre.
· --bar a été ajouté afin que les utilisateurs ack puissent consulter Admiral Ackbar.
Utilisez ack-grepp en ligne en utilisant les services onworks.net