作者:linuxeden管理团队成员li-jiahuan
Linux下好用的光盘刻录工具有 k3b(kde),nautilus-cd-burner(gnome),xfburn(xfce)等,
这些图形界面的工具功能强大使用方便。
但当你是一个命令行下的痴汉,或是需要频烦地刻录ISO用来做测试,那GUI工具就不是那么称手了:
启动,选择文件,设置参数,点几下“下一步”或“开始”,
这是一件低效的工作! *nix的高效,有部分是因为简洁高效的命令行操作方式,本期介绍命令行下
的cdrecord工具cdrecord的主要两个功能:
1、擦除RW光盘的内容
2、刻录iso到光盘
对应的两种用法为:
1、cdrecord dev=$rw_dev blank=fast
2、cdrecord dev=$rw_dev $iso
rw_dev,即记录光驱是如何指定的, 且看"探测刻录光驱是哪个设备"一段
下边是完整脚本,用法见usage函数说明
(下载 http://huan.googlecode.com/svn/bash/mycdrecord.sh )
----------------------------------------------------------
#! /bin/bash
# Author : Jiahuan Li <huanlf@gmail.com> # License: GPLv2 # Date : 2007/06/22 # Desc : make use of cdrocord to burn cd/dvd disk
ERASE= # 擦除RW光盘 BURN= # 烧刻
## 检查是否已经安装cdrecord which cdrecord &>/dev/null || { echo "cdrecord not installed" exit 127 }
## 用法 usage () { cat <<-EOF
$0 功能:擦除RW光盘,刻录ISO 用法: $0 [ options ] [ xxx.iso ] options: -e 擦除RW光盘 -b 刻录 -h 打印本条帮助信息 说明: 对于CD-R/DVD-R来说, 不需要指定options, 指定iso后直接刻录 对于CD-RW/DVD-RW来说, 需要先擦写再记录,即需要指定 -e -b 参数
EOF
exit 1 }
## 要求至少有一个参数 [[ -n $1 ]] || usage
while getopts 'ebh' opt; do case $opt in e) ERASE=true;; b) BURN=true;; *) usage;; esac done
## 去掉 -e/-b, iso=xxx.iso shift $(( OPTIND -1 )) iso=$1
## 检查$iso是否为iso文件 [[ -n $iso ]] && { file $iso | grep -q 'ISO 9660'; RC=$? [[ $RC != 0 ]] && { echo "Target is not a ISO file, aborting ..." exit 127 } }
## 导入usb光驱驱动模块, 一般不需要手工导入,udev在开机时会加载 ## 止处是防止模块被列入黑名单 #modprobe sr_mod 2>/dev/null #modprobe sg 2>/dev/null modprobe sr_mod 2>/dev/null modprobe sg 2>/dev/null
## 探测刻录光驱是哪个设备 if [[ -e /dev/cdrw ]]; then rw_dev=/dev/cdrw elif [[ -e /dev/dvdrw ]]; then rw_dev=/dvdrw else rw_dev=$( cdrecord -scanbus 2>/dev/null | awk '/RW/ {print $1}' ) fi
## 找不到刻录光驱,退出 [[ -z $rw_dev ]] && { echo "Can not found RW device, aborting ..." exit 127 } echo "Found RW device: $rw_dev"
## umount先 umount $rw_dev 2>/dev/null
RC=0
## 如果没有指定要擦除或刻录,则直接刻录( CD-R, DVD-R 盘不用擦,直接刻 ) if [[ -z "$ERASE$BURN" ]]; then cdrecord dev=$rw_dev blank=fast && cdrecord dev=$rw_dev $iso; else ## 如果指定擦盘 [[ -n $ERASE ]] && { cdrecord dev=$rw_dev blank=fast; RC=$?; } ## 如果指定刻盘 [[ -n $BURN ]] && (( RC == 0 )) && [[ -n $iso ]] && cdrecord dev=$rw_dev $iso fi
## modprobe -r cdrom sg sg_mod sr_mod 2>/dev/null ## 弹出光驱 { eject && sleep 5 && eject -t; } &>/dev/null &
|
时间:2009-06-13 12:07
来源:Linuxeden
作者:li-jiahuan
原文链接
cdrecord iso 刻录