端末プロンプトにタイムスタンプを追加しますか?


53

端末プロンプトにタイムスタンプを追加することが可能かどうか疑問に思っていましたが、可能であれば、どのようにこれを達成できますか?


このリンクをチェックして、実行中の時計を同期して表示します
マナ

回答:


61

この行を~/.bashrcファイルに追加します。

export PROMPT_COMMAND="echo -n \[\$(date +%H:%M:%S)\]\ "

したがって、出力は次のようになります。

[07:00:31] user@name:~$

時々、時間が遅れているように、時間が正しくないことを経験します。特定のコマンドにかかる時間を確認するためにそれを使用することもできましたが(うなり声)。それはどうですか?
ケビンシンパー14年

2
@ devav2:タイムゾーンを指定する方法はありますか?
カバ

ルートを使用しているときに端末にタイムスタンプを追加する方法はありますか?私は通常のユーザーである場合にのみタイムスタンプがあります。ありがとう
ユフェニュイ・バイエ・ダイダー

4
以下のためdateのコマンドは、置き換えることができ+%H:%M:%S+%T
snapfractalpop

5
これは私の端末のラッピングでねじ止めされたので、代わりにここで詳述したアプローチを使用しました。PS1に '\ D {%T}'を追加するだけです
rbennett485

25

私の解決策は、http://bashrcgenerator.com/を使用して.bashrcに入れるこのPS1行を生成することでした。

export PS1="\t [\u@\h \W]\\$ \[$(tput sgr0)\]"

どのようになります

13:05:54 [chad@work-laptop:~/Downloads]$ ls -al

PROMPT_COMMANDを使用すると、履歴が台無しになります。履歴を巡回しているときに長い行が表示されると、先頭に追加されたタイムスタンプと同じ文字数だけプロンプトの終わりが切れます。例えば

13:14:38 [chad@work-laptop:~/Doexport PROMPT_COMMAND="echo -n \[\$(date +%H:%M:%S)\\] "

また、この行は、入力しているように見える場所に入力していないため、適切な場所に文字が表示されないため、編集できません。

多分その[$(tput sgr0)]部分を使用することでPROMPT_COMMANDで実行できると思いますが、PS1は動作します。


ここのリンクは、スタンプをさらにカスタマイズするのに最適です。
チェレポ

16

プロンプト自体に日付を追加する代わりに、次の行をの先頭に配置して、プロンプトの直前に日付を追加できます。動作させるには、インストールする必要もあります。短いプロンプトを表示しながら日付を表示する楽しい方法です。.bashrccowsay

cowsay "Welcome $USER! It's now $(date '+%A %B %d %Y %r')"

現在の形式では、現在の環境から変数$USERdate変数を読み取るため、修正なしで誰のシステムでも動作します。

ここに画像の説明を入力してください


8
プロンプトに入れるポイントは、特定のコマンドを最後に実行したのはいつかを知ることです。
ジェームズ・オルトマンズ

6

回答にコメントを追加してそれを改善するのに十分な評判ポイントがないため。情報を追加できる唯一の方法は、2番目の回答を作成することです。ですから、答えとして言われたことを繰り返して、それを基にしていきます。

日付スタンプを変更するユーザーの.bashrcファイルを編集します。

「user @ host:〜$」と表示されている場合は、現在のユーザーのホームディレクトリにいます。.bashrcファイルは、ドット「。」で始まるため、隠しファイルです。リストで表示するには、長いリストを使用する必要があります。

「ls -a」を使用すると、「。bashrc」ファイルが表示されます。

テキストエディターでファイルを編集します。たとえば、「nano .bashrc」、「vim .bashrc」、「vi .bashrc」、「pico .bashrc」、または使用したいエディター。

これをスクリプト化し、多くのユーザーの多くのシェルに追加する予定がある場合は、append ">>"演算子と組み合わせて "echo"コマンドを使用すると便利です。例えば、

echo "export PROMPT_COMMAND="echo -n \[\$(date +%H:%M:%S)\]\\"" >> .bashrc

この方法を使用する場合は、変更するユーザーの現在の作業ディレクトリにいることを確認してください。これを確認するには、「pwd」または印刷作業ディレクトリコマンドを使用できます。

"]"終了ブラケットとユーザー名の間の余分なスペースが気に入らない場合は、非常にわずかに変更した正規表現を使用してください。

export PROMPT_COMMAND="echo -n \[\$(date +%H:%M:%S)\]\\"

ファイルを直接編集している場合に使用します。


1
編集を提案できます。
ムル

4
export PROMPT_COMMAND=date

各プロンプトを発行する前に日付を出力します。


1

.bashrcビアを開きます

vim ~/.bashrc

次に、以下を追加します.bashrc

#PS1="[\A \u@\h \W\a]$" 

where \Aは時間のためです(\Wパスの終わりのみ、現在の作業ディレクトリパス全体が必要な場合は削除します)。次に入力

source ~/.bashrc

次のようなものが表示されます。

[16:04 trwood@cobalt04 ~/MCEq_dev]$

1
削除する\Wと、パスがまったく表示されなくなります。\w完全なパスを提供します。
ザンナ

0

@ devav2の答えに追加するだけです:

初心者向けの読みやすいエコーコマンドは次のとおりです。

export PROMPT_COMMAND='echo -n "$(date +%H:%M:%S) "'

の代わりに

export PROMPT_COMMAND="echo -n \[\$(date +%H:%M:%S)\]\ "

echoコマンドはエクスポート時に評価されることを意図していないため、二重引用符ではなく一重引用符をリテラル引用として使用する方が合理的です。単一引用符を使用してコマンド全体を引用すると、二重引用符を使用してechoコマンドの引数を引用できるため[などの特殊文字をエスケープする必要がなくなります。$


1
エスケープは書式設定に使用されています(括弧)。これが受け入れられた答えに
オタク長老

それらを 'echo -n "$(date +%H:%M:%S)"'に追加することもできます: 'echo -n "[$(date +%H:%M:%S)]"'なしそれらをエスケープする必要があります。echoコマンドの引数として文字列を使用する利点は、bashで評価可能なものをエスケープする必要がなくなり、読みやすくなることです。
qwertyzw

@ElderGeekさらに説明を追加しました。それがお役に立てば幸いです。
qwertyzw

0

続行する正しい方法は$HOME/.bashrc、設定するコードを見つけてPS1コメントし、個人的なコードを追加することだと思います。これは例えば私のブロックです:

PS1_DATE="\D{%Y-%m-%d %H:%M:%S}"

if [ "$color_prompt" = yes ]; then
    PS1="[$PS1_DATE \[\e]0; \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\[\033[00m\]\[\033[01;34m\]\w \[\033[00m\]\$] "
    #PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
    PS1='[$PS1_DATE ${debian_chroot:+($debian_chroot)}\w \$] '
    #PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi

出力:

[2019-06-18 15:54:29 ~/Desktop $] echo "It's late!"

0

コマンドプロンプトにタイムスタンプを表示する最も簡単な構文は、おそらく次のとおりです。

    PS1='\D{%F} \t $...'

どこ

\D{format}日付はフォーマットされています(「man bashプロンプト」セクションを参照)

%F完全な日付; %Y-%m-%dと同じ(man dateFORMATセクションを参照)

\t24時間のHH:MM:SS形式の現在の時刻です(「man bashプロンプト」セクションを参照)

nano ~/.bashrc

上記のようにPS1変数を変更します

source ~/.bashrc


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.