Opendiff и онлайн файл
Я хотел бы сделать различие между файлом, один локальный, а другой онлайн, например,
opendiff http://www.tex.ac.uk/ctan/web/lua2dox/Doxyfile Doxyfile
Но это выдает следующую ошибку:
2014-02-12 15: 23: 43.579 opendiff [72650: 1007] /Users/Dev/Joker/http:/www.tex.ac.uk/ctan/web/lua2dox/Doxyfile не существует
Итак, как я могу использовать онлайн-файл так же, как локальный?
1 ответ
Поскольку это сайт вопросов и ответов по программированию, мы можем также написать программу, которая сделает это для нас:-)
Вы можете создать скрипт под названием (например) odw
за OpenDiffWeb
которая обнаружит, пытаетесь ли вы получить доступ к веб-файлам и сначала загрузите их во временную папку.
Изучите следующий сценарий, он довольно прост, но показывает подход, который можно использовать.
#!/bin/bash
# Ensure two parameters.
if [[ $# -ne 2 ]] ; then
echo Usage: $0 '<file/url-1> <file/url-2>'
exit 1
fi
# Download first file if web-based.
fspec1=$1
if [[ $fspec1 =~ http:// ]] ; then
wget --output-document=/tmp/odw.$$.1 $fspec1
fspec1=/tmp/odw.$$.1
fi
# Download second file if web-based.
fspec2=$2
if [[ $fspec2 =~ http:// ]] ; then
wget --output-document=/tmp/odw.$$.2 $fspec2
fspec2=/tmp/odw.$$.2
fi
# Show difference of two files.
diff $fspec1 $fspec2
# Delete them if they were web-based.
if [[ $fspec1 =~ /tmp/odw. ]] ; then
rm -f $fspec1
fi
if [[ $fspec2 =~ /tmp/odw. ]] ; then
rm -f $fspec2
fi
В этом случае мы обнаруживаем веб-файл как файл, начинающийся с http://
, Если это так, мы просто используем wget
чтобы привести его во временное место. Оба файла проверяются таким образом.
Когда оба файла находятся на локальном диске (либо потому, что они были сбиты, либо потому, что они уже были там), вы можете запустить diff
- Я использовал стандарт diff
но вы можете заменить свой собственный.
Затем временные файлы очищаются.
В качестве теста я скачал страницу http://www.example.com
и сделал небольшое изменение, затем сравнил страницу с моей измененной локальной копией:
pax> odw http://www.example.com example.txt
--2014-09-25 16:40:02-- http://www.example.com/
Resolving www.example.com (www.example.com)... 93.184.216.119,
2606:2800:220:6d:26bf:1447:1097:aa7
Connecting to www.example.com (www.example.com)|93.184.216.119|:80...
connected.
HTTP request sent, awaiting response... 200 OK
Length: 1270 (1.2K) [text/html]
Saving to: `/tmp/odw.6569.1'
100%[=================================>] 1,270 --.-K/s in 0s
2014-09-25 16:40:02 (165 MB/s) - `/tmp/odw.6569.1' saved [1270/1270]
4c4
< <title>Example Domain</title>
---
> <title>Example Domain (slightly modified)</title>
Теперь есть все виды добавленных вещей, которые могут войти в этот скрипт, возможность передавать флаги diff
а также wget
программы, возможность обработки других типов URL, удаление временных файлов по сигналам и так далее.
Но, надеюсь, этого будет достаточно, чтобы вы начали.