2017-06-13 1 views
0

Experten,Wie benutzt man & >> in einem xargs Befehl?

dieser question Nach ausführen ich diesen Befehl ein:

xargs Argument Posix:

find <somePath> -name '*.html' | sort -n | xargs -I{} sh -c 'w3m "{}" &>> "test.log"' --{} 

ich folgende Fehlermeldungen erhalten:

  • file.hml: -c: Zeile 0: Syntaxfehler in der Nähe des unerwarteten Tokens `> '
  • Zeile:
  • file.hml: -c `w3m ".html" & >> "test.log"‘

Warum bash nicht verstehen & >> in meiner Linie der Ausführung?

Wie @Nahuel Fouilleul sagte "sh (Posix) erkennt die (Bash) Umleitung nicht & >>".

Xargs Argument bash

jedoch die vorgeschlagene Lösung funktioniert nicht, wenn ich den folgenden Befehl auszuführen:

find <somePath> -name '*.html' | sort -n | xargs -I{} w3m {} &>> "test.log" 

I diesen Fehler erhalten:

  • bash: syntax error nahe dem unerwarteten Token `> '

Warum versteht bash nicht & >> in meiner Linienausführung? Siehe meine Antwort

+0

Ersetzen Sie durch ein Weg? –

Antwort

2

es funktioniert möglicherweise nicht, wenn sh (Posix) die Umleitung (Bash) &>> nicht erkennt. aber der Befehl kann immer noch für bestimmte Dateinamen brechen.

Befehl sollte sein.

.. | xargs -I{} bash -c 'w3m "$1" &>> "test.log"' "process_name_you_want" {} 

oder zu vermeiden Protokolldatei für jede Datei Umleitung zu öffnen

.. | xargs -I{} w3m {} &>> "test.log" 

EDIT ausgezogen werden: Antwort auf ein Werkzeug allgemein die Dateien verarbeitet und schreiben die Ausgabe, nachdem bei w3m Werkzeug suchen es scheint, es ist ein Webbrowser in einer Konsole, was versuchst du zu tun?

+0

Danke Ich versuchte die zweite Lösung ".. | xargs -I {} w3m {} & >>" test.log "und ich erhalte den folgenden Fehler: bash: Syntaxfehler in der Nähe von unerwarteten Token'> '. Ich habe html Dateien in einem Verzeichnis und ich möchte sie in einer Logdatei ablegen, daher verwende ich w3m, das die Informationen der html-Datei in der Standardausgabe anzeigt. –

0

Von here erkannte ich, dass der Operator "& >>" von Bash Version 4 nur verfügbar ist. Ich verwende Bash Version 3.2.51, so dass es nicht funktioniert.

Für Versionen vor 4 zwei Operatoren bash benötigt:

w3m >> test.log 2>&1 

wo:

">>" anhängen stdout zu testen.log

"2> & 1" leiten Sie die stderr, wo die SDOUT wird

So ist der Befehl arbeitet mit xargs ist die folgende:

.. | xargs -I{} w3m {} >> "test.log" 2>&1 
Verwandte Themen