Удаление связанной гибкой ссылки в Unix

в настоящее время я требуюсь для чистки моей proj области, но проблемой с комнатой, с которой я сталкиваюсь, является некоторая копия, остаются в диске
со связанным я имею в виду гибкую ссылку

A linked to B 
 B linked to C

C, который находится на другом каталоге A и B, находятся на той же папке

знайте, когда я буду работать

rm -rf A 

это удаляет только A & B, но C остаются на диске, как я могу удалить C из диска.. использование та же команда..

1
задан 02.09.2010, 13:35

2 ответа

Можно использовать realpath как это:

rm $(realpath A)

Установка примера:

$ cd $(mktemp -d)
$ pwd
/tmp/tmp.QwSuHKmWwE
$ touch C
$ ln -s C B
$ ln -s B A
$ stat -c "%N" *
`A' -> `B'
`B' -> `C'
`C'

Показ этого realpath делает то, что Вы хотите:

$ realpath A
/tmp/tmp.QwSuHKmWwE/C

Так выполнение rm $(realpath A) похож на выполнение rm C.

$ rm $(realpath A)
$ stat -c "%N" *
`A' -> `B'
`B' -> `C'

Или Вы хотели удалить все три файла?

В этом случае я думаю, что необходимо будет записать сценарий.

Вот что-то, что должно сделать задание:

#!/bin/bash

if test $# -eq 0; then
    echo "Usage: dellinks.sh <file>..." 1>&2
    exit 2
fi

if ! type readlink >/dev/null 2>&1; then
    echo "dellinks.sh: cannot find readlink program" 1>&2
    exit 1
fi

for file in "$@"; do
    while test -L "$file"; do
        target="$(readlink "$file")"
        rm "$file"
        file="$target"
    done
    if test -e "$file"; then
        rm "$file"
    fi
done

Пример:

$ stat -c "%N" *
`A' -> `B'
`B' -> `C'
`C'
$ ~/bin/dellinks.sh
Usage: dellinks.sh <file>...
$ ~/bin/dellinks.sh A
$ stat -c "%N" *
stat: cannot stat `*': No such file or directory
1
ответ дан 17.12.2019, 00:35

Можно попробовать

rm -fr `readlink B`

но это будет работать с B так как это удалит, это - цель C, но не с A потому что затем это только удалит B (Aцель).

но это может быть сделано легко с помощью сценария, который рекурсивно перейдет по ссылкам, пока они не доберутся не, связывают, затем передают его rm -fr

0
ответ дан 17.12.2019, 00:35

Теги

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