Hoi,
wie vergleiche ich am Besten den Output von einem Programm mit dem einer Datei?
hab ein bisschen mit diff rumgespielt, weiss aber nicht wie ich das anstellen soll.
Schon mal danke
text vergleichen
Anmeldungsdatum: Beiträge: 291 |
|
||
![]() Anmeldungsdatum: Beiträge: 3443 Wohnort: 97070 Würzburg |
Also den Output eines Programms kannst du jederzeit in eine Datei umleiten myprogramm &> output.txt
diff datei1 datei2
|
||
![]() Anmeldungsdatum: Beiträge: 1253 |
Alternativ, in der Zsh: diff =(my_program with arguments) other_file |
||
(Themenstarter)
Anmeldungsdatum: Beiträge: 291 |
audax hat geschrieben:
so hab ich's mir gedacht, danke euch beiden. |
||
![]() Anmeldungsdatum: Beiträge: 1253 |
Wow, die Zsh hat mal gewonnen! Einfachheit ftw! \o/ |
||
![]() Anmeldungsdatum: Beiträge: 1260 Wohnort: /home/karlsruhe/ |
Hallo, ich hoffe Ihr seht es nicht als Thread-Hijacking an. Gibt es eine Möglichkeit anstatt 2 Textdateien, nur 2 beliebig lange Zeichenfolgen im Terminal abzugleichen? Gibt es dafür ein Programm? Programmname 107ae1ee8d8263b6fc40c0c809451a1a2e4f21ad3e1d5613f4090e07b695cdd9 107ae1ee8d8263b6fc40c0c809451a1a2e4f21ad3e1d5613f4090e07b695cdd9 z.B. will ich diese zwei Zeichenfolgen abgleichen Ich weiß man kann es auch optisch abgleichen, da die Zeichenfolge nicht zu lang ist. Es wäre einfach schneller im Terminal abzugleichen. Habe im Forum nichts finden können und Textdateien vergleichen bezieht sich nur auf Dateien. LG Benjamin |
||
![]() Anmeldungsdatum: Beiträge: 2510 |
Du könntest Prozesssubstitution nutzen und damit zwei „virtuelle“ Dateien erzeugen. Das kannst du dann auf ein Diff-Tool deiner Wahl loslassen. ☺
|
||
![]() Anmeldungsdatum: Beiträge: 1260 Wohnort: /home/karlsruhe/ |
Danke Vain! Mit dem Tool diff -s <(echo '107ae1ee8d8263b6fc40c0c809451a1a2e4f21ad3e1d5613f4090e07b695cdd9') <(echo '107ae1ee8d8263b6fc40c0c809451a1a2e4f21ad3e1d5613f4090e07b695cdd9') Dateien /dev/fd/63 und /dev/fd/62 sind identisch. Wozu dient eigentlich dieses Verzeichnis /dev/fd im System? |
||
![]() Anmeldungsdatum: Beiträge: 2510 |
nox24 schrieb:
Wenn du mal nachschaust, … $ ls -al /dev/fd lrwxrwxrwx 1 root root 13 Aug 24 22:57 /dev/fd -> /proc/self/fd … dann siehst du, dass das ein Link ist. Und $ ls -al /proc/self lrwxrwxrwx 1 root root 64 Aug 25 00:57 /proc/self -> 19992 Damit ist die PID des aktuellen Prozess gemeint, in diesem Falle Kurz: In
Das andere Ende der Pipe, also das, wo die Daten wieder rauskommen, landet als fertiger Deskriptor im Pool der offenen Dateien des Vielleicht mal noch zur Verdeutlichung: $ ls -al <(echo 'hi') /dev/fd/ lr-x------ 1 void users 64 Aug 25 02:05 /dev/fd/63 -> pipe:[1339849] /dev/fd/: total 0 dr-x------ 2 void users 0 Aug 25 02:05 . dr-xr-xr-x 7 void users 0 Aug 25 02:05 .. lrwx------ 1 void users 64 Aug 25 02:05 0 -> /dev/pts/1 lrwx------ 1 void users 64 Aug 25 02:05 1 -> /dev/pts/1 lrwx------ 1 void users 64 Aug 25 02:05 2 -> /dev/pts/1 lr-x------ 1 void users 64 Aug 25 02:05 3 -> /proc/21372/fd lr-x------ 1 void users 64 Aug 25 02:05 63 -> pipe:[1339849] Der gelb markierte Teil wird ersetzt durch $ ls -al /dev/fd/63 /dev/fd/ Deswegen siehst du oben zuerst einmal die Informationen zu Vielleicht auch mal den Debug-Modus der Shell anschalten, dann sieht man das auch sehr schön: $ set -x $ diff -s <(echo 'hallo') <(echo 'hallo') + diff -s /dev/fd/63 /dev/fd/62 ++ echo hallo ++ echo hallo Files /dev/fd/63 and /dev/fd/62 are identical
|