Добавление строки символов в начало всех файлов в данном каталоге

Последовательность <ESC>]0;(, показанная как \33]0;с помощью strace ), является escape-последовательностью для установки заголовка окна терминала. Он заканчивается символом BEL (\7), поэтому первый writeустанавливает заголовок окна. Второй печатает фактическую подсказку. Обратите внимание, что даже если не считать escape-последовательности, они не совсем одинаковы. Подсказка окружена [..], а заголовок окна — нет.

Мы также можем видеть, что первая запись идет на stdout (fd 1, первый аргумент — на write()), а второй — на stderr. Bash печатает приглашение в stderr, поэтому первая запись происходит откуда-то еще. Это где-то, вероятно, PROMPT_COMMAND, как в сценариях запуска Debian по умолчанию для Bash. Там есть что-то подобное:

case "$TERM" in
xterm*|rxvt*)
    PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD}\007"'
    ;;
*)
    ;;
esac

Он устанавливает, что PROMPT_COMMANDпри работе xtermили rxvt, которые должны поддерживать эту управляющую последовательность.

-1
19.11.2020, 15:19
1 ответ

Для этого можно использовать sedили awk.:

  • sed:
    sed '1i\user: XXX ; pass:YYY' *.kkk
    
  • awk:
    awk 'BEGIN{print "user: XXX ; pass:YYY"}1' *.kkk
    

Для редактирования файлов в -используйте опцию -iдля sed. Для awkэто работает только с GNU awkверсии 4.1 при использовании опции -i inplace.

Обновление :На этот вопрос уже есть ответы здесь и здесь(и, возможно, другие ).

1
18.03.2021, 22:48

Теги

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