#!/bin/bash
# Wyszukuje dowiązania do podanego pliku
# Składnia: lnks plik [katalog]
if [ $# -eq 0 -o $# -gt 2 ]; then
echo "Składnia: lnks plik [katalog]" 1>&2
exit 1
fi
if [ -d "$1" ]; then
echo "Pierwszy argument nie może być nazwą katalogu." 1>&2
echo "Składnia: lnks plik [katalog]" 1>&2
exit 1
else
file="$1"
fi
if [ $# -eq 1 ]; then
directory="."
elif [ -d "$2" ]; then
directory="$2"
else
echo "Opcjonalny, drugi argument musi być nazwą katalogu." 1>&2
echo "Składnia: lnks plik [katalog]" 1>&2
exit 1
fi
# Sprawdza, czy plik istnieje i czy jest to zwykły plik
if [ ! -f "$file" ]; then
echo "lnks: $file nie został znaleziony lub jest plikiem specjalnym" 1>&2
exit 1
fi
# Sprawdź liczbę twardych dowiązań do pliku
set -- $(ls -l "$file")
linkcnt=$2
if [ "$linkcnt" -eq 1 ]; then
echo "lnks: nie znaleziono twardych dowiązań do pliku $file" 1>&2
exit 0
fi
# Pobierz i-węzeł danego pliku
set $(ls -i "$file")
inode=$1
# Odszukaj i wyświetl na ekranie pliki powiązane z tym numerem i-węzła
echo "lnks: używam polecenia find do wyszukiwania twardych dowiązań..." 1>&2
find "$directory" -xdev -inum $inode -print
