Stdin zu datei schreiben?
Hi, ich versuche etwas seltsames.
bash stdin.sh 0> outp.file
\>Terminal ist zsh
---
Ich kann verstehen wieso das nicht funktioniert, [Es ist logisch weil std>IN<, aber ich frage weil probleme lösbar sind. ]
Ich habe trotzdem die gleiche Aufgabe.
\> Ich bin bereit system level code zu verwenden, wenn nötig.
---
Das konkrete Problem:
>Ich habe einen gpt dialog bot
\> Ich lese stdout zu > file zu > keyword listener zu > run scrypt
@ Ich versuche das selbe nun mit der anderen seite der Konversation.
\> stdin, mein input zu > file zu > * > run scrypt
---
Wie ist das möglich?
\> Ich würde das gerne versuchen, bevor ich anfange dan ganzen bot auseinander zu nehmen.
\> Es scheint mir im allgemeinen relativ praktisch diese Methode benutzen zu können.
\> Stdin scheint außerhalb des file Systems zu sein > [linux]
2 Antworten
Die Frage ist ziemlich konfus. Du kannst stdin nur lesen und stdout nur schreiben.
Vermutlich kommst du durcheinander, weil in einer Pipe das stdout des ersten Programms zum stdin des zweiten wird.
Wenn du die Eingabe eines Programms mithören willst, muss das vor dem Programmaufruf passieren. Das Programm tee reicht seine Eingabe unverändert an die Ausgabe weiter, schreibt aber alles auch in eine Datei:
ls | tee protokoll | wc
macht dasselbe wie
ls | wc
und schreibt die Ausgabe von ls (=Eingabe von wc) in die Datei protokoll.
Laider ist die Frage in meinen Augen unverständlich. Wenn Du eien bidirektionale Kommunikation zwischen 2 Prozessen willst, dann ist das bei den meisten Shells mit unidirektionalen Pipes nicht so leicht umsetzbar, außer Du nimsmt vielleicht named pipes zu Hilfe.
Sonst könnte man sowas wie pipexec nutzen.
Die bash bietet für bestimmte Szenarien auch coprocesses an.
Naja, STDIN, STDOUT, STDERR sind halt Standard IO-Kanäle die typischerweise ihre entsprechenden Filedeskriptoren haben.
Wie sieht das hier:
Ich lese stdout zu > file zu > keyword listener zu > run scrypt
denn konkret aus?
Und geht es nicht einfacher?
Kommt auf die def von prozess an.
Ich versuche nicht 2 prozesse zu verbinden.
Sonderen beide teile eines prozesses zu bekommen
Bidirectional wäre eine gute idee, aber
Ich kann die data source nichtmal targeten
Stdin entfläucht meinem zugriff
Es wurde nicht gebaut um gelesen zu werden
Deshalb auch sys level, wenn nötig
Wenn ich als analogy sage
Var Kabel = stdin Datenstrom der nicht im file system ist, und vermutlich direkt iwo keyboard über 2 Ecken liest
Hätte ich gerne direkt zugriff auf dieses kabel, während das Programm läuft. [jedoch nur dieses Programm, sonst muss ich filtern/timen]
Auf jeden fall sehr hilfreich ^~^ ich werde die keywords mal abrabeiten und sehen ob sich etwas ergibt :)