我想在文件之间进行区分,一个是本地的,另一个是在线的,例如使用
opendiff http://www.tex.ac.uk/ctan/web/lua2dox/Doxyfile Doxyfile
但它抛出了以下错误:
2014-02-12 15:23:43.579 opendiff[7250:1007]/Users/Dev/Joker/http://www.tex.ac.uk/tan/web/loa2dox/Doxyfile不存在
那么我如何像使用本地文件一样使用在线文件呢?
由于这是一个编程问答;一个网站,我们不妨写一个程序为我们做这件事:-)
您可以为OpenDiffWeb
创建一个名为(例如)odw
的脚本,该脚本将检测您是否试图访问基于web的文件,并首先将其下载到临时位置。
检查下面的脚本,它非常初级,但它显示了可以采取的方法。
#!/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
在这种情况下,我们将基于web的文件检测为以http://
开头的文件。如果是,我们只需使用wget
将其降到一个临时位置。两个文件都以这种方式进行检查。
一旦两个文件都在本地磁盘上(要么是因为它们被关闭,要么是因为thet已经在那里),您就可以运行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类型的能力,删除信号上的临时文件的能力等等
但希望这足以让你开始。