Последствия использования простой строковой команды вместо функции в .bashrc (особенно для PROMPT_COMMAND и PS1)

С помощью GNU split вы можете сохранить заголовок в переменной, а затем разделить , начиная со 2-й строки, используя параметр - filter , чтобы сначала записать заголовок, а затем 99 строк для каждой части, а также указать выходной каталог (например, путь к / output dir / ):

header=$(head -n 1 infile.txt)
export header
tail -n +2 infile.txt | split -l 99 -d --additional-suffix=.txt \
--filter='{ printf %s\\n "$header"; cat; } >path\ to/output\ dir/$FILE' - file_

this создаст фрагменты из 100 строк как

path to/output dir/file_01.txt
path to/output dir/file_02.txt
path to/output dir/file_03.txt
..............................
1
01.05.2019, 12:18
1 ответ

Файл .bashrcанализируется один раз при каждом запуске нового сеанса терминала.

Во время синтаксического анализа функция prompt_commandдобавляется к переменной среды, но нет ни шага компиляции, ни «объекта», созданного, поскольку Bash является языком интерпретатора с одним -проходом .

Когда в моем терминале вводится новая строка, выполняется PROMPT_COMMAND, что эффективно извлекает prompt_commandиз переменных окружения (так же, как я мог бы набрать prompt_commandв своей оболочке )и выполнить это построчно. Следовательно, поведение аналогично прямому назначению команды на PROMPT_COMMAND. Прямое присваивание должно быть даже (незаметно )быстрее, поскольку оно позволяет избежать необходимости извлечения переменной окружения.

0
28.01.2020, 00:12

Теги

Похожие вопросы