Как проверить ссылку на ссылку?

Prueba esto:

find /data/my_project -type f -name '*.php' -exec \
bash -c 'grep -q AAA "$1" && ! grep -q BBB "$1" && echo "$1"' -- {} \; \
> /tmp/class_list.txt
5
10.04.2019, 10:07
2 ответа

Используйте тест -L (без readlink ), чтобы проверить, является ли файл символической ссылкой.

if [ -L hellolink2 ]

Используйте realpath, чтобы получить абсолютный путь символической ссылки на каталог.

$ realpath hellolink2
/home/ralph/subdir1/hellolink
1
27.01.2020, 20:42

Что бы это ни стоило... следуя предложениям в комментариях выше, я переписал код, который дает мне файл, на который указывает ссылка, даже если это другая ссылка, плюс несколько строк для проверки:

#!/bin/bash

function nextlinked ()
{
        if [ -h "$1" ]; then    # we have a link
                linked="$(readlink "$1")"
                [ "${linked:0:1}" == / ] && echo "$linked" || echo "${1%/*}"/"$linked"
        fi
}

header=""
add="   "
count=0

find / -print0 | while read -rd '' FILENAME ; do
        (( count++ ))
        if [ -h "$FILENAME" ] ; then # is this a link?
                filename="$FILENAME"
                printf "%6d " $count ; ls -ld "$filename" 2>&1
                filename="$(nextlinked "$filename" )"
                while [ "$filename" ] ; do
                        header=$header$add
                        printf "%6d %s" $count "$header" ; ls -ld "$filename" 2>&1
                        filename="$(nextlinked "$filename")"
                done
                header=""
        fi
done

Вопрос остается в силе. :Существует ли в Linux команда, выполняющая работу функции nextlinked?

0
27.01.2020, 20:42

Теги

Похожие вопросы