이 질문의 구문을 보았습니다.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