Можно ли сделать это более красиво (укажите заполнитель для другой команды)
echo $(for x in *;do echo $x|sed 's/\([ \t\n\r\v\f\;#]\)/\^\1/g'|sed 's/$/\;/g';done)
Кроме того, не должно быть; после последнего имени файла.
Пример использования команды doit:
doit files[ list-of-files ] 'flags[foo;bar;other^ flag]options[value^ 1[1]value^ array[1;2;3]]'
и т.п.
Можно избежать пробелов внутри (в doit), так как он не влияет на токенизатор doits (он просто съедает все пробелы, не следующие за ^). Помимо хорошей расширяемости синтаксиса, код для чтения файлов конфигурации и командной строки одинаков.
Sed вещь работает, ожидайте, что она добавляет; слишком много в конце. Тем не менее, логика для добавления; внутри doit не сложно реализовать, поэтому этот последний шаг не является обязательным. Что мне не нравится, так это то, что мне нужен цикл, чтобы избежать каждого аргумента в отдельности. Просто эхо * | sed ... не будет этого делать, поскольку echo уничтожает информацию (печатая все, что разделено пробелами).
Аналогичная проблема: я хочу добавить echo ~/my_progs/* двоеточие, отделенное от переменной пути.