В выводе команды md5sum есть лишний пробел (Это что ли баг?)

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

Ответить
Аватара пользователя
жучара
Сообщения: 950
ОС: астралинукс

В выводе команды md5sum есть лишний пробел

Сообщение жучара »

Друзья!

Shell

user@astra:~$ touch cafebabe
user@astra:~$ md5sum cafebabe
d41d8cd98f00b204e9800998ecf8427e cafebabe
между d41d8cd98f00b204e9800998ecf8427e и cafebabe два пробела. Хотя:

Shell

man md5sum
...
The sums are computed as described in RFC 1321. When checking, the input should be a former output of this program. The default mode is to print a line with checksum, a character indicating type (`*' for binary, ` ' for text), and name for each FILE.
ЧЯДНТ? Спасибо, кто откликнется
Я просто читаю маны.
Спасибо сказали:
azsx
Сообщения: 3684
ОС: calculate linux, debian, ubuntu

Re: В выводе команды md5sum есть лишний пробел

Сообщение azsx »

калька. Также 2 пробела.
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu
Контактная информация:

Re: В выводе команды md5sum есть лишний пробел

Сообщение serzh-z »

жучара
И какой ответ вы ожидаете? md5sum, при проверке, разбивает строку на три части по пустому пространству. После разбивки остаётся либо '*', либо пустая (после обрезки) строка.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20794
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: В выводе команды md5sum есть лишний пробел

Сообщение Bizdelnick »

Просто ман недоработан. У меня более корректное описание:
The default mode is to print a line with checksum, a space, a character indicating input mode ('*' for binary, ' ' for text or where binary is insignificant), and name for each FILE.
md5sum (GNU coreutils) 8.30
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
жучара
Сообщения: 950
ОС: астралинукс

Re: В выводе команды md5sum есть лишний пробел

Сообщение жучара »

Bizdelnick писал:
12.12.2019 18:00
Просто ман недоработан. У меня более корректное описание:
The default mode is to print a line with checksum, a space, a character indicating input mode ('*' for binary, ' ' for text or where binary is insignificant), and name for each FILE.
md5sum (GNU coreutils) 8.30
ничего себе недоработка. Кстати, говоря, у меня пока явно не укажешь, что файл бинарный, расценивает, как текстовый. Возьмём какой-нибудь исполняемый файл

Shell

user@astra:~$ md5sum /usr/bin/md5sum
91308a7534e555fae3b76dc501eebcba /usr/bin/md5sum
user@astra:~$ md5sum -b /usr/bin/md5sum
91308a7534e555fae3b76dc501eebcba */usr/bin/md5sum
во втором случае индикатор * теряет всякий смысл, ведь я и так знаю, что файл бинарный. Я ведь сам это указал -b. Такие дела.
Добавлено (18:20):
Да ладно бы только ман был недоработан.

Shell

user@astra:~/Desktop/tet$ foo=$(md5sum cafebabe)
user@astra:~/Desktop/tet$ echo $foo
d41d8cd98f00b204e9800998ecf8427e cafebabe
теперь между d41d8cd98f00b204e9800998ecf8427e и cafebabe один пробел. Ни на что нельзя положиться.
Я просто читаю маны.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20794
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: В выводе команды md5sum есть лишний пробел

Сообщение Bizdelnick »

жучара писал(а):
12.12.2019 18:17
Кстати, говоря, у меня пока явно не укажешь, что файл бинарный, расценивает, как текстовый.
Не текстовый, а insignificant (пофиг, то есть).
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
жучара
Сообщения: 950
ОС: астралинукс

Re: В выводе команды md5sum есть лишний пробел

Сообщение жучара »

Я попробую всегда писать -b, чтобы было единообразие.
Я просто читаю маны.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20794
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: В выводе команды md5sum есть лишний пробел

Сообщение Bizdelnick »

жучара писал(а):
12.12.2019 18:17
теперь между d41d8cd98f00b204e9800998ecf8427e и cafebabe один пробел. Ни на что нельзя положиться.
Положиться можно было бы на умение пользоваться шеллом, но сначала надо его освоить.
После раскрытия переменной шелл формирует командную строку, в которой любое число пробелов считается разделителем. Поэтому echo получает два аргумента: d41d8cd98f00b204e9800998ecf8427e и cafebabe, которые и выводит последовательно, вставляя между ними один пробел. Если бы Вы заключили переменную в двойные кавычки ("$foo"), то всё их содержимое было бы для шелла одной строкой, которую он передал бы echo как единственный аргумент d41d8cd98f00b204e9800998ecf8427e cafebabe, и вывод был бы таким, как Вы ожидали.
P. S. Второй пробел внутри последнего тега ish съелся. На самом деле их там два.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
жучара
Сообщения: 950
ОС: астралинукс

Re: В выводе команды md5sum есть лишний пробел

Сообщение жучара »

Чем больше я изучаю шелл читаю документацию, тем меньше к ней уважения. Кругом ложь и недоработки.

...А три подряд идущие идеи (я про md5sum):

1) Воткнуть пробел как идентификатор текстового файла (по факту после выполнения md5sum получается два подряд идущих пробела)

2) НЕ СДЕЛАТЬ так, чтобы файл ПО УМОЛЧАНИЮ считался бинарным
Это вообще слов нет у меня.

3) И вообще сама идея- мы идентифицируем файл и в выводе нам тоже идентифицируют файл. Фактически что мы написали, то нам и возвращают, только вмеcто -b пишут *. Ужас.

Я вот сейчас реализую если md5sum без вот этого вот всего, так ведь у меня не примут.
Я просто читаю маны.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20794
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: В выводе команды md5sum есть лишний пробел

Сообщение Bizdelnick »

жучара, для некоторых систем есть (была) разница, производится чтение в бинарном или текстовом формате. В GNU/Linux её нет.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
bormant
Сообщения: 1354

Re: В выводе команды md5sum есть лишний пробел

Сообщение bormant »

Пару слов по поводу разницы бинарного и другого режима: в другом производится трансляция концов строк в \n, в бинарном нет никаких трансляций. А поскольку в Linux разделителем строк принят \n, то на этой платформе, как уже говорили выше, разницы нет.
Спасибо сказали:
Ответить