Odpowiedzi:
Na pytanie tytułowe: Nie. Przejście stdin
z zawartości pliku ( przekierowanie danych wejściowych ) nie jest tym samym, co przesyłanie danych wyjściowych jednego programu do danych wejściowych innego programu.
Ale ponieważ cat
faktycznie drukujesz zawartość pliku, wynik jest w rzeczywistości taki sam w tym przykładzie.
Ale nawet tylko następujące wyniki dają bardzo różne wyniki:
$ cat * | sort
$ sort < *
Jeśli istnieje więcej niż jeden pasujący plik, ten ostatni wygeneruje
-bash: *: ambiguous redirect
ponieważ nie jest tak elastyczny jak poprzedni, który przechwytuje wszystkie pasujące pliki i przesyła je jako dane wejściowe sort
.
sort < txtfile
znacznie bardziej wydajny niż cat txtfile | sort
?
sort *
? Brak bezużytecznego korzystania z cat, bezużyteczne korzystanie z pośrednictwa, najkrótsze w pisaniu, najłatwiejsze do wymyślenia, i uważam, że GNU sort zajmie się optymalizacją skalowalności dla bardzo dużych plików (nie jestem tego pewien - na wpół coś tam pamięta)