Umleitung von grep out in eine Datei funktioniert nicht

Umleitung von grep out in eine Datei funktioniert nicht

Ich führe ein rekursives Grep mit dem folgenden Befehl aus:

grep -r "load" . > tmp.txt

Wenn ich jedoch die Eingabetaste drücke, wird der Befehl nicht ausgeführt und Bash wartet auf weitere Eingaben. Mein Betriebssystem ist Ubuntu 12.04.

Ich habe die folgenden beiden Antworten überprüft, aber sie konnten mein Problem nicht lösen.

Warum funktioniert grep nicht mit Umleitung?

wie leite ich die Ausgabe von tailf & grep in eine Datei um?

Antwort1

Ich verwende auch Ubuntu 12.04 und erhalte diesen Fehler:

$ grep -r 'test' . > tmp.txt
grep: input file `./tmp.txt' is also the output

Denn die Umleitung wird zuerst erweitert und daher tmp.txtvor der Ausführung im aktuellen Verzeichnis erstellt grep, was zu Fehlern führt.

Wenn ich tmp.txtzu einem anderen Pfad wechsle, etwa /tmp/tmp.txt, dann funktioniert es normal.

Meine grepVersion:

$ grep --version
grep (GNU grep) 2.10
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Mike Haertel and others, see <http://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>.

verwandte Informationen