为 Cscope 打印符号链接的绝对路径
print absolut path of symbolic links for Cscope
因为 cscope 不会跟随(相对)符号链接,所以我需要一个技术来
收集(相对)符号链接背后的绝对路径。
示例:
如果我会在一个目录中找到所有的 c 文件,我会像这样使用 find 命令:
#!/bin/bash
LNX="/home/cabs/BUILD-ENV/Android_C1/kernel"
FILELOC="/home/cabs/BUILD-ENV/Scope_C1"
ANDROID="/home/cabs/BUILD-ENV/Android_C1"
echo "Android Files"
find $ANDROID \
-path "$ANDROID/bionic" -prune -o \
-path "$ANDROID/bootable" -prune -o \
-path "$ANDROID/build" -prune -o \
-path "$ANDROID/dalvik" -prune -o \
-path "$ANDROID/development" -prune -o \
-path "$ANDROID/device" -prune -o \
-path "$ANDROID/external" -prune -o \
-path "$ANDROID/frameworks" -prune -o \
-path "$ANDROID/hardware" -prune -o \
-path "$ANDROID/packages" -prune -o \
-path "$ANDROID/system" -prune -o \
-path "$ANDROID/vendor" -prune -o \
-name '*.java' -print -o \
-name '*.aidl' -print -o \
-name '*.hpp' -print -o \
-name '*.cpp' -print -o \
-name '*.xml' -print -o \
-name '*.mk' -print -o \
-name '*.[chxsS]' \
#-print >$FILELOC/cscope.files
现在我将获得一个包含所有所需路径的文件。
示例条目:
/home/cabs/BUILD-ENV/Android_C1/prebuilts/ndk/6/platforms/android-5/arch-arm/usr/include/arpa/nameser.h
但是这个条目可能是一个符号链接。 (cscope 无法处理)
符号链接可能类似于以下示例:
/home/cabs/BUILD-ENV/Android_C1/prebuilts/ndk/6/platforms/android-5/arch-arm/usr/include/arpa/nameser.h -> ../../../../../../platforms/android-4/arch-arm/usr/include/arpa/nameser.h
如何解析 'cscope.files' 文件,以便将原始条目(指向符号链接)替换为符号链接后面文件的绝对路径?strong text
使用 readlink
或 realpath
应该可以解决问题。
readlink -f symlinkName
realpath symlinkName
您可以直接在 find
命令中使用它们。
示例:
find . -exec realpath {} \;
因为 cscope 不会跟随(相对)符号链接,所以我需要一个技术来 收集(相对)符号链接背后的绝对路径。
示例:
如果我会在一个目录中找到所有的 c 文件,我会像这样使用 find 命令:
#!/bin/bash
LNX="/home/cabs/BUILD-ENV/Android_C1/kernel"
FILELOC="/home/cabs/BUILD-ENV/Scope_C1"
ANDROID="/home/cabs/BUILD-ENV/Android_C1"
echo "Android Files"
find $ANDROID \
-path "$ANDROID/bionic" -prune -o \
-path "$ANDROID/bootable" -prune -o \
-path "$ANDROID/build" -prune -o \
-path "$ANDROID/dalvik" -prune -o \
-path "$ANDROID/development" -prune -o \
-path "$ANDROID/device" -prune -o \
-path "$ANDROID/external" -prune -o \
-path "$ANDROID/frameworks" -prune -o \
-path "$ANDROID/hardware" -prune -o \
-path "$ANDROID/packages" -prune -o \
-path "$ANDROID/system" -prune -o \
-path "$ANDROID/vendor" -prune -o \
-name '*.java' -print -o \
-name '*.aidl' -print -o \
-name '*.hpp' -print -o \
-name '*.cpp' -print -o \
-name '*.xml' -print -o \
-name '*.mk' -print -o \
-name '*.[chxsS]' \
#-print >$FILELOC/cscope.files
现在我将获得一个包含所有所需路径的文件。
示例条目:
/home/cabs/BUILD-ENV/Android_C1/prebuilts/ndk/6/platforms/android-5/arch-arm/usr/include/arpa/nameser.h
但是这个条目可能是一个符号链接。 (cscope 无法处理)
符号链接可能类似于以下示例:
/home/cabs/BUILD-ENV/Android_C1/prebuilts/ndk/6/platforms/android-5/arch-arm/usr/include/arpa/nameser.h -> ../../../../../../platforms/android-4/arch-arm/usr/include/arpa/nameser.h
如何解析 'cscope.files' 文件,以便将原始条目(指向符号链接)替换为符号链接后面文件的绝对路径?strong text
使用 readlink
或 realpath
应该可以解决问题。
readlink -f symlinkName
realpath symlinkName
您可以直接在 find
命令中使用它们。
示例:
find . -exec realpath {} \;