我正在尝试使用基本命令实用程序将 ISO 写入 USB 闪存。我在写:
sudo cat path/to/archlinux-version-x86_64.iso > /dev/disk/by-id/usb-My_flash_drive
但我有回应:
zsh: permission denied: /dev/disk/by-id/usb-Generic_Mass_Storage_C5BB4803F4D97884-0:0
也许我需要提供根才能写入该设备?
更新。解决方法:
sudo dd bs=4M if=archlinux-2023.07.01-x86_64.iso of=/dev/disk/by-id/usb-Generic_Mass_Storage_C5BB4803F4D97884-0:0 conv=fsync oflag=direct status=progress
答案1
当您使用如下命令行时:
sudo cat path/to/archlinux-version-x86_64.iso > /dev/disk/by-id/usb-My_flash_drive
shell 将在开始执行实际命令之前尝试设置重定向。因此,只有该cat path/to/archlinux-version-x86_64.iso
部分会受到sudo
;的影响。这可能不是您想要的。您需要sudo
写入设备,不一定需要读取常规文件(除非您无法正常访问该文件)。
重新排列此命令以使用sudo
和重定向的一种方法是:
cat path/to/archlinux-version-x86_64.iso | sudo tee /dev/disk/by-id/usb-My_flash_drive >/dev/null
在这里,shell 将首先在两个命令之间设置管道以及结果输出的重定向,然后再启动这两个命令在平行下。将以tee /dev/disk/by-id/usb-My_flash_drive
root 权限运行;它会将其输入的一份副本传递到闪存驱动器,并将另一份副本传递到标准输出。 shell 设置的重定向将以您的常规用户帐户运行,并将传递tee
to的标准输出/dev/null
,这不需要任何特殊权限。
上面的重新安排与您原来的命令行类似,但它可以被称为“无用的使用cat
”,因为您也可以根本不使用管道来完成它,只要您可以.iso
作为普通用户读取文件:
sudo tee /dev/disk/by-id/usb-My_flash_drive < path/to/archlinux-version-x86_64.iso > /dev/null