echte Fenster entsprechend cat * stdin *

5

Unter cmd Gibt es ein Fenster, das dem Befehl posix entspricht? cat ?

cat ganz alleine keine Dateinamen, keine Schalter. Ich will nur etwas das kopiert stdin nach stdout bis es auf EOF trifft.

Es ist kein schweres Programm zum Schreiben, aber wird es von Windows bereitgestellt?

Die Antwort ist nicht unbedingt ein einzelnes Wort und ist definitiv kein Typ.

echo test | type

bekommt mir nur eine fehlermeldung

echo test | type con 

wartet darauf, dass ich ein paar Sachen eingebe

echo test | more

ist nah dran, aber "more" bleibt nach einem screenfull stehen.

Ich möchte dies, um ein Programm auszuführen, das sich anders verhält, wenn sich stdout in einer Pipe befindet. damit ich die ausgabe sehen kann.

user313114
quelle
1
Können Sie bitte ein reales Beispiel geben, was genau Sie tun möchten? Zum Beispiel ist cat file1 nur Typ file1; Katzendatei1 Datei2 & gt; & gt; Datei3 ist nur Typ Datei1 Datei2 & gt; & gt; file3 ...
Peregrino69
... oh ja, cat & gt; & gt; Datei in Windows wird kopiert & gt; & gt; Datei
Peregrino69
Wäre eine Drittanbieter-App eine akzeptable Option?
Journeyman Geek

Antworten:

4

someprog | findstr x* oder ein anderes einzelnes Zeichen, gefolgt von einem Sternchen, kopiert alle Zeilen von der Pipe stdin nach stdout. Insbesondere wird jede Zeile kopiert, wenn sie ein enthält x oder nicht, was Sie leicht sehen können, ist immer wahr. Windows findstr entspricht in etwa Unix grep aber mit nervigen kleinen syntaxunterschieden.

findstr ist für Text gedacht und ich bin mir nicht sicher (und habe es nicht getestet), ob es für Binärdaten mit wenigen oder keinen [CR] -LFs und daher sehr langen sichtbaren Linien funktioniert. Unix cat ohne Argumente funktioniert für Binärdateien, aber Ihr angegebener Anwendungsfall sind Programme, die ihre Ausgabe für Pipes ändern, und meiner Erfahrung nach geschieht dies nur bei der Textausgabe - und normalerweise sind es keine Pipes als solche, sondern NON-tty / NON-console /. etc und damit kann ich gleich gut testen mit someprog >temp; cat temp unter Unix oder & type unter Windows, sofern das Programm nicht interaktiv ist und ich eine Ausgabe sehen muss, bevor ich die nächste eingabe.

dave_thompson_085
quelle
x* "null oder mehr x" das funktioniert. Vielen Dank. findstr "^" scheint auch zu funktionieren. aber so oder so bleibt findstr hängen, wenn die letzte Zeile nicht mit CRLF endet. Ich vermute, das ist eine undokumentierte Funktion von findstr
user313114
find scheint sich besser zu benehmen als findstr. (die inoffizielle Errata für findstr ist wirklich beeindruckend), außer es ist find /v "" das scheint zu tun was ich will. Das muss auch ein Fehler sein. aber zumindest hängt es nicht. more > con funktioniert auch - wieder undokumentiert, aber wahrscheinlich kein Fehler.
user313114
@ user313114 Du hast recht find/v "" ist eine noch klügere Möglichkeit, die ich verpasst habe. Vor dem Posten habe ich getestet findstr mit nicht abgeschlossener letzter Zeile und es funktionierte auf (meinem) Vista - aber jetzt hast du mich dazu gebracht, auf (meinem) Win7 noch einmal zu testen und das hängt, also ist dies möglicherweise nicht nur eine undokumentierte Funktion, sondern eine undokumentierte Verbesserung!
dave_thompson_085
Sehr schlau; Update ab Windows 10: findstr "^" hängt nicht mehr ohne nachstehenden Zeilenumbruch und anscheinend wurde sogar die neueste Win7-Version gepatcht; find /v "" funktioniert immer noch, ist aber sicher nicht intuitiv.
mklement0
Seien Sie vorsichtig, beide scheinen ein verborgenes Limit an Spalten zu haben. Unter Windows 8.1 kann die Pipe enden (kein Fehler), wenn eine Zeile mehr als 300 oder 400 Zeichen enthält.
AqD
1

Das nächstgelegene Windows-Äquivalent zu * nix cat ist der TYPE Befehl. Beachten Sie, dass auf * nix-Systemen cat ist eigentlich ein separates Programm, während Windows ' TYPE ist eigentlich Teil des Befehlszeileninterpreters.

int_541
quelle
1
echo test | type - nein scheint nicht zu funktionieren, wenn meine Frage unklar war, bitte verbessern Sie sie.
user313114
1
Ja, type überschneidet sich mit cat in der Funktionalität, aber anders als cat es kann nicht auslesen stdin , und danach ist das OP.
mklement0
-1

ECHO sollte ähnlich wie CAT funktionieren.

Echo Text in eine Datei

Die allgemeine Syntax lautet

Echo This is some Text > FileName.txt

oder wenn Sie zusätzliche Leerzeichen vermeiden möchten: Echo Etwas mehr Text & gt; Dateiname.txt

Dhiwakar Ravikumar
quelle
Nein, es ist überhaupt nichts dergleichen, Standardeingabe, nicht die Befehlszeile. Ich möchte ein paar Sachen dazu leiten.
Jasen
cat Liest eine Datei oder den Inhalt eines Streams in den Standard (z. B. ein Terminalfenster). echo druckt nur Text in die Standardausgabe. Das Beispiel, das Sie angegeben haben, verwendet den Befehlszeileninterpreter, um die Ausgabe eines Programms in eine Datei zu senden.
int_541