Pytanie dotyczy skryptowania powłoki w bash
.
Jak sprawdzić za pomocą skryptu, które pliki w bieżącym katalogu są miękkimi linkami?
W przypadku, gdy użyłem niewłaściwego terminu, kiedy mówię miękkie linki , mam na myśli pliki utworzone za pomocą ln -s
.
Jedyną rzeczą, o której udało mi się myśleć, jest ocena ls -la
jako wyrażenie i analiza jego wyników, ale oczywiście nie jest to najlepsze rozwiązanie.
bash
symbolic-link
ls
shell-script
ln
bguiz
źródło
źródło
Odpowiedzi:
Zobacz „WYRAŻENIA WARUNKOWE” w
man bash
- w tym przypadku chcesz-h
:źródło
test -h
jest tym, czego chciałem!Może naprawdę nie potrzebujesz skryptu. Aby wyświetlić dowolne dowiązania symboliczne tylko w bieżącym folderze, bez ponownego przechodzenia do dowolnego folderu podrzędnego:
Lub, aby uzyskać więcej informacji, użyj jednego z:
Aby stwierdzić, czy plik jest dowiązaniem symbolicznym, można użyć tego
readlink
, który nic nie wyświetli, jeśli nie jest dowiązaniem symbolicznym. Poniższy przykład nie jest całkiem użyteczny, ale pokazuje, jakreadlink
ignoruje normalne pliki i foldery. Użyj jednego z:Zauważ, że powyższe
-exec ... +
ixargs ...
są znacznie szybsze niż-exec ... \;
. Lubić:źródło
xargs
jest znacznie szybszy; zobacz moją edycję. Ale dowiedziałem się czegoś nowego dzisiaj: tam też+
zamiast\;
(choć niektórzy twierdzą, że to nie ma / miała problemy zgrep
.)