[英]How can I determine the volume name of CD/DVD in bash?
我正在试图弄清楚如何让bash脚本自动确定CD / DVD的路径以便处理它。 运行Mac(10.7.4)磁盘显示在:
/Volumes/[Volume_name]
由于卷名称根据磁盘而改变,因此我必须手动输入该部分。 由于控件的工作方式,操作系统显然知道它是CD / DVD。 bash是否可以使用操作系统使用的任何东西来确定CD / DVD并提供它的路径?
我用drutil
。
drutil
使用DiscRecording框架与附加的刻录设备进行交互。
#!/bin/bash
id=$(drutil status |grep -m1 -o '/dev/disk[0-9]*')
if [ -z "$id" ]; then
echo "No Media Inserted"
else
df | grep "$id" |grep -o /Volumes.*
fi
如果安装了光盘,您可以使用mount
来查看它的安装位置。
给定UNIX块设备名称, diskutil info的输出比mount更容易解析。 例如,这个
function get_disk_mountpoint () {
diskutil info $1 | perl -ne 'print "$1\n" if /^ Mount Point: +(.*)/';
}
作品。 麻烦的是,OS X还动态分配/ dev / disk? 设备到可移动媒体,所以你仍然需要类似的东西
function get_optical_mountpoints () {
for i in $(diskutil list | egrep ^/); do
if diskutil info $i | egrep -q '^ Optical Drive Type:' ; then
get_disk_mountpoint $i
fi
done
}
列出光驱的安装点。
把上面的碎片放在一起,我想这会做你想要的:
get_cd_volume() {
local rc=1
for disk in $(diskutil list | grep ^/); do
if diskutil info "$disk" | grep -q Optical; then
df | sed -ne "s,^$disk.*\(/Volumes.*\)$,\1,p"
rc=0
fi
done
if (( rc )); then
echo >&2 "No volume mounted."
fi
return $rc
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.