thay thế quá trình bash với tập tin tạm thời


8

Một số chương trình cần tập tin của họ để có thể tìm kiếm, ví dụ như objdumpvậy.

$ 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

Sẽ thuận tiện khi có quá trình thay thế sử dụng các tập tin tạm thời.

Tôi có thể thấy trong trang man rằng bash có thể dự phòng các tệp tạm thời với quá trình thay thế, nhưng tôi có thể yêu cầu anh ta sử dụng các tệp tạm thời một cách rõ ràng không?

Giống như zshcủa =().

$ 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

Tôi nghi ngờ nó, nhưng bạn luôn có thể sử dụng mktemp.
tự đại diện

1
Có lẽ bạn nên thử biên dịch bashvới HAVE_DEV_FDthiết lập 0.
cuonglm

6
Thay vào đó, bạn có thể sử dụng chuỗi tìm kiếm ở đây :objdump -D -b binary -m i8086 /dev/stdin <<<$(echo 0xea 0x5b 0xe0 0x00 0xf0|xxd -r -p)
meuh

2
Giáo sư. Các chuỗi đây phiên bản âm thầm rơi null char!
meuh

1
@Wildcard sử dụng fifo là không thể objdump, đó là toàn bộ vấn đề. Nếu không thì <()đã đủ tốt.
Elazar Leibovich

Câu trả lời:


2

Dựa trên nhận xét của meuh; rõ ràng bash ở đây - chuỗi có thể bị lạm dụng dưới dạng tệp tạm thời, hãy thử điều này:

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

Bí quyết là ở đây các tài liệuđây chuỗi sử dụng tập tin tạm thời dưới mui xe (thay thế objdump ...với stat /dev/fd/9để xem, nó sẽ không được một FIFO có vấn đề hoặc một đường ống, nhưng một liên kết tượng trưng cho một tập tin trong /tmphoặc $TMPDIR).
mr.spuratic

Tôi đã sử dụng phương pháp trả lời của bạn cho objdumptình huống của tôi . Thật thú vị, nó chỉ làm việc cho tôi với gcc -o /dev/fd/9 [ . . . ], không phải với gcc >&9 -o - [ . . . ]. Tôi sẽ viết một câu trả lời (không phải cho tình huống phản đối, nhưng đối với một tình huống không nhạy cảm) đã sử dụng một tài liệu ở đây với một sự thay thế lệnh, nhưng sau đó tôi thấy rằng bạn đã đề cập đến một chuỗi ở đây trong các bình luận câu hỏi , thậm chí còn tốt hơn.
clacke
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.