Przejdź do głównej zawartości

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.

Okno terminala
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.

ParametrOpis
-t N lub --tabs=NUstaw stałą szerokość tab‑stopów na N kolumn (domyślnie 8).
-t LISTADefiniuje niestandardowe tab‑stopy, np. -t 4,8,12.
-iKonwertuj tylko wiodące tabulacje (na początku wiersza).
--helpWyświetl pomoc i zakończ.
--versionWersja programu.

Okno terminala
# Podstawowa konwersja pliku z tabulacji na spacje
expand raport.txt > raport_spacje.txt
# Użyj tab‑stopów co 4 kolumny
expand -t 4 kod.c > kod_spacje.c
# Konwertuj tylko początkowe tabulacje w strumieniu
cat 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).

Błąd / KomunikatPrzyczynaRozwiązanie
invalid tab sizeNieprawidł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 directoryPlik źródłowy nie istniejeSprawdź ścieżkę lub uprawnienia.
write errorBrak miejsca na dysku lub brak uprawnień do zapisuZwolnij miejsce lub przekieruj do katalogu z prawami zapisu.