В Linux возможно создавать файлы с табуляциями, переносами строк и другими управляющими символами в имени.
Вот пример команды, которая создаёт такой дикий файл:
touch $'Иванов\t\t100руб.\nПетров\t\t200руб.\nСидоров\t\t150руб.'
Здесь надо обратить внимание на конструкцию $'строка'. Именно она позволяет внедрить в имя символы, которые для имён вообще не предназначены.
Выражения вида $'строка' обрабатываются особым образом. Выражение заменяется строкой, в которой предваренные обратным слешем символы заменяются в соответствии со стандартом ANSI C. Управляющие последовательности, начинающиеся с обратного слеша, декодируются следующим образом:
a сигнал (звонок) b забой e управляющий символ f прогон страницы n перевод строки r возврат каретки t горизонтальная табуляция v вертикальная табуляция \ обратный слеш ' апостроф \nnn символ с кодом ASCII nnn в восьмеричном виде (от одной до трех цифр) xnnn символ с кодом ASCII nnn в шестнадцатеричном виде (от одной до трех цифр)
Преобразованный результат помещается в одиночные кавычки, как если бы символа доллара просто не было.
Строка в двойных кавычках, перед которой идет символ доллара ($), будет преобразована в соответствии с текущей категорией локализации (locale). Если текущая категория локализации - C или POSIX, символ доллара игнорируется. Если строка преобразована и заменена, результат помещается в двойные кавычки.
Без него все управляющие символы просто вырезаются.
Созданный таким образом файл будет корректно отображаться во многих графических программах, например в наутилусе:
Или в табах текстового редактора gedit.
Для доступа же к такому файлу из консоли (для удаления, редактирования или просмотра содержимого) нужно ввести его полное имя, используя структуру с символом «$», как при создании. Автодополнение по кнопке Tab будет работать не во всех случаях. Например, оно корректно обработает переносы строк, но не сможет справиться с табуляцией.
В который раз убеждаюсь, что у этой ОС практически нет ограничений.
Единственные символы, которые нельзя использовать в именах файлов в Linux — это значок «/» (дробь, слэш), разделяющий каталоги, и код \0, задающий конец имени файла.