这些命令有什么作用?

这些命令有什么作用?

我在 Linux Kali 中使用这些命令,但当我运行第二个命令时,我不断收到错误:“找不到这样的文件或目录。”

end=7gb
read start _ < <(du -bcm kali-linux-1.0.8.amd64.iso | tail -1); echo $start
parted /dev/sdb mkpart primary $start $end

这些是我用来尝试获得持久性的更大命令集中的一些命令。我实际上不知道这些是什么意思。

我的请求是解释每个命令的作用,以便我可以修复我的错误。

答案1

read start _

这会将输入行的第一个字(根据$IFS)分配给变量start

du -bcm kali-linux-1.0.8.amd64.iso | tail -1

是一种获取文件大小的奇怪方法,四舍五入到下一个兆字节。

parted /dev/sdb mkpart primary $start $end

在 sdb 上创建一个分区,该分区在 iso 文件所需的空间之后开始(假设parted 的默认单位是兆字节,我尚未检查)并以 7GB 结束。

答案2

抱歉,我发现自己也面临着同样的情况。因此,这可以补充 Kali 页面中的说明:

  • 每个命令都在自己的行中

  • end=7gb将结束变量定义为 7gb;

  • read start _ < <(du -bcm kali-linux-1.0.8.amd64.iso | tail -1); echo $start

问题的关键在于:你下载了 Kali iso 并您必须从您下载的 iso 所在的目录创建持久分区,因此新分区的开始位置由 ISO 的末尾定义,您将 ISO 逐字节复制到 USB:

du -bcm kali-linux-1.0.8.amd64.iso d伊斯克ISO 文件的圣人,在是的,C完成,并且 1兆字节块大小;

tail -1前面的命令给出了几行结果,例如:

3269    kali-linux-2019.2-i386.iso
3269    total

但我们只关心总数之前的数字,所以首先我们去掉最后(第二)行并得到:

3269 total

read start _最后一个技巧是:读取该行,直到第一个空格或第一个制表符或第一个新行(默认的内部字段分隔符)停在那里(下划线),并将该单词分配给变量 start。

echo $start将该数字修复为 $start 变量,因为我们没有使用等号进行定义。

  • parted /dev/sdb mkpart primary $start $end

这是实际创建分区的部分,从 ISO 文件的兆字节大小(3269mb,大约 3gb)到 7gb 标记。这就是将成为您的持久分区的部分。假设您同意程序选择起始块,即使您丢失了一些兆字节。

请记住将 sdX 更改为适合您系统的正确字母。它通常比 b 高很多(我在 g、d 和 e 中都有它),我认为他们应该避免在示例中使用 b,因为我们很多人都有两个硬盘驱动器。

相关内容