<$( )> 해야 할 일

<$( )> 해야 할 일

이 질문의 구문을 보았습니다.ext4의 생성이 비어 있습니다.

sudo debugfs -R "stat <$(stat -c %i /home/user/path/to/file)>" /dev/sda5

나는 명령 대체 $()``.

나는 <()>()구문을 막연하게 알고 있습니다.

하지만 나는 그런 것을 본 적이 없습니다 <$()>.

그럼 그것은 무엇을 하는가?

답변1

<$()><이는 파일(부분)에서 읽는 명령에 대한 유효한 bash 구문입니다. 여기서 파일 이름은 $()명령 대체(부분)를 사용하여 생성되고 출력을 다른 파일( > 부분)로 리디렉션합니다. 예:

$ echo text > FILE
$ wc < "$(echo FILE)" > WC_OUT
$ cat WC_OUT
1 1 5

그러나 귀하가 링크한 답변에서는 <$()>매개변수에 to가 사용되었습니다 debugfs. 내용 man debugfs은 다음과 같습니다:

통계 파일 사양

inode filespec의 inode 구조 내용을 표시합니다.

그리고:

filespec 매개변수는 두 가지 형식으로 지정할 수 있습니다. 첫 번째 형식은 <2>와 같이 꺾쇠 괄호로 묶인 inode 번호입니다.

이 경우:

sudo debugfs -R "stat <$(stat -c %i FILE)>" /dev/sda5

셸에서 다음과 같이 확장됩니다.

sudo debugfs -R "stat <4476834>" /dev/sda5

이것은 유효한 debugfs명령입니다. 확인해 봐 echo:

$ echo sudo debugfs -R "stat <$(stat -c %i FILE)>" /dev/sda5
sudo debugfs -R stat <4476834> /dev/sda5

관련 정보