Grep wird mit Code 123 nicht normal beendet, wenn rgrep auf Emacs ausgeführt wird
8108
Mcradle
Viele Grüße, Emacsers
Ich verwende GNU Emacs 23.1.1 auf "Ubuntu 10.04.1 LTS" und jede Suche, die ich mit dem eingebauten Mx rgrep auf dem Standard-Linux-Kernel-Quellcode (Vanilla) durchführe, endet vorzeitig mit dem folgenden Fehler, der im emacs-Echo gedruckt wird Bereich:
Grep exited abnormally with code 123
Ich habe es auch schon eine Weile auf Redhat-Systemen gesehen und mit anderen (großen) Codebasen. Hat jemand das gesehen oder sogar besser geheilt?
Vielen Dank!
Edit: Aus Gründen, die über mich hinausgehen, erlaubt es mir stackexchange nicht, meinen Kommentar unten zu bearbeiten, also werde ich hier aktualisieren.
Nach dem folgenden Kommentar habe ich versucht, den gleichen Befehl auszuführen, den rgrep in einem Emacs-Shell-Puffer ausführt
Dies entspricht funktional der Kombination find und xargs und wird mit dem Exit-Code 0 abgeschlossen
/home/mcradle/linux> echo $? 0
also scheint es etwas mit xargs zu sein.
`Mx rgrep` läuft` find… | xargs grep… `und 123 bedeutet, dass mindestens einer der Aufrufe von` xargs` von `grep` einen Fehlercode ungleich Null zurückgegeben hat. Wenn dies nur in großen Codebasen geschieht, könnte dies mit xargs zusammenhängen, die mehr als eine Instanz von 'grep' aufrufen (vielleicht findet eine Instanz keine Datei?). Ist ein "* grep" -Puffer erstellt?
Gilles vor 14 Jahren
1
es öffnet den *** grep *** -Puffer zeigt sogar eine Reihe von Ergebnissen und druckt dann "Grep wurde abnormal mit Code 123 um ... beendet"
Mcradle vor 14 Jahren
0
2 Antworten auf die Frage
9
Mcradle
Betrachten Sie die xargs-Exit-Code-Dokumentation:
123 if any invocation of the command exited with status 1-125
laut grep-dokumentation 1 ist jedoch der exit-status, wenn grep nicht dem muster entspricht
EXIT STATUS Normally, the exit status is 0 if selected lines are found and 1 otherwise.
Es scheint mir, dass die Befehlszeile, die emacs verwendet, um eine 'rgrep'-Suche auszuführen, immer 123 zurückgibt, und dieser Fehler muss entweder unterdrückt oder durch eine Befehlszeile wie z. B. ersetzt werden
Es sieht so aus, als würden Sie versuchen, rekursive grep durch eine Reihe von C .c- und .h-Dateien zu erstellen, während Sie die von Versionskontrollsystemen verwendeten Verzeichnisse ignorieren. Du willst Ack. Siehe http://betterthangrep.com/
Der Befehl, genau das zu tun, was Sie tun, in ack:
ack --cc -i v4l_compat_ioctl32
Die Wirkungen von -r, -n und -H werden in ack angenommen. Das -i unterscheidet immer noch zwischen Groß- und Kleinschreibung, und --cc sagt "Nur * .c- und * .h-Dateien suchen"
Keine Notwendigkeit zu finden. Keine Notwendigkeit für Xargs. Nur eine installierte Version von Perl und ein einziges Perl-Programm ohne externe Module.
Danke, Andy. Ich habe ack installiert, bin aber nie gekommen, um ack.el für emacs herunterzuladen und zu installieren.
Mcradle vor 14 Jahren
0