如何使用运行 Ubuntu 14.04 的 GNU bash 4.3.11 获取计算机中所有 SD 卡的路径?
背景:
我有一个 .iso 文件,想要创建一个 bash 脚本,询问用户希望将该 .iso 文件写入哪个 SD 卡。该脚本不应为他提供内部硬盘驱动器或 cd/dvd 驱动器,而应仅提供 SD 卡路径。
实际上我手动使用
ls -la /dev/sd*
例如,它给了我一个测试机
brw-rw---- 1 root disk 8, 0 May 3 10:54 /dev/sda
brw-rw---- 1 root disk 8, 1 May 3 10:54 /dev/sda1
brw-rw---- 1 root disk 8, 2 May 3 10:54 /dev/sda2
brw-rw---- 1 root disk 8, 5 May 3 10:54 /dev/sda5
brw-rw---- 1 root disk 8, 16 May 3 15:12 /dev/sdb
brw-rw---- 1 root disk 8, 17 May 3 14:56 /dev/sdb1
brw-rw---- 1 root disk 8, 18 May 3 14:56 /dev/sdb2
在这种情况下,我“知道”sda 是我的硬盘驱动器,因为我知道计算机的硬件,因此 sdb 一定是 SD 卡,但是算法如何做到这一点呢?
答案1
lsblk -d -t
您可以使用提供如下输出的命令来获取有价值的信息:
NAME ALIGNMENT MIN-IO OPT-IO PHY-SEC LOG-SEC ROTA SCHED RQ-SIZE
sda 0 512 0 512 512 0 deadline 128
sdb 0 4096 0 4096 512 1 deadline 128
sdc 0 512 0 512 512 1 deadline 128
sdd 0 512 0 512 512 1 deadline 128
sr0 0 512 0 512 512 1 deadline 128
不幸的是,我没有一种方法可以在不做出危险假设的情况下排除 SSD(即使容量也无法安全地工作)安全数字扩展容量 (SDXC) 格式于 2009 年 1 月发布,并在 SD 规范 3.01 版中定义,支持高达 2 TB 的卡,我见过容量比某些 SSD 更高的 SD 卡