質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

font

近年は、コンピュータ上、紙面上で利用できる書体データのことをfontといいます。数える時の単位は「書体」で、データとしてのフォントは、デジタルフォントと呼ばれる場合があります。 HTML/CSSでは要素を指定し、フォント情報を調整することができます。

Q&A

解決済

2回答

3738閲覧

bashで、\e[0mを指定したときの色を白に戻したい

sugirin

総合スコア7

bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

font

近年は、コンピュータ上、紙面上で利用できる書体データのことをfontといいます。数える時の単位は「書体」で、データとしてのフォントは、デジタルフォントと呼ばれる場合があります。 HTML/CSSでは要素を指定し、フォント情報を調整することができます。

0グッド

0クリップ

投稿2016/12/16 06:28

編集2016/12/19 05:09

###実現したいこと
bashにおいて、\e[0mを指定した時の文字色を白に戻したい。

###発生している問題・エラーメッセージ
dir_colorsを変更してみたり、プロンプトをいじったりしているうちに、\e[0mを指定した時にシアンで文字が表示されるようになってしまいました。
\e[0mはデフォルトの色に戻すという説明が多いのですが、デフォルトがシアンになってしまっているのでしょうか?
そうだとしたら、デフォルトを白に戻す方法はありますか?
ls -al --color=autoコマンドの実行結果
途中まで白で表示されているのは、DEBUGシグナルをtrapして\e[37mを書き出しているためです。
3行目以降の情報部分がシアンになっています。
また、lessやviコマンドでも白ではなくシアンで表示されてしまいます。

###試したこと
次善の策として、DEBUGシグナルでtrapして\e[37mを書き出すようにしたところ、ls -l --color=autoで途中まで白、あとはシアンで表示されるようになってしまいました。

12/19追記
以下のコードを実行した結果を載せます。

lang=shellscript

1echo -ne '\e]PF123456' 2for y in {0..15}; do 3 [ $y -eq 0 ] && echo " 0 1 2 3 4 5 6 7 8 9 A B C D E F" 4 printf "%X0 " $y 5 for x in {0..15}; do 6 color=`expr $y \* 16 + $x` 7 echo -n -e "\033[48;05;${color}m \033[m" 8 done 9 echo 10done 11echo -ne '\e]R' 12for y in {0..15}; do 13 [ $y -eq 0 ] && echo " 0 1 2 3 4 5 6 7 8 9 A B C D E F" 14 printf "%X0 " $y 15 for x in {0..15}; do 16 color=`expr $y \* 16 + $x` 17 echo -n -e "\033[48;05;${color}m \033[m" 18 done 19 echo 20done

結果
上記のコード実行結果
カラーパレットを変更やリセットしてみても変化が見られず…。
書き方が間違っているのでしょうか。
それともechoするのではないのでしょうか…?

###~/.bashrcの関係ありそうな部分

eval $(dircolors -b ~/.dir_colors) trap 'echo -ne "\e[37m"' DEBUG

###~/.dir_colors

# Configuration file for dircolors, a utility to help you set the # LS_COLORS environment variable used by GNU ls with the --color option. # Copyright (C) 1996, 1999-2011 Free Software Foundation, Inc. # Copying and distribution of this file, with or without modification, # are permitted provided the copyright notice and this notice are preserved. # The keywords COLOR, OPTIONS, and EIGHTBIT (honored by the # slackware version of dircolors) are recognized but ignored. # Below, there should be one TERM entry for each termtype that is colorizable TERM Eterm TERM ansi TERM color-xterm TERM con132x25 TERM con132x30 TERM con132x43 TERM con132x60 TERM con80x25 TERM con80x28 TERM con80x30 TERM con80x43 TERM con80x50 TERM con80x60 TERM cons25 TERM console TERM cygwin TERM dtterm TERM eterm-color TERM gnome TERM gnome-256color TERM jfbterm TERM konsole TERM kterm TERM linux TERM linux-c TERM mach-color TERM mlterm TERM putty TERM rxvt TERM rxvt-256color TERM rxvt-cygwin TERM rxvt-cygwin-native TERM rxvt-unicode TERM rxvt-unicode-256color TERM rxvt-unicode256 TERM screen TERM screen-256color TERM screen-256color-bce TERM screen-bce TERM screen-w TERM screen.Eterm TERM screen.rxvt TERM screen.linux TERM terminator TERM vt100 TERM xterm TERM xterm-16color TERM xterm-256color TERM xterm-88color TERM xterm-color TERM xterm-debian # Below are the color init strings for the basic file types. A color init # string consists of one or more of the following numeric codes: # Attribute codes: # 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed # Text color codes: # 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white # Background color codes: # 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white NORMAL 00 # no color code at all FILE 00 # regular file: use no color at all RESET 0 # reset to "normal" color DIR 01;36 # directory LINK 01;31 # symbolic link. (If you set this to 'target' instead of a # numerical value, the color is as for the file pointed to.) MULTIHARDLINK 00 # regular file with more than one link FIFO 40;33 # pipe SOCK 01;35 # socket DOOR 01;35 # door BLK 40;33;01 # block device driver CHR 40;33;01 # character device driver ORPHAN 40;31;01 # symlink to nonexistent file, or non-stat'able file SETUID 37;41 # file that is setuid (u+s) SETGID 30;43 # file that is setgid (g+s) CAPABILITY 30;41 # file with capability STICKY_OTHER_WRITABLE 30;42 # dir that is sticky and other-writable (+t,o+w) OTHER_WRITABLE 34;42 # dir that is other-writable (o+w) and not sticky STICKY 37;44 # dir with the sticky bit set (+t) and not other-writable # This is for files with execute permission: EXEC 01;32 # List any file extensions like '.gz' or '.tar' that you would like ls # to colorize below. Put the extension, a space, and the color init string. # (and any comments you want to add after a '#') # If you use DOS-style suffixes, you may want to uncomment the following: #.cmd 01;32 # executables (bright green) #.exe 01;32 #.com 01;32 #.btm 01;32 #.bat 01;32 # Or if you want to colorize scripts even if they do not have the # executable bit actually set. #.sh 01;32 #.csh 01;32 # archives or compressed (bright red) .tar 01;31 .tgz 01;31 .arj 01;31 .taz 01;31 .lzh 01;31 .lzma 01;31 .tlz 01;31 .txz 01;31 .zip 01;31 .z 01;31 .Z 01;31 .dz 01;31 .gz 01;31 .lz 01;31 .xz 01;31 .bz2 01;31 .bz 01;31 .tbz 01;31 .tbz2 01;31 .tz 01;31 .deb 01;31 .rpm 01;31 .jar 01;31 .war 01;31 .ear 01;31 .sar 01;31 .rar 01;31 .ace 01;31 .zoo 01;31 .cpio 01;31 .7z 01;31 .rz 01;31 # image formats .jpg 01;35 .jpeg 01;35 .gif 01;35 .bmp 01;35 .pbm 01;35 .pgm 01;35 .ppm 01;35 .tga 01;35 .xbm 01;35 .xpm 01;35 .tif 01;35 .tiff 01;35 .png 01;35 .svg 01;35 .svgz 01;35 .mng 01;35 .pcx 01;35 .mov 01;35 .mpg 01;35 .mpeg 01;35 .m2v 01;35 .mkv 01;35 .webm 01;35 .ogm 01;35 .mp4 01;35 .m4v 01;35 .mp4v 01;35 .vob 01;35 .qt 01;35 .nuv 01;35 .wmv 01;35 .asf 01;35 .rm 01;35 .rmvb 01;35 .flc 01;35 .avi 01;35 .fli 01;35 .flv 01;35 .gl 01;35 .dl 01;35 .xcf 01;35 .xwd 01;35 .yuv 01;35 .cgm 01;35 .emf 01;35 # http://wiki.xiph.org/index.php/MIME_Types_and_File_Extensions .axv 01;35 .anx 01;35 .ogv 01;35 .ogx 01;35 # audio formats .aac 00;36 .au 00;36 .flac 00;36 .mid 00;36 .midi 00;36 .mka 00;36 .mp3 00;36 .mpc 00;36 .ogg 00;36 .ra 00;36 .wav 00;36 # http://wiki.xiph.org/index.php/MIME_Types_and_File_Extensions .axa 00;36 .oga 00;36 .spx 00;36 .xspf 00;36

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

もしかして、カラーパレットを書き換えてしまっていないでしょうか。

多くのLinuxディストリビューションでは、「\e]R」でカラーパレットをリセットできるようです (「\e]Pnrrggbb」でパレット設定)。

cf. console_codes(4)

投稿2016/12/16 08:06

ikedas

総合スコア4315

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sugirin

2016/12/16 10:04

ご回答ありがとうございます。 ご回答を参考に、少し調べてあれこれやってみたのですが、設定が反映されないです。(おそらく間違えているのでしょう…) .bashrcに`echo -e '\e]4;33;#ffffff'`などと書いてみても、\e[33mは黄色になりました。 書き方に問題があれば教えていただけると幸いです。 また、\e[30mから\e[39mまで表示してみましたが、デフォルトを表す\e[39mでシアンで表示されるので、39番のパレットを白に変更するということで良いのでしょうか?
ikedas

2016/12/17 09:51

回答では、カラーパレットをリセットする機能 (「'\e]R'」) と、パレットを設定する機能 (たとえば「'\e]PF00FFFF'」でパレット15を#00FFFFに設定) を説明しました。このパレットとはVGA互換の16色パレットのことです。ご質問の「39」はパレット番号ではないです。 また、.bashrc中でechoの実行を「`…`」で囲んでいらっしゃるように見えますが、それだとechoの出力が端末に書き込まれないため、エスケープシーケンスが働かないと思います。
sugirin

2016/12/19 04:59

ありがとうございます。 カラーパレットのリセットと設定を試してみて、その結果を追記に記しました。 またなにか間違っていましたらご教授いただけると幸いです。 >.bashrc中でechoの実行を「`…`」で囲んでいらっしゃるように見えますが、それだとechoの出力が端末に書き込まれないため、エスケープシーケンスが働かない こちらに関してはtrapコマンドの引数としてechoコマンドを与えているので、これで良いと考えています。
guest

0

lsコマンドの色設定に関しては~/.dir_colorsに白を指定しまくることで解決しました。
catなどの標準出力の色は、trapコマンドでDEBUGシグナル時に\e[1;37mを書き出すことで白くしました。
viなど一部のコマンドはまだシアン表示されますがあまり使わないので気にしないことにしました。
最後に、回答を下さったikedasさんありがとうございました。

投稿2016/12/20 02:53

sugirin

総合スコア7

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問