Позвольте мне предположить:
dir1/out.txt
, dir2/out.txt
, .. dir8/out.txt
. Тогда как насчет шагов:
sha256sum
. [Тысяча сто двадцать одна] Я создал 8 тестовых файлов, из которых dir1 / out.txt, dir2 / out.txt и dir4 / out.txt являются идентичными, dir3 / out.txt и dir7 / out.txt идентичны, и другие отличаются.
Тогда значения хеш-функции будут выглядеть следующим образом:
sha256sum dir*/out.txt
298497ad818c3d927498537ed5ab4f9ae663747b6d00ec9a5d0bd9e30a6b714b dir1/out.txt
298497ad818c3d927498537ed5ab4f9ae663747b6d00ec9a5d0bd9e30a6b714b dir2/out.txt
e962879ef251f2117460cf0d5ce714e36a9ab79f2548c48e2121b4e573cf179b dir3/out.txt
298497ad818c3d927498537ed5ab4f9ae663747b6d00ec9a5d0bd9e30a6b714b dir4/out.txt
f45151f5253c62de69c95935f083b5649876fdb661412d4f32065a7b018bf68b dir5/out.txt
bdc26931acfb734b142a8d675f205becf27560dc461f501822de13274fe6fc8a dir6/out.txt
e962879ef251f2117460cf0d5ce714e36a9ab79f2548c48e2121b4e573cf179b dir7/out.txt
11a77c3d96c06974b53d7f40a577e6813739eb5c811b2a86f59038ea90add772 dir8/out.txt
Чтобы суммировать результат, позвольте мне заменить значения хеш-функции идентификатором группы , имеющим одинаковое число для тех же файлов в порядок появления.
Вот сценарий:
sha256sum dir*/out.txt | awk '{if (!gid[$1]) gid[$1] = ++n; print $2 " " gid[$1]}'
Вывод:
dir1/out.txt 1
dir2/out.txt 1
dir3/out.txt 2
dir4/out.txt 1
dir5/out.txt 3
dir6/out.txt 4
dir7/out.txt 2
dir8/out.txt 5
, где во втором поле отображается идентификатор группы , чтобы указать, какие файлы идентичны. [ 1131]
Обратите внимание, что идентификатор группы не представляет содержимое каждого файла как: if 2 of the out.txt files are all '1' = F , and if all '0' = 0
, потому что я понятия не имею, как выглядят файлы. Если OP может предоставить файлы примеров, я мог бы помочь.
Кстати, я все еще сомневаюсь, что файлы являются двоичными в обычном смысле, потому что OP упоминает, что «это просто файл, который имеет 0 или 1 в своем значении, когда я его открываю». Мне кажется, файлы состоят из «0» и «1». Мой скрипт выше должен работать как для двоичных, так и для текстовых файлов.
[Обновление]
Согласно информации ОП, есть решение для конкретного случая:
#!/bin/bash
for f in dir*/out.txt; do
if [[ $(uniq "$f" | wc -l) = 1 ]]; then
echo -n "$(head -1 "$f" | tr 1 F)"
else
echo -n "-"
fi
done
echo
Он переваривает содержимое каждого файла либо из: 0
для всех 0, F
для всех 1 или -
для случая смешения (возможная ошибка).
Например, если dir {1..4} /out.txt - все 0, dir5 / out.txt - смесь, а dir {6..8} /out.txt - все 1, то результат будет выглядеть следующим образом :
0000-FFF
Я надеюсь, что это будет соответствовать требованиям ОП.
Как правило, это не очень хорошая идея:
Пользователи, особенно опытные пользователи, ожидают, что смогут щелкнуть правой кнопкой мыши элементы в настольных приложениях, чтобы получить меню специфичные для элемента действия. Это ожидание не существует для веб-приложений - действительно, ожидание состоит в том, что щелчок правой кнопкой мыши на веб-странице даст вам стандартное меню веб-страницы, где вы можете распечатать, открыть ссылки в новых окнах, просмотреть источник и т. Д.
Поскольку в прошлом возможность переопределения встроенных меню использовалась очень часто (в основном наивные программисты пытались отключить сохранение изображений), многие браузеры запрещают это или затрудняют переопределение клиентского кода надежным способом.
Если вы создаете веб-приложение, которое точно имитирует поведение существующего и известного настольного приложения, может уместно приложить усилия, необходимые для реализации разумных меню правой кнопки мыши. Тем не менее, вы должны также следовать обычной рекомендации для этих меню в настольных приложениях: использовать их для обеспечения быстрого доступа к контекстно-зависимым операциям, но также предоставляют другое средство доступа к тем же функциям .
No, and it will never really work anyway since the user can prevent your attempts to over-ride it.
Я думаю, что это сильно зависит от типа приложения.
Например, это имеет смысл в Google Spreadsheets - где щелчок правой кнопкой мыши больше похож на Excel и дает вам такие возможности, как, например, копирование выделенного диапазона ячеек - вы не сможете сделать это с обычными щелкните правой кнопкой мыши меню.
Но если ваше веб-приложение на самом деле не призывает его, оно, вероятно, просто будет раздражать пользователей.
It is not a good idea for normal web applications. I have seen it done in flash/silverlight "web" applications where the user has an expectation of being more like a "desktop" application.
Это будет зависеть от контекста. За общедоступный веб-сайт я был бы против. Для веб-приложения, особенно для внутреннего приложения компании, я бы больше согласился.
Что касается приложений, которые хорошо справляются с этим, то, что приходит на ум, это веб-версия Outlook. Я использую его на регулярной основе, чтобы получить доступ к электронной почте компании, и считаю полезной функциональность меню правой кнопки мыши.
В общем я не согласен с «контекстным меню» в веб-приложении , но , если это необходимо, вы должны добавить альтернативный метод , работающий рядом с с контекстным меню и не зависящий от опыта пользователя.
I think it is a bad idea to have a right click functionality.
Если это веб-сайт , это плохая идея , Пользователи быстро раздражаются веб-сайтами, которые нарушают функциональность их любимых браузеров. Не делайте этого:)
Если это веб-приложение , это не обязательно плохая идея, но вы все равно должны быть осторожны.
Подумайте:
I've noticed FCKeditor has a right click context menu... it might make sense in this example, as the WYSIWYG editor is generally given to people with no HTML experience, and more Microsoft Word experience, and in that case, they expect the right click to do something to their text they're typing.
I would, generally, say it is bad practice though. Could a floating modal suffice?
Я не занимаю позицию по этому поводу, но ...
Если вы решите пойти по щелчку правой кнопкой мыши, посмотрите YUI! framework .
У них уже есть реализация контекстного меню, совместимая с браузерами.
Так как правый клик на сайтах используется очень редко, я бы сказал, что это плохая идея, и ее не считают «наилучшей практикой».
Если вы делаете что-то другое, чем почти все сайты на в интернете вам нужно, чтобы пользователи тратили время на изучение вашего приложения / сайта.
Кроме того, у пользователей Mac традиционно нет двух кнопок мыши, и не все пользователи Mac знают, как «щелкнуть правой кнопкой мыши», используя комбинацию щелчка или что бы это ни было в наши дни.
Так что я бы не стал этого делать, если у вас действительно нет веского основания для этого.
Меню правой кнопки мыши хорошо работает в веб-приложениях. Пока ваши пользователи понимают, что происходит. Существует несколько реализаций контекстного меню. Outlook Web Access предоставляет контекстное меню для работы с электронной почтой.
No, because it's simply not discoverable. Of course, this depends on the application, but likely users won't have a clue to right click.
When a user is on the Web ("the Internet") they expect to use one button. Think about all the Apple Mighty Mouse users who will have trouble using your site.
Easiest way to prove to your boss whether the idea will work or not: test on real users. You should be doing this anyway.
Это зависит от типа приложения. Я всегда думал, что это плохая идея, но веб-приложения все время приближаются к настольным приложениям. Поэтому я спросил мастера юзабилити (Nielsen) и, что удивительно, он все для щелчка правой кнопкой мыши !
... высококвалифицированные пользователи часто разочарован, когда приложение не поддерживает щелчок правой кнопкой мыши - для Например, если это реализовано во Flash и вызывает меню Flash Player вместо контекстно-уместного команды приложения.
Google Docs - единственное веб-приложение, в котором я ценю любые попытки использовать функциональные возможности щелчка правой кнопкой мыши; и они реализовали его на месте.
Обновление: Чтобы пояснить немного, я думаю, что реализация хороша, потому что Google Docs (весь сайт / приложение) очень хорошо помогает вам забыть, что вы находитесь в веб-браузер.
Еще одна мысль: НЕ! Между IE6 / 7/8, Firefox 2/3, Chrome, Safari и другими менее известными браузерами и версиями это звучит как кошмар для поддержки по всем направлениям. Если число ваших пользователей не исчисляется миллионами, одно лишь тестирование, вероятно, является достаточно веской причиной, чтобы его избежать.
Ответ Shog9 - лучший прямой ответ на ваш вопрос, но еще одна причина избегать контекстных меню в веб-приложениях заключается в том, что это прекрасная возможность отойти от использования контекстных меню.
Большинство приложений Windows и * nix GUI в значительной степени полагаются на контекстные меню для реализации большей части своих функций. Одной из причин того, что Mac OS традиционно хвалят за высокую удобство использования, является то, что истинные опции меню и элементы панели инструментов были предпочтительнее контекстных меню, которые быстро превращаются в гетто вложенных списков (особенно если другим приложениям разрешено внедрять функциональность).
Веб-приложения - глоток свежего воздуха для дизайнеров пользовательского интерфейса именно потому, что интерфейс должен быть удобным и мощным без использования меню, вызываемого правой кнопкой мыши. Более того, случайные пользователи неожиданно не откладываются на новые парадигмы пользовательского интерфейса в веб-приложениях, в то время как эксперименты на настольном компьютере часто являются анафемой.
Таким образом, возраст приложения для браузера - это отличная возможность для разработчиков переосмыслить парадигмы пользовательского интерфейса. Меню правого клика - отговорка в Интернете.