Если ссылки выводятся как полные URL-адреса, они должны быть активными при наведении на них (указателем мыши), удерживая нажатой клавишу Ctrl .
Если файлы содержат только постоянные назначения, их можно сначала отсортировать. С заменой процесса (Bash/zsh):
cmp <(sort foo) <(sort bar)
(или cmp -s
как обычно)
Если вы имеете дело со стандартной оболочкой, вам потребуются временные файлы:
a=$(mktemp) b=$(mktemp)
sort foo > "$a"; sort bar > "$b"
cmp "$a" "$b"
rm "$a" "$b"
В любом случае вы должны быть уверены, что строки в файлах можно сортировать без изменения смысла. Многострочные строки -будут разорваны сортировкой, и если у вас есть присваивания, которые ссылаются на другие переменные, порядок присваивания также будет иметь значение.
Если вам нужен хэш, сделайте что-то вроде:
cksum1=$(sort foo | sha256sum)
cksum2=$(sort bar | sha256sum)
Но если вы выполняете сравнение локально, вероятно, не имеет большого значения, если вы просто сравниваете файлы напрямую, так как вам нужно прочитать их полностью, чтобы убедиться, что они одинаковы, и cmp
можно остановить рано, если заметит разницу, в то время как sha256sum
не может.
Если файлы находятся на разных машинах, то, конечно, проще передать только хэш. Но даже в этом случае я бы предложил использовать SHA -256 (как указано выше )или SHA -512 вместо MD5, если это возможно(*). Даже busybox
реализует sha256sum
, так что вы можете его получить.
Конечно, даже подстановка процесса может прибегать к временным файлам, поэтому для прямого сравнения необходимо, чтобы оба отсортированных временных файла существовали одновременно, а для взятия хэша этого не требуется. Но это должно иметь значение только в том случае, если файлы достаточно велики, и их дублирование приведет к исчерпанию хранилища в системе.
(*MD5 имеет известные недостатки, которые позволяют генерировать коллизии, в то время как хэши SHA -2 считаются более сильными. В некоторых случаях вам может сойти с рук MD5, но это зависит от деталей, и лучше перестраховаться.)