임시 파일로 bash 프로세스 대체


8

일부 프로그램은 예를 들어 파일을 검색 할 수 있어야합니다 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

프로세스 대체가 임시 파일을 사용하도록하는 것이 편리합니다.

맨 페이지에서 bash가 프로세스 대체로 임시 파일로 대체 될 수 있지만 임시 파일을 사용하도록 명시 적으로 요청할 수 있습니까?

처럼 zsh=().

$ 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

나는 그것을 의심하지만, 당신은 항상 사용할 수 있습니다 mktemp.
와일드 카드

1
아마도 bashHAVE_DEV_FD설정하여 컴파일해야 할 수도 있습니다 0.
cuonglm

6
대신 검색 가능한 문자열을 사용할 수 있습니다 .objdump -D -b binary -m i8086 /dev/stdin <<<$(echo 0xea 0x5b 0xe0 0x00 0xf0|xxd -r -p)
meuh

2
죄송합니다. 여기 문자열 버전은 자동으로 널 문자를 상품!
meuh

1
fifo를 사용하는 @Wildcard는 사용할 수 없으므로 objdump질문의 요점입니다. 그렇지 않으면 <()충분했다.
Elazar Leibovich

답변:


2

meuh의 의견을 바탕으로; 분명히 bash here-string은 임시 파일로 남용 될 수 있으므로 다음을 시도하십시오.

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

트릭은 있다는 것입니다 여기에 문서여기에 문자열이 임시 파일을 사용 후드 (교체 objdump ...와 함께 stat /dev/fd/9, 그것은 문제가 FIFO 또는 파이프 만에 파일에 대한 심볼릭 링크되지 않습니다보고 /tmp또는 $TMPDIR).
mr.spuratic

나는 당신의 대답의 방법을 내 objdump상황에 사용했습니다. 흥미롭게도,와 (과) 함께 gcc -o /dev/fd/9 [ . . . ]하지 않았습니다 gcc >&9 -o - [ . . . ]. 명령 대체와 함께 here 문서를 사용하는 답변 (objdump 상황이 아니라 null에 민감하지 않은 상황에 대한)을 쓰려고했지만 질문 주석에서 here 문자열을 이미 언급 한 것을 보았습니다. 더 좋습니다.
clacke
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.