tsort
- tsort – narzędzie realizujące sortowanie topologiczne grafu skierowanego acyklicznego (DAG) na podstawie par relacji „poprzednik → następnik”.
- Używane do ustalania kolejności przetwarzania obiektów, które mają między sobą zależności (np. w kompilatorach, skryptach budujących, przetwarzaniu danych).
- Część pakietu GNU coreutils, dostępna na większości dystrybucji Linuksa oraz w systemach UNIX/BSD.
Składnia
Dział zatytułowany „Składnia”tsort [PLIK]
- Bez argumentu – czyta dane z stdin.
- Wspólne przełączniki globalne:
--help
,--version
.
Parametry
Dział zatytułowany „Parametry”Parametr | Opis |
---|---|
PLIK | Plik zawierający listę par wierzchołków (po jednym lub więcej wierszy), opisujących krawędzie grafu. |
--help | Wyświetla pomoc. |
--version | Wyświetla wersję programu. |
Przykłady użycia
Dział zatytułowany „Przykłady użycia”# 1) Proste sortowanie topologicznecat <<EOF | tsorta bb ca cEOF
Efekt: zwróci kolejność a
, b
, c
zgodną z zależnościami.
# 2) Dane z plikucat zaleznosci.txt# a b# b d# a ctsort zaleznosci.txt
Efekt: kolejność spełniająca wszystkie zależności z pliku.
# 3) Użycie w potoku do wyznaczenia kolejności budowaniafind src -type f -name '*.dep' | xargs cat | tsort
Efekt: ustala kolejność kompilacji plików źródłowych w oparciu o ich zależności.
- Format wejścia: dane to lista par elementów; każda para oznacza krawędź „pierwszy poprzedza drugi”. Liczba wierszy musi być parzysta.
- Cykl w grafie: jeśli dane zawierają cykl,
tsort
zakończy działanie z komunikatem o błędzie. - Brak duplikatów: powtarzające się krawędzie są ignorowane.
- Bez etykietowania:
tsort
traktuje dane jako ciągi znaków rozdzielane białymi znakami, nie interpretuje ich semantycznie.
Najczęściej spotykane błędy i jak je naprawić
Dział zatytułowany „Najczęściej spotykane błędy i jak je naprawić”Błąd / Komunikat | Przyczyna | Rozwiązanie |
---|---|---|
tsort: input contains a loop: | W danych wejściowych występuje cykl. | Usuń lub zmodyfikuj zależności, aby graf był acykliczny. |
tsort: odd number of fields | Nieparzysta liczba słów w danych wejściowych. | Upewnij się, że dane zawierają kompletne pary poprzednik następnik . |
Brak wyniku | Brak danych wejściowych lub graf pusty. | Podaj pary wierzchołków opisujące zależności. |
Linki i źródła
Dział zatytułowany „Linki i źródła”- man tsort – oficjalna dokumentacja.
- GNU coreutils – „tsort invocation” – opis działania i opcji.
- Sortowanie topologiczne – Wikipedia – teoria i zastosowania.