做什么

 做什么

我看到这个问题的语法:ext4上的出生是空的

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

我知道命令替换$()``.

我隐约知道<()and>()语法。

但我从来没有见过<$()>

那它有什么作用呢?

答案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>

在这种情况下:

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

将被 shell 扩展为等价的:

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

相关内容