Я хотел бы изменить строку командной строки bash с
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
к
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
В частности, он меняет цвет с зеленого на красный путем изменения 32 на 31.
Я хотел бы изменить файл, а не развертывать / копировать в полном файле.
Я хотел бы выполнить поиск в файле и изменить строку, если она соответствует любому сценарию.
Я попытался экранировать все специальные символы, но регулярное выражение YAML жаловалось на \ и различные символы.
Даже если этому билету больше двух лет, я оказался в такой же ситуации.
Я немного попробовал и нашел решение этой проблемы
- name: Set default color in bash
lineinfile:
path: /home/example-user/.bashrc
regexp: "^ PS1='\\${debian_chroot:\\+\\(\\$debian_chroot\\)}\\\\\\[\\\\033\\[01;32m\\\\\\]\\\\u@\\\\h\\\\\\[\\\\033\\[00m\\\\\\]:\\\\\\[\\\\033\\[01;34m\\\\\\]\\\\w\\\\\\[\\\\033\\[00m\\\\\\]\\\\\\$ '"
line: " PS1='${debian_chroot:+($debian_chroot)}\\[\\033[01;32m\\]\\u\\[\\033[01;32m\\]@\\h\\[\\033[00m\\]:\\[\\033[01;34m\\]\\w\\[\\033[00m\\]\\$ '"
backup: yes
when: ansible_os_family == "Debian"
Надеюсь, это поможет и другим.
Почему бы просто не установить PS1 на желаемое значение?
- lineinfile:
create: yes
mode: 0600
dest: /root/.bash_aliases
owner: root
regexp: '^PS1='
line: 'PS1="${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ "'
state: present
В качестве внешних я использовал одинарные кавычки, поскольку для этого не требуется экранирование символов.