training-web.ruГлавнаяКатегорииО насКарта сайтаПоискТёмная тема

Категории

Как сравнить два файла cmp diff sdiff BASH

Создано: 30 мая 2017Автор: Егор Астапов2878 просмотровСложность: легкий

Существует утилиты cmp, diff и sdiff для сравнения двух файлов в BASH. Допустим, вам нужно сравнить 2 файла. Пусть это будет 2 sql запроса. Как понять в каких строках поменялся код. Сравнивать два файла глазами - это утомительное занятие. Вы можете пропустить ошибку. Команды cmp, diff и sdiff покажут вам различия прямо в консоли. Посмотрите на примеры.


file1
/*описание*/
SELECT * FROM table1
WHERE id=1

file2
/*описание*/
SELECT * FROM table1
ORDER BY NAME

cmp - это утилита, сравнивает два файла. Если они различаются, то она сообщает о первом байте и строке, где было обнаружено различие.


# сравнение 2 файлов
cmp file1 file2
#вывод: file1 file2 различаются: байт 40, строка 3

В этом примере показаны отличающиеся части двух файлов. Различия можно увидеть прямо на экране. Сами отличающиеся строки разделяет вертикальная черта |. diff — утилита сравнения файлов, выводящая разницу между двумя файлами. Эта программа выводит построчно изменения, сделанные в файле (для текстовых файлов).


# сравнивание файлов
diff file1 file2
#вывод:
3c3
< WHERE id=1
---
> ORDER BY NAME

В этом примере вывод различающихся строк выполнен в 2 столбца. Это удобно! Вертикальная черта показывает вам строку в которой есть отличие.


#выводит два файла в 2 столбцах
diff -y file1 file2
#вывод: 
#описание                                                       #описание
SELECT * FROM table1                                            SELECT * FROM table1
WHERE id=1                                                    | ORDER BY NAME

Этом пример очень похож на предыдущий, но с той лишь разницей, что выводятся только отличия.


# сравнивает 2 файла и выводит в 2 столбца
sdiff -s file1 file2
#вывод: 
WHERE id=1                                                    | ORDER BY NAME

Сравнивание файлов в GIT

Если вы сравниваете один и тот же файл до изменений и после, то воспользуйтесь системой контроля версий GIT. В системе контроля версий тоже есть возможность отслеживать изменения. Не важно попали изменения в индекс или нет! Историю изменений одного файла можно отследить.


# проберитесь в каталог с приложением
# инициализация репозиория
git init

# первая запись
echo 'первая строка для первого файла'  > file1.txt

# добавление всех новых файлов в индекс
git add -A

# первый коммит
git commit -ma 'первый коммит'

# первая запись
echo 'вторая строка для первого файла'  > file1.txt

# показать различия
git diff

В git проще осматривать изменения. Для сравнения файлов не под гитом используйте команды cmp, diff и sdiff. Гит нужно устанавливать и настраивать, а команды сравнения файлов всегда под рукой. Если вам интересен GIT, то советую почитать статьи из моей категории GIT.

Комментарии

реклама