Команда expand позволяет задействовать одноименную утилиту, предназначенную для замены символов табуляции на символы пробелов в текстовых файлах. Необходимость в выполнении описанной операции возникает крайне редко, главным образом при работе с исходным кодом программных компонентов, тем не менее, о существовании рассматриваемой утилиты все же стоит знать. Кроме того, следует знать о том, что существует команда, работающая ровно противоположным образом — это команда unexpand.
Базовый синтаксис команды выглядит следующим образом:
$ expand [параметры] имя-файла
Очевидно, что по умолчанию утилита выводит обработанное содержимое текстового файла с помощью стандартного потока вывода. Если вам понадобится сохранить его в отдельном файле, вы можете воспользоваться функцией перенаправления вывода командной оболочки (как вы наверняка помните, символ > позволяет перенаправить стандартный поток вывода утилиты в файл с заданным именем с предварительным удалением содержимого этого файла в случае его существования, а последовательность символов >> - дописать данные из стандартного потока вывода утилиты в конец существующего текстового файла с заданным именем). Утилита поддерживает небольшое количество параметров, причем наиболее важными являются параметр -i, позволяющий заменять лишь начальные символы табуляции в строках (то есть, те символы, перед которыми не расположено каких-либо отличных от символов табуляции символов) и параметр -t, позволяющий задать количество пробелов, используемое при замене каждого из символов табуляции.
Предположим, что у нас имеется файл исходного кода sample1.c со следующим содержимым:
Несложно заметить, что для обозначения отступов в нем используются символы табуляции. Если же нам понадобится заменить каждый из начальных символов табуляции на последовательность из двух пробелов, нам придется воспользоваться следующей командой:
$ expand -i -t 2 sample1.c > sample2.c
В результате в директории с файлом sample1.c будет создан файл sample2.c, в котором каждый начальный символ табуляции будет заменен на два пробела. Параметр -i используется для указания на то, что нужно заменять лишь начальные символы табуляции, а параметр -t 2 — для указания на то, что каждый символ табуляции должен заменяться на два символа пробела. А это содержимое результирующего файла sample2.c:
Очевидно, что утилита не осуществила преобразования каких-либо символов за исключением символов табуляции, следовательно программа будет корректно компилироваться и функционировать.