2

Обратите внимание, что я хочу, чтобы ввод пользователя имел только определенный цвет (слова, которые пользователь вводил с клавиатуры), а не фактический вывод команды.

Я старался:

export PS1="$ \033[38;5;154m"

Я знаю, что это должно быть закрыто с \033[m но я понятия не имею, как вставить его после того, как входные данные были отправлены в stdin.

export PS1="$ \033[38;5;154m$PS1\033[m"

Это тоже не работает.

Причина, по которой я хочу этого, состоит в том, чтобы можно было легко отличить команду ввода от ее вывода. Заранее спасибо.

3 ответа3

2

Я работал над этим и несколькими другими вещами в bash/ Terminal весь день, и подумал, что найду любые соответствующие вопросы и отвечу на них, если смогу хоть как-нибудь помочь - так что ниже .bashrc раскрасит термин Команда ввода зеленая, а выход будет стандартным белым. Фон все еще черный.

# ~/.bashrc: executed by bash(1) for non-login shells.

# Created by EDH automated script to set up terminal colors
# Ref: http://linux.die.net/man/1/echo
# Ref: https://www.kirsle.net/wizards/ps1.html#help
# Ref: https://wiki.archlinux.org/index.php/Color_Bash_Prompt
# Ref: http://linux.die.net/man/1/bash

# Note: reload settings w/o relogin; source ~/.bashrc

# for terminal line coloring
export PS1="\[$(tput sgr0)\]\[$(tput setaf 1)\]\u \[$(tput setaf 6)\]\w \[$(tput setaf 1)\]\\$ \[$(tput setaf 2)\]"
none="$(tput sgr0)"
trap 'echo -ne "${none}"' DEBUG

# ls dir coloring
export LS_OPTIONS='--color=auto'
eval "`dircolors`"
alias ls='ls $LS_OPTIONS'
alias ll='ls $LS_OPTIONS -l'
alias l='ls $LS_OPTIONS -lA'

Я попытался включить источники, где я их нашел! Надеюсь, это поможет, даже если это старая ветка.

2

Bash не сможет окрасить весь пользовательский ввод. UNIX является полнодуплексным, и все отображаемые данные поступают с компьютера с Unix, а не с эмулятора / клавиатуры локального терминала, поэтому эмулятор терминала (xterm?) Я не могу понять разницу, и bash контролирует только то, что он делает, а не то, что делает каждая программа.

Я использую подсказку другого цвета.

e=$'\e'
COLORblue="$e[0;34m"
COLORred="$e[0;31m"
COLORreset="$e[0m"
PC="$COLORblue"
if [[ "$EUID" -eq 0 ]]; then PC="$COLORred"; fi
PS1="\[$PC\]#===> \@ %\j / \u @ \h : \w/\n#===> \\\$ \[$COLORreset\]"

# Print when exit status is not 0 -- I like this too... shown in red
export PROMPT_COMMAND="x0=\$?;if ((\$x0 > 0)); then echo '${COLORred}# exit status = '\$x0' -- From PROMPT_COMMAND$COLORreset'; fi"

Может быть, проверить
https://stackoverflow.com/questions/6841143/how-to-set-font-color-for-stdout-and-stderr

1

Я не думаю, что вы можете получить другой цвет для команд ввода и их вывода. В любом случае вы, конечно, не можете сделать это, установив переменную PS1 . PS1 - это приглашение, текст отображается слева от того, что вы вводите. Например:

Вы можете изменить цвета терминала по умолчанию, изменив свой .Xdefaults и / или .Xresources . Посмотрите здесь, здесь и здесь для получения дополнительной информации.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .