基本上我的问题是如何使用 bash shell 命令自动执行以下操作,这样我就可以轻松跟踪修改过的文件。
- 列出 svn check out 文件
- 在名为“change”的目录中创建指向上述文件的链接文件
laptop$ svn status -q
M rcms/src/config/ta_show.c
M rcms/src/config/ta_config.c
laptop$ cd change
laptop$ link -s ../rcms/src/config/ta_show.c ta_show.c
laptop$ link -s ../rcms/src/config/ta_config.c ta_config.c
laptop$ ls
lrwxrwxrwx 1 root root 59 Nov 27 12:24 ta_show.c -> ../rcms/src/config/ta_show.c
lrwxrwxrwx 1 root root 59 Nov 27 12:24 ta_config.c -> ../rcms/src/config/ta_config.c
我正在考虑使用如下的 shell 命令:
$ svn status -q | sed 's/M //' | xargs -I xxx ln -s ***BETWEEN REAL FILE AND BASE FILENAME***
最佳答案
你有两件事需要关心:
- svn 状态为'M'的每个文件之间的空行
- 提取文件名
awk one liner 可以做到:
awk '$0{x=$2;gsub(".*/","",x);print "ln -s ../"$2" "x}'
因此,如果您将 svn status
输出通过管道传输到上面的行,它会为您打印 ln -s
命令行。
如果您希望执行 ln -s 行,您可以将输出通过管道传递给 sh (svn status|awk ...|sh
) 或替换 print
与 system
最后我想以下面的输出为例:
kent$ echo "M rcms/src/config/ta_show.c
M rcms/src/config/ta_config.c"|awk '$0{x=$2;gsub(".*/","",x);print "ln -s .."$2" "x}'
ln -s ../rcms/src/config/ta_show.c ta_show.c
ln -s ../rcms/src/config/ta_config.c ta_config.c
关于bash - 如何使用shell命令检查SVN checkout 文件并在目录中创建链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13635279/