zastąpienie procesu bash plikiem tymczasowym


8

Niektóre programy wymagają, aby ich pliki były widoczne, na przykład objdump.

$ objdump -D -b binary -m i8086 <(echo 0xea 0x5b 0xe0 0x00 0xf0|xxd -r -p)
objdump: Warning: '/proc/self/fd/11' is not an ordinary file

Byłoby wygodnie, gdyby proces zastępowania korzystał z plików tymczasowych.

Widzę na stronie podręcznika, że ​​bash może wrócić do plików tymczasowych z podstawieniem procesów, ale czy mogę wyraźnie poprosić go o użycie plików tymczasowych?

Podobnie jak zshs” =().

$ objdump -D -b binary -m i8086 =(echo 0xea 0x5b 0xe0 0x00 0xf0|xxd -r -p)

/tmp/zsh1u1Nrw:     file format binary


Disassembly of section .data:

00000000 <.data>:
   0:   ea 5b e0 00 f0          ljmp   $0xf000,$0xe05b

Wątpię, ale zawsze możesz użyć mktemp.
Wildcard

1
Może powinieneś spróbować skompilować bashz HAVE_DEV_FDustawionym na 0.
cuonglm

6
Zamiast tego możesz użyć widocznego tutaj ciągu :objdump -D -b binary -m i8086 /dev/stdin <<<$(echo 0xea 0x5b 0xe0 0x00 0xf0|xxd -r -p)
Meuh

2
Ups Tutaj ciąg wersja cicho spada null char!
Meuh

1
@Wildcard przy użyciu fifo nie jest możliwe objdump, to jest sedno pytania. W przeciwnym razie <()było wystarczająco dobre.
Elazar Leibovich

Odpowiedzi:


2

Na podstawie komentarza meuha; najwyraźniej bash tutaj-ciągi mogą być nadużywane jako pliki tymczasowe, spróbuj tego:

( echo 0xea 0x5b 0xe0 0x00 0xf0 | 
  xxd -r -p >/dev/fd/9; objdump -D -b binary -m i8086 /dev/fd/9) 9<<<''

Sztuką jest to, że tutaj dokumenty i tutaj ciągi wykorzystują pliki tymczasowe pod maską (wymienić objdump ...z stat /dev/fd/9aby zobaczyć, że nie będzie to problematyczne FIFO lub rury, ale dowiązaniem do pliku w /tmplub $TMPDIR).
mr.spuratic

Użyłem metody twojej odpowiedzi do mojej objdumpsytuacji. Co ciekawe, zadziałało tylko u mnie gcc -o /dev/fd/9 [ . . . ], a nie u mnie gcc >&9 -o - [ . . . ]. Chciałem napisać odpowiedź (nie na sytuację objdump, ale na sytuację niewrażliwą na wartości null), która używała dokumentu tutaj z podstawieniem polecenia, ale potem zobaczyłem, że już wspomniałeś tutaj ciąg znaków w komentarzach do pytania , co jest jeszcze lepsze.
clacke
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.