в настоящее время я требуюсь для чистки моей proj области, но проблемой с комнатой, с которой я сталкиваюсь, является некоторая копия, остаются в диске
со связанным я имею в виду гибкую ссылку
A linked to B
B linked to C
C, который находится на другом каталоге A и B, находятся на той же папке
знайте, когда я буду работать
rm -rf A
это удаляет только A & B, но C остаются на диске, как я могу удалить C из диска.. использование та же команда..
Можно использовать 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
Можно попробовать
rm -fr `readlink B`
но это будет работать с B
так как это удалит, это - цель C
, но не с A
потому что затем это только удалит B
(A
цель).
но это может быть сделано легко с помощью сценария, который рекурсивно перейдет по ссылкам, пока они не доберутся не, связывают, затем передают его rm -fr