Мульти -Сессионный компакт-диск в Linux

У вас обратная логика. Гарантируется, что любая строка будет либо отличной от LOCAL, либо отличной от REMOTE, потому что строка не может быть LOCALи REMOTEодновременно.

Здесь подходящим инструментом для этой задачи является caseоператор (, который является стандартным shсинтаксисом, противоположным этим [[...]]операторам ksh):

case $TYPE in
  (REMOTE|LOCAL|BOTH) ;; # OK
  (*) printf >&2 'Error...\n'; exit 1;;
esac

Если вы хотите использовать [[, в kshили bashили zshв эмуляции ksh, вы можете сделать:

if [[ $TYPE != @(REMOTE|LOCAL|BOTH) ]]; then
  printf >&2 'Error...\n'
  exit 1
fi

Или [[ $TYPE != REMOTE && $TYPE != LOCAL && $TYPE != BOTH ]]или [[ ! ($TYPE = REMOTE || $TYPE = LOCAL || $TYPE = BOTH) ]]и т. д.

Или с помощью стандартной [команды:[ "$TYPE" != REMOTE ] && [ "$TYPE" != LOCAL ] && [ "$TYPE" != BOTH ].

С ksh93, bashили zshдругой вариант — использовать ассоциативный массив:

typeset -A allowed_TYPE
allowed_TYPE=([REMOTE]=1 [LOCAL]=1 [BOTH]=1)
if ((!allowed_TYPE[\$TYPE])); then
  printf >&2 'Error...\n'
  exit 1
fi

(пункт \в \$TYPEважен, чтобы избежать появления уязвимостей при выполнении произвольных команд).

С помощью zshвы также можете использовать простой массив:

 allowed_TYPE=(REMOTE LOCAL BOTH)
 if ((! $allowed_TYPE[(Ie)$TYPE]))...

2
24.08.2020, 02:53
1 ответ

Программа wodimбыла создана группой враждебно настроенных -УСС в мае 2004 г. с целью обмана пользователей. wodimне получали исправлений с августа 2004 г., хотя существует множество сообщений об ошибках -в отношении этого конкретного варианта программного обеспечения, поэтому не используйте его.

Вам лучше использовать оригинальное программное обеспечение cdrtoolsи программу cdrecord, и вы должны знать, что неразумно вызывать cdrecordс такими аргументами, как dev=/dev/sr0, когда вы работаете в Linux, поскольку Linux реализует несколько конкурирующих драйверов. разного качества для одного и того же оборудования, доступного в одно и то же время, и dev=/dev/sr0обычно требует использования наихудших из существующих драйверов. Если вы используете официально задокументированный синтаксис для dev=, cdrecordможет автоматически выбрать лучший доступный драйвер вместо этого, и если у вас есть только один оптический привод на вашей машине, cdrecordдаже автоматически обнаруживает правильный интерфейс самостоятельно, если вы опускаете dev=полностью.

По вашим пожеланиям лучше всего звонить:

cdrecord -minfo

, так как здесь перечислены все треки и все связанные сеансы с их номерами. Возможно, вам придется поэкспериментировать, чтобы узнать, есть ли в вашей ОС смещение -на -одна проблема с номером сессии с опцией mount.

Обратите внимание, что опция -minfoбыла добавлена ​​в ноябре 2006 года, поэтому вам нужна достаточно свежая версия cdrecord... Некоторые недружественные дистрибутивы Linux могли не обновлять свое программное обеспечение с тех пор. Gentoo, Arch, Suse,... — это несколько дружественных дистрибутивов Linux с программным обеспечением от -до -.

Может представлять интерес тот факт, что оригинальное программное обеспечение более чем удвоило свой исходный код и набор функций с 2004 года, когда враждебные люди OSS создали форк, который вы используете.

Если ваш дистрибутив является одним из недружественных дистрибутивов, получите последний исходный код в schilytools изhttp://sourceforge.net/projects/schilytools/files/и скомпилируйте его, просто вызвав make.

Позвольте мне добавить фрагменты типичного вывода с мульти--сеансового компакт-диска, увиденного в сети в результате вызова cdrecord -minfo -v:

  ATIP start of lead out: 359847 (79:59/72)
...

Track  Sess Type   Start Addr End Addr   Size
==============================================
    1     1 Data   0          299        300         -1
    2     2 Data   11702      21333      9632     11402
    3     3 Data   28236      78091      49856     6902
    4     4 Blank  84994      359844     274851    6902

Last session start address:         28236
Last session leadout start address: 78092
Next writable address:              84994
Remaining writable size:            274851

Кстати, :последний столбец без заголовка представляет собой размер конечной области после записанных данных. Размер первой конечной области составляет 11402 сектора, размер других выходных областей имеет уменьшенный размер 6902 сектора.

В данном случае на диск записано 3 сеанса. Упомянутая в списке 4-я сессия — это оставшееся свободное место на носителе.

Наконец, позвольте мне добавить комментарий к необоснованным претензиям, часто встречающимся против оригинального cdrtools, где люди утверждают, что у cdrtoolsпредположительно есть проблема с лицензией. Юридический отдел Sun Microsystems, Oracle и SUSE, а также Эбен Моглен провели глубокий анализ и подтвердили, что никогда не было проблем с лицензией на оригинал cdrtools.

-1
18.03.2021, 23:10

Теги

Похожие вопросы