回复:关于文件处理的Elisp课程(制作网站的可下载副本)

在本周,我撰写了一个归档的Emacs程序和教程
一个用于离线阅读的网站.
(请参阅http://xahlee.org/emacs/make_download_copy.html)
在此过程中,我遇到了UNIX cp效用的问题.我有
在1998 - 2004年担任Solaris的Unix管理员.即使是我第一次
了解了CP,我注意到了一些特性.但是只有今天,我才想到
关于它,并将其准确地写出来.
这是我上面关于该问题的Emacs教程的摘录.
------------------------
复制一堆目录似乎是一个琐碎的操作,但是
实际上,我花了几个小时才能得出最终代码
目录路径的确切要求和Unixcpâtoot的确切要求
缺乏精度和灵活性.
最初,我认为代码很简单,就像几个
(shell -command(Concat" cp -r" fromdir"" todir)),每个
来源dir,fromdir和todir是完整的路径.但是,它转弯
解决问题稍复杂.
假设源是/用户/xah/web/emacsâ和dest dir是/
用户/xah/web/diklo/xahtut/emacsâ,我想要所有分支机构
来源dir复制到了der dir.
如果您执行cp -r/users/xah/web/emacs/users/xah/web/diklo/xahtut/
没有Xahtut和Xahtut/emacs的emacs,那么
错误结果:cp:/users/xah/web/diklo/xahtut/emacs:没有这样的fileor
目录.
如果您执行cp -r/users/xah/web/emacs/users/xah/web/diklo/xahtut/
存在Xahtut/emacs的emacs,然后您有/users/xah/web/diklo/
Xahtut/emacs/emacsâ,这不是我想要的.
如果您执行cp -r/users/xah/web/emacs/users/xah/web/diklo/xahtutâ
由于Xahtut不存在,它会导致所有emacs的分支
Xahtut,这是错误的.
只有在您进行cp -r/users/xah/web/emacs/users/xah/web/diklo/
Xahtutâ与Xahtut存在,您将获得正确的结果
dir - /xah/web/diklo/xahtut/emacs都有所有分支
原始DIR.
因此,解决方案是首先创建DEST的所有父级
dir,但没有dent dir节点本身.然后,对第一个进行CP
DENT DIR的父母.
目录是抽象的树.复制目录就像
将树从一个分支嫁接到另一个分支.首先,我们是
给定两个规格:源节点和目标节点.来源
按定义,节点是现有节点(即现有的dir或file),
否则,复制将没有意义.但是,目标规范
可以是不存在的节点,或者其父母不存在,或者
不存在几个级别的父母.当目标规范具有
缺少节点,我们可以考虑将它们创建为嫁接的一部分
流程,否则我们可以将其视为错误.
UNIXcpâ工具的行为在数学上是不一致的.当...的时候
存在目的地节点,源节点将成为
目标节点.当目标节点不存在时(但
父母存在),CP将创建 节点,只复制孩子 源节点的. 当目标节点不存在时 它的父母都不存在,因此CP认为它是错误的. ------------------------ 相关读数: •Unix哲学的本质http://xahlee.org/unixresource_dir/writ/writ/unix_phil.html XAH http://xahlee.org/

# 回答1

在7月6日,上午4:05," xah ...@gmail.com"
# 回答2

Xah Lee写道: 一个" ... eMacs程序和教程,该网站归档 离线阅读. (请参阅http://xahlee.org/emacs/make_download_copy.html ) 一个" 萨希写道: ««为什么不使用wget或curl?» EMACS LISP程序制作了您拥有的网站部分的档案,因此 您网站的读者可以单击下载以脱机阅读. 对于WGET和Curl,我在这里有一些提示:http://xahlee.org/unixresource_dir/unix_tips.html XAH http://xahlee.org/

标签: python

添加新评论