dd
не заботится о регистре, это зависит от файловой системы и ядра. И в Debian это будет -чувствительно к регистру. Таким образом, если /dev/sdc
мог быть узлом устройства, /dev/sdC
, вероятно, не существовал до тех пор, пока dd
не создал его как обычный файл sdC
внутри /dev
. /dev
вероятно, это tempfs:
% df -hT /dev
Filesystem Type Size Used Avail Use% Mounted on
udev devtmpfs 440M 0 440M 0% /dev
И его размер обычно ограничен долей оперативной памяти (по умолчанию 50%, я думаю ).
Итак, dd of=/dev/sdC
создал файл с именем sdC
в файловой системе tmpfs, а затем заполнил его до предела. Вероятно, вы ~2 ГБ ОЗУ используете зря (, так что, может быть, всего 4 ГБ ОЗУ? ).
dd of=/dev/sdc
записал на устройство и залил. Шерлок Холмс сказал мне, что это диск на 16 ГБ.
Чтобы сопоставить числа, в которых может не быть цифр до или после запятой, вам понадобится регулярное выражение, например \d+(\.\d*)?|\.\d+
.
По сути, есть четыре разных случая:
123
123.456
123.
.456
Вы не можете сделать необязательными как целую, так и дробную части, поскольку точка также не является обязательной, а одинокая точка, вероятно, не должна приниматься в любом случае.
Нам нужны как минимум две альтернативы.\d+(\.\d*)?
соответствует числу с целой частью, за которой может следовать точка и ноль или более цифр в дробной части, то есть первые три случая. Вторая часть соответствует последнему случаю, который начинается с точки и имеет несколько цифр после нее.
Это по-прежнему возвращает .22
и 22.
как есть, но вы можете легко добавить проверку, чтобы увидеть, является ли точка первым или последним символом, и добавить недостающий ноль. Например. сre.sub()
:
#!/usr/bin/python3
import re, sys
m = re.match("^(\d+(\.\d*)?|\.\d+)$", sys.argv[1])
if not m:
print("no match")
exit(1)
s = m.group()
print(s)
s = re.sub("^\.", "0.", s);
s = re.sub("\.$", ".0", s);
print(s)