expand
- expand – program użytkowy GNU coreutils (oraz w BSD, BusyBox), który konwertuje tabulacje (\t) w plikach lub strumieniach na odpowiednią liczbę spacji.
- Kluczowe zastosowania: standaryzacja formatowania kodu/logów, przygotowanie plików do narzędzi niewspierających tabulacji, porównywanie plików diff.
- Dostępny w większości dystrybucji Linux, macOS, BSD oraz w środowiskach POSIX.
Składnia
Dział zatytułowany „Składnia”expand [opcje] [plik...]
- Bez pliku działa na stdin → stdout (można używać w potokach).
- Wspólne przełączniki globalne:
-t
,-i
,--tabs=
,--help
,--version
.
Parametry
Dział zatytułowany „Parametry”Parametr | Opis |
---|---|
-t N lub --tabs=N | Ustaw stałą szerokość tab‑stopów na N kolumn (domyślnie 8). |
-t LISTA | Definiuje niestandardowe tab‑stopy, np. -t 4,8,12 . |
-i | Konwertuj tylko wiodące tabulacje (na początku wiersza). |
--help | Wyświetl pomoc i zakończ. |
--version | Wersja programu. |
Przykłady użycia
Dział zatytułowany „Przykłady użycia”# Podstawowa konwersja pliku z tabulacji na spacjeexpand raport.txt > raport_spacje.txt
# Użyj tab‑stopów co 4 kolumnyexpand -t 4 kod.c > kod_spacje.c
# Konwertuj tylko początkowe tabulacje w strumieniucat Makefile | expand -i
- Pierwszy przykład tworzy nowy plik, w którym wszystkie tabulacje zamieniono na 8 spacji.
- Drugi dopasowuje szerokość tab‑stopów do czterech znaków – przydatne w projektach z konwencjami 4‑spacjowymi.
- Trzeci stosuje się do wcięć na początku linii, pozostawiając tabulacje wewnątrz tekstu (np. w łańcuchach).
- expand nie modyfikuje oryginalnych plików in‑place; przekieruj wynik do nowego pliku lub użyj
sponge
z moreutils, jeśli potrzebny jest zapis nadpisujący. - Działa jednokierunkowo – odwrotna operacja to unexpand.
- Zachowanie względem znaków Unicode zależy od szerokości „kolumny” w terminalu; w skryptach warto testować wyjście.
- W środowiskach z CRLF (Windows) zaleca się uprzednią konwersję linii (
dos2unix
).
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 |
---|---|---|
invalid tab size | Nieprawidłowa wartość po -t (np. 0 lub znak nie‑numeryczny) | Użyj dodatniej liczby całkowitej >0 lub listy rosnącej. |
No such file or directory | Plik źródłowy nie istnieje | Sprawdź ścieżkę lub uprawnienia. |
write error | Brak miejsca na dysku lub brak uprawnień do zapisu | Zwolnij miejsce lub przekieruj do katalogu z prawami zapisu. |
Linki i źródła
Dział zatytułowany „Linki i źródła”- man expand – oficjalna strona podręcznika.
- GNU Coreutils Manual – expand – szczegółowa dokumentacja.
- The UNIX Programming Environment – kontekst historyczny konwersji tabulacji.