Как это управляет работой?

Я видел эту команду на форуме как вопрос для регистрации:

"date -u +%V$(uname)|sha256sum|sed 's/\W//g'"

Я думаю, что это зависит от времени моего ПК, который изменяется каждую секунду, но вывод является все еще тем же каждым разом, когда я пробую его. Так, кто-то может объяснить, как эта команда работает?

1
задан 9 January 2017 в 19:35

5 ответов

Это совпадает с ^ на большинстве языков, просто XOR.

false ^ false == false
true ^ false == true
false ^ true == true
true ^ true == false 
83
ответ дан 31 October 2019 в 04:06

Давайте повредим это в его составные части:

date часть

  • date -u : как объяснено в man date, -u флаг заставляет его распечатать Всемирное координированное время

  • +%V : команда данных берет аргумент формата, который дан после a +. Например:

    $ date +%m/%d/%y
    05/04/14
    

    Посмотрите man date для списка всех форматов это может произвести. %V средства:

    %V недельное число ISO, с понедельником как первый день недели (01.. 53)

    Так, на этой неделе это возвратится:

    $ date +%V
    18
    

    И на следующей неделе это возвратится 19.

  • $(uname) : это просто распечатает результат uname команда, которая должна быть Linux в системе Linux.

Так, помещая все это вместе, date команда распечатает WeekNumberLinux:

$ date -u +%V$(uname)
18Linux

sha256sum часть

sha256sum просто берет входную строку и применяет хеш-функцию к нему. Это производит длинную строку, которая уникальна для данного входа:

$ date -u +%V$(uname) | sha256sum 
9a93b71d5b2841e649195bc81f8e38600860a040bc368cdbd0cde346b73248a1  -

sed часть

sed управляйте использует susbtitution оператор (s/pattern/replacment/) который займет место pattern с replacement. В этом случае шаблон \W что означает "Все несловесные символы", означая что-либо, что это не [A-Za-z0-9_], не буква, не число и не подчеркивание. Это используется для удаления конечного пробела и - от вывода sha256sum.


Так, команда является простым способом удостовериться, что Вы не робот. Начиная с date печатает текущую неделю, Ваш вывод всегда будет тем же до следующей недели, когда это изменится.

5
ответ дан 3 December 2019 в 06:33

В некоторых из других ответов только говорится, что это - поразрядный XOR, но обратите внимание, что это может также быть логический XOR, если операнды имеют булев тип, согласно этот источник .

8
ответ дан 31 October 2019 в 04:06

Это - поразрядный XOR.

http://en.wikipedia.org/wiki/Exclusive_or

6
ответ дан 31 October 2019 в 04:06
date -u +%V$(uname)|sha256sum|sed 's/\W//g'

Удаляет все несловесные символы из sha256sum из date -u +%V$(uname) вывод команды.

avinash@avinash-Lenovo-IdeaPad-Z500:~$ date -u +%V$(uname)
18Linux
avinash@avinash-Lenovo-IdeaPad-Z500:~$ date -u +%V$(uname)|sha256sum
9a93b71d5b2841e649195bc81f8e38600860a040bc368cdbd0cde346b73248a1  -
avinash@avinash-Lenovo-IdeaPad-Z500:~$ date -u +%V$(uname)|sha256sum|sed 's/\W//g'
9a93b71d5b2841e649195bc81f8e38600860a040bc368cdbd0cde346b73248a1
avinash@avinash-Lenovo-IdeaPad-Z500:~$ 

От man date

%V -  ISO week number, with Monday as first day of week (01..53)
-u, --utc, --universal    print or set Coordinated Universal Time
1
ответ дан 3 December 2019 в 06:33

Другие вопросы по тегам:

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