我在 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,因为我们很多人都有两个硬盘驱动器。