Uppdatera CD-status

Här diskuterar vi skal, kommandon och klassiska linuxverktyg.
Användarvisningsbild
Johnny Rosenberg
Inlägg: 1256
Blev medlem: 23 jun 2007, 16:18
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Kontakt:

Uppdatera CD-status

Inlägg av Johnny Rosenberg »

Håller på med ett skript för cd-bränning. Ett problem jag har just nu, är att när jag raderat en skiva måste jag ta ut skivan och sätta in den igen för att skivan ska anses tom:
Funktioner:

Kod: Markera allt

HasMedia () {
	udisks --show-info "${CdRom}" | grep "has media.*1" > /dev/null
	return $?
}

IsNotEmpty () {
	udisks --show-info "${CdRom}" | grep "blank.*0" > /dev/null
	return $?
}
Variabler:

Kod: Markera allt

CdRom="/dev/sr0"
Skivan sitter i och har just raderats med:

Kod: Markera allt

umount "${CdRom}"
cdrecord blank=fast dev="${CdRom}"
Dags att kolla om skivan är tom:

Kod: Markera allt

$ if IsNotEmpty; then echo "Inte tom"; else echo "Tom"; fi
Inte tom
$
Nähä, då plockar vi väl ut den och sätter in den igen:

Kod: Markera allt

eject $CdRom
Under tiden som skivan försöker komma igång testar vi om skivan är tillgänglig:

Kod: Markera allt

$ if HasMedia; then echo "Skiva finns"; else echo "Skiva saknas"; fi
Skiva saknas
$ if HasMedia; then echo "Skiva finns"; else echo "Skiva saknas"; fi
Skiva saknas
$ if HasMedia; then echo "Skiva finns"; else echo "Skiva saknas"; fi
Skiva saknas
$ if HasMedia; then echo "Skiva finns"; else echo "Skiva saknas"; fi
Skiva finns
$
Okej, skivan är detekterad, men är den tom?

Kod: Markera allt

$ if IsNotEmpty; then echo "Inte tom"; else echo "Tom"; fi
Tom
$
Självklart är den tom; jag har ju just raderat den…

Och nu till min fråga: Kan jag få datorn att ”läsa om” skivan på något sätt, så att jag slipper öppna och stänga cd-släden varje gång?
Vänliga hälsningar

Johnny Rosenberg
ジョニー・ローゼンバーグ

IEEE 1541 - binära prefix
ISO 8601 - datum och tid
Användarvisningsbild
Johnny Rosenberg
Inlägg: 1256
Blev medlem: 23 jun 2007, 16:18
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Kontakt:

Re: Uppdatera CD-status

Inlägg av Johnny Rosenberg »

Och här kommer svaret alla väntat på:

Kod: Markera allt

udisks --poll-for-media $CdRom
där CdRom i mitt fall är

Kod: Markera allt

/dev/sr0
Sedan om det finns fler lösningar vet jag ju inte, men det gör det ju säkert.
Nackdelen med denna lösning är att om man ska ha den i ett skript i Gedit och har färglagda nyckelord, kommer ordet ”for” i ”--poll-for-media” att ställa till det så att färgkodningen blir helt fel efter kommandot…
För att kringgå detta tvingades jag att använda fnuttar (jag använde enkelfnuttar men jag antar att även dubbelfnuttar hade fungerat):

Kod: Markera allt

udisks '--poll-for-media' $CdRom
Annars kan man ju ändra i filen som styr hur färgkodningen går till, jag har varit där och rotat förr, bland annat för att få färgkodning på vanliga program jag använder, som zenity och yad. Det kanske går att ändra funktionen för hur ”for” färgkodas så att det funkar ändå, men det känns som lite overkill när det verkar funka med enkelfnuttar.
Vänliga hälsningar

Johnny Rosenberg
ジョニー・ローゼンバーグ

IEEE 1541 - binära prefix
ISO 8601 - datum och tid
Skriv svar

Återgå till "Terminalforum"