2

プロンプトをカスタマイズしたい。ここに私の問題があります:

root@server:~# PS1="[\@]\$" // should write [05:40 PM]
[05:40 ]$ 

多分これは手がかりになるでしょうか?

root@server:~# LANG=en_EN.UTF-8
root@server:~# date +%T%p
17:25:05PM

そしていま :

root@server:~# LANG=fr_FR.UTF-8
root@server:~# date +%T%p
17:25:15
root@server:~# date +%p

root@server:~#

どうもありがとう !


EDIT 1: PS1 では何も変わりません!

root@server:~# LANG=en_EN.UTF-8
root@server:~# PS1="[\@]\$"
[05:40 ]$

EDIT 2:それは正常に動作しますが、不要な変更が予想されます:

root@server:~# LC_ALL=C
root@server:~# PS1="[\@]\$"
[06:34 PM]$

localeしかし、前後に入力してもロケールに違いは見られませんLC_ALL=C!

root@server:~# PS1="[\@] \$"
[06:44 ] $locale
LANG=fr_FR.UTF-8
LANGUAGE=
LC_CTYPE="fr_FR.UTF-8"
LC_NUMERIC="fr_FR.UTF-8"
LC_TIME="fr_FR.UTF-8"
LC_COLLATE="fr_FR.UTF-8"
LC_MONETARY="fr_FR.UTF-8"
LC_MESSAGES="fr_FR.UTF-8"
LC_PAPER="fr_FR.UTF-8"
LC_NAME="fr_FR.UTF-8"
LC_ADDRESS="fr_FR.UTF-8"
LC_TELEPHONE="fr_FR.UTF-8"
LC_MEASUREMENT="fr_FR.UTF-8"
LC_IDENTIFICATION="fr_FR.UTF-8"
LC_ALL=
[06:44 ] $env
// ...
LANG=fr_FR.UTF-8
// ...

それで :

[06:45 ] $LC_ALL=C
[06:45 PM]$locale
LANG=fr_FR.UTF-8
LANGUAGE=
LC_CTYPE="fr_FR.UTF-8"
LC_NUMERIC="fr_FR.UTF-8"
LC_TIME="fr_FR.UTF-8"
LC_COLLATE="fr_FR.UTF-8"
LC_MONETARY="fr_FR.UTF-8"
LC_MESSAGES="fr_FR.UTF-8"
LC_PAPER="fr_FR.UTF-8"
LC_NAME="fr_FR.UTF-8"
LC_ADDRESS="fr_FR.UTF-8"
LC_TELEPHONE="fr_FR.UTF-8"
LC_MEASUREMENT="fr_FR.UTF-8"
LC_IDENTIFICATION="fr_FR.UTF-8"
LC_ALL=
[06:46 PM] $env
// ...
LANG=fr_FR.UTF-8
// ...

他にどの変数がLC_ALL変化しますか?! ...

4

2 に答える 2

1

コマンドプロンプトだけを表示する時間が必要な場合は、をPS1使用して設定する関数を呼び出すことができますtrap。これは最も理想的な方法ではないかもしれませんが、LC_ALL. これらの行で何かを行うことができます:

$ function display_prompt(){ prompt_time=$(LC_ALL=C date +%r); PS1="[$prompt_time] $ "; }
$ trap display_prompt DEBUG
[11:25:45 PM] $ 

任意の形式を選択できますdate。ファイルに追加でき~/.bashrcます。
お役に立てれば!

于 2012-04-19T18:00:15.253 に答える
0

そのロケールに AM/PM 表記がない/使用されていない場合、それは理にかなっています。

于 2012-04-19T15:47:09.373 に答える