W powłokach Unix/Linux (np. bash) wynik działania programu trafia domyślnie na standardowe wyjście (stdout). Można go zapisać do pliku za pomocą operatorów przekierowania.
Dlaczego poprawne jest "dir /etc >> test.txt"?
Operator >> oznacza dopisywanie (append): jeżeli plik test.txt już istnieje, nowe linie zostaną dodane na jego końcu, a wcześniejsza zawartość pozostanie bez zmian. To dokładnie odpowiada warunkowi "bez utraty wcześniej zapisanych danych".
Dlaczego pozostałe składnie są błędne?
- "dir /etc < test.txt" używa <, czyli przekierowania wejścia (stdin) z pliku do programu. Nie służy do dopisywania wyniku polecenia do pliku.
- "dir /etc > test.txt" używa >, które zapisuje stdout do pliku, ale nadpisuje go (kasuje poprzednią zawartość i tworzy nową). To powodowałoby utratę danych.
- "dir /etc << test.txt" używa << (here-document). To mechanizm podawania wieloliniowego tekstu jako wejścia, a nie dopisywania wyniku polecenia do pliku.
Uwaga praktyczna: w Linuksie częściej spotyka się polecenie "ls", ale "dir" jest dostępne w GNU coreutils i również wypisuje listę plików. Kluczowe w tym zadaniu jest rozpoznanie działania operatora >>.
Wskazówka egzaminacyjna: gdy w treści pojawia się "dopisać" lub "bez utraty danych", najczęściej szukasz >>. Gdy jest "zapisać (zastąpić)", wtedy rozważasz >.