web-dev-qa-db-ja.com

bashプロンプトで色を変更する方法

私は herehowto link の指示に従っています。しかし、現在私はそれを次のように設定しているので、さまざまな部分の色をどのように変更できるかを言っているようには見えません。

PS1='${debian_chroot:+($debian_chroot)}[\t] \u@\h:\w\$ '

しかし、テキストはまだすべて白ですが、おそらく時間の数字を緑に、ユーザー名とコンピューター名を水色にするにはどうすればよいでしょうか? Ubuntu GNOME 15.04を実行しています。

8
user364819

まず、〜/ .bashrcファイルを開き、カラープロンプトを有効にします。

nano ~/.bashrc

コメントを外してから#force_color_Prompt=yes

次に、PS1の行を直接変更しますnder the if [ "$color_Prompt" = yes ]; then

に:

PS1='${debian_chroot:+($debian_chroot)}\[\033[00;32m\][\t] \[\033[01;34m\]\u@\h:\w\$ '  

ご覧のとおり、01:34mは水色で、00:32mは緑です。明るい緑は、00:32mではなく01:32mになります。

押す CTRL + o を押します ENTER ファイルを保存します。押す CTRL + x nanoを終了します。

次に、次のコマンドを実行して、bashrcファイルを「ソース」することで変更を適用します。

. ~/.bashrc

これで、ユーザーの下で新しく開いたすべての端末に変更が適用されます。

詳細はここをクリック

12
mchid

ここに私の友人と私が取り組んでいるものがあります。通常のユーザーの場合は灰色の破線が表示され、ルートユーザーとしてコマンドを実行している場合は、破線とテキストの両方で赤色に変わります。

enter image description here

.bashrcファイルで、ファイルの下部に次のコードを追加します。

if [ -f "$HOME/.bash_ps1" ]; then
    . "$HOME/.bash_ps1"
fi

EDIT:また、/root/.bashrcの下部にも追加します。これは、コマンドSudo su -を発行してrootユーザーに切り替える場合に使用します。 (編集の残りはコードの下に続きます)

次に、このコードの残りをコピーして、/home/<username>/.bash_ps1という新しいファイルに貼り付けます

# Fill with minuses
# (this is recalculated every time the Prompt is shown in function Prompt_command):
fill="--- "

reset_style='\[\033[00m\]'

# determine if root or not
a=$(id|awk -F\( '{print $1}')
if [ "$a" = "uid=0" ]
then
    # for root
    status_style=$reset_style'\[\033[1;31m\]' # bold red; use 0;37m for lighter color
    command_style=$reset_style'\[\033[1;31m\]' # bold red
else
    # for other users
    status_style=$reset_style'\[\033[0;90m\]' # gray color; use 0;37m for lighter color
    command_style=$reset_style'\[\033[1;29m\]' # bold black
fi
Prompt_style=$reset_style

# Prompt variable:

PS1="$status_style"'$fill $(date +"%m/%d/%y ")\t\n'"$Prompt_style"'${debian_chroot:+($debian_chroot)}\u@\h:\w\$'"$command_style "

# Reset color for command output
# (this one is invoked every time before a command is executed):
trap 'echo -ne "\033[00m"' DEBUG

function Prompt_command {
# create a $fill of all screen width minus the time string and a space:
let fillsize=${COLUMNS}-18
fill=""
while [ "$fillsize" -gt "0" ]
do
    fill="-${fill}" # fill with underscores to work on
    let fillsize=${fillsize}-1
done

# If this is an xterm set the title to user@Host:dir
case "$TERM" in
    xterm*|rxvt*)
    bname=$(basename "${PWD/$HOME/~}")
    echo -ne "\033]0;${bname}: ${USER}@${HOSTNAME}: ${PWD/$HOME/~}\007"
    ;;
    *)
    ;;
esac
}

Prompt_COMMAND=Prompt_command

EDIT(パート2):.bash_ps1フォルダーに/rootへのリンクを作成します

Sudo -s
cd /root
ln -s /home/<username>/.bash_ps1

上記のコードは、ニーズに合わせて変更できます。これは実際に職場で使用しているものなので、潜在的に危険な可能性のあるrootユーザーとしてコマンドを入力しているかどうかがわかります。さらに、入力した各行のすぐ上にタイムスタンプが表示されるため、スクロールして戻ってそのコマンドを入力したときを見ると少し簡単になります。

これがお役に立てば幸いです!

10
Terrance