Menambahkan cap waktu ke terminal meminta?

53

Saya bertanya-tanya apakah mungkin untuk menambahkan cap waktu ke terminal prompt, dan jika demikian, bagaimana saya bisa mencapai ini?

Jan Gorzny
sumber
periksa tautan ini untuk menampilkan jam berjalan dalam sinkronisasi
Mana

Jawaban:

61

Tambahkan baris ini ke ~/.bashrcfile:

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

Jadi hasilnya akan seperti:

[07:00:31] user@name:~$
devav2
sumber
Terkadang saya mengalami bahwa waktu tidak tepat dan lebih tua, seperti ada beberapa jenis keterlambatan. Saya pikir saya bisa menggunakannya untuk melihat berapa lama perintah tertentu (mendengus ..). Bagaimana itu bisa terjadi?
Kevin Simper
2
@ devav2: Apakah ada cara untuk menentukan zona waktu?
Hippo
Apakah ada cara Anda juga dapat menambahkan cap waktu ke terminal saat Anda menggunakan root? Saya hanya memiliki cap waktu ketika saya adalah pengguna normal. Terima kasih
Yufenyuy Veyeh Dider
4
Untuk dateperintah, Anda bisa menggantinya +%H:%M:%Sdengan +%T.
snapfractalpop
5
Ini kacau dengan pembungkus terminal saya, jadi saya menggunakan pendekatan yang dijelaskan di sini sebagai gantinya. Itu hanya menambahkan '\ D {% T}' ke PS1 Anda
rbennett485
25

Solusi saya adalah menggunakan http://bashrcgenerator.com/ untuk menghasilkan baris PS1 ini untuk dimasukkan ke .bashrc:

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

Yang akan terlihat seperti

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

Menggunakan PROMPT_COMMAND mengacaukan riwayat untuk saya. Ketika garis yang lebih panjang muncul saat bersepeda melalui sejarah, itu memotong akhir prompt dengan jumlah karakter yang sama dengan cap waktu yang ditambahkan ke depan. misalnya

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

Dan baris ini tidak dapat diedit karena tidak menampilkan karakter di tempat yang tepat, karena Anda tidak mengetik di mana Anda mengetik.

Saya kira itu bisa dilakukan dengan PROMPT_COMMAND, mungkin dengan menggunakan bagian [$ (tput sgr0)], tetapi PS1 berfungsi.

dogtato
sumber
Tautan di sini sangat bagus untuk menyesuaikan prangko lebih lanjut.
cellepo
16

Alih-alih menambahkan tanggal ke prompt itu sendiri, Anda bisa menambahkan tanggal tepat sebelum prompt Anda dengan menempatkan baris berikut di bagian atas Anda .bashrc. Agar berfungsi, Anda juga harus menginstal cowsay. Ini adalah cara yang menyenangkan untuk menampilkan tanggal sambil menjaga prompt singkat :

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

Dalam bentuk saat ini ia akan bekerja pada sistem siapa pun tanpa amandemen saat membaca $USERdan datevariabel dari lingkungan saat ini.

masukkan deskripsi gambar di sini


sumber
8
Maksud dari meletakkannya di prompt adalah untuk mengetahui kapan terakhir kali Anda menjalankan perintah tertentu.
James Oltmans
6

Karena saya tidak memiliki poin reputasi yang cukup untuk menambahkan komentar pada jawaban untuk memperbaikinya. Tampaknya satu-satunya cara saya dapat menambahkan informasi adalah dengan membuat jawaban kedua. Jadi, saya akan mengulangi apa yang dikatakan sebagai jawaban dan membangunnya.

Edit file .bashrc untuk pengguna yang Anda inginkan agar cap tanggalnya dimodifikasi.

Jika Anda melihat "user @ host: ~ $" Anda berada di direktori home pengguna Anda saat ini. File .bashrc adalah file tersembunyi karena diawali dengan titik ".". Untuk melihatnya dalam daftar, Anda harus menggunakan daftar panjang.

Anda dapat menggunakan "ls -a" dan kemudian Anda akan melihat file ".bashrc".

Edit file dengan editor teks. Untuk exmaple, "nano .bashrc", "vim .bashrc", "vi .bashrc", "pico .bashrc" atau editor apa pun yang ingin Anda gunakan.

Jika Anda ingin membuat skrip ini dan berencana menambahkannya ke banyak shell untuk banyak pengguna, mungkin bermanfaat untuk menggunakan perintah "echo" bersama dengan operator append ">>". Sebagai contoh,

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

Jika Anda menggunakan metode itu, pastikan Anda berada di direktori kerja pengguna saat ini yang ingin Anda modifikasi. Untuk memeriksanya, Anda dapat menggunakan perintah "pwd" atau mencetak direktori kerja.

Jika Anda tidak menyukai ruang ekstra antara braket akhir "]" dan nama pengguna cukup gunakan regex yang sedikit dimodifikasi ini:

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

Gunakan ini jika Anda mengedit file secara langsung.

Avlaxis
sumber
1
Anda dapat menyarankan pengeditan.
muru
4
export PROMPT_COMMAND=date

mencetak tanggal sebelum mengeluarkan setiap prompt.

wojox
sumber
1

Buka .bashrcvia Anda

vim ~/.bashrc

dan kemudian tambahkan yang berikut ke .bashrc:

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

di mana \Aada waktu ( \Whanya untuk ujung jalan, hapus jika Anda ingin seluruh jalur direktori kerja saat ini). Kemudian ketik

source ~/.bashrc

Anda akan melihat sesuatu seperti ini:

[16:04 trwood@cobalt04 ~/MCEq_dev]$
kayu bakar
sumber
1
menghapus tidak \Wakan menunjukkan jalan sama sekali. \wakan memberikan path lengkap.
Zanna
0

Hanya untuk menambahkan jawaban @ devav2:

Perintah gema yang lebih mudah dibaca untuk pemula adalah:

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

Dari pada

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

Karena perintah gema tidak dimaksudkan untuk dievaluasi pada saat ekspor, lebih masuk akal untuk menggunakan tanda kutip tunggal untuk kutipan literal daripada tanda kutip ganda. Menggunakan tanda kutip tunggal untuk mengutip seluruh perintah kemudian memungkinkan Anda untuk menggunakan tanda kutip ganda untuk mengutip argumen untuk perintah gema, menghilangkan kebutuhan untuk melarikan diri karakter khusus seperti , [dan$

qwertyzw
sumber
1
Pelarian digunakan untuk memformat (tanda kurung). Saya tidak melihat apa ini menambah jawaban yang diterima.
Penatua Geek
Anda dapat menambahkannya ke 'echo -n "$ (tanggal +% H:% M:% S)"' juga: 'echo -n "[$ (tanggal +% H:% M:% S)]"' tanpa perlu melarikan diri dari mereka. Keuntungan menggunakan string sebagai argumen untuk perintah echo adalah bahwa sekarang Anda tidak perlu melarikan diri dari apa yang dinyatakan bash dievaluasi, sehingga lebih mudah dibaca.
qwertyzw
@ElderGeek Saya menambahkan klarifikasi lebih lanjut. Saya harap itu membantu.
qwertyzw
0

Saya pikir cara yang benar untuk melanjutkan adalah dengan mencari di $HOME/.bashrckode yang mengatur PS1, berkomentar dan menambahkan yang pribadi. Ini adalah blok saya misalnya:

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

Keluaran:

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

Sintaks termudah untuk menunjukkan stempel waktu di command prompt mungkin adalah:

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

dimana

\D{format}diformat tanggal (lihat man bash, bagian PROMPTING) sebagai

%Ftanggal penuh; sama dengan% Y-% m-% d (lihat man date, bagian FORMAT), dan

\tadalah waktu saat ini dalam 24 jam HH: MM: format SS (lihat man bash, bagian PROMPTING)

nano ~/.bashrc

buat perubahan pada variabel PS1 seperti yang ditunjukkan di atas

source ~/.bashrc
Dmitry Somov
sumber
0

Waktu saya mirip dengan cowsayjawaban di atas. Anda harus menempatkan nowAnda ~/.bashrctetapi Anda juga bisa menelepon dari terminal dengan mengetik now.

Berikut screenshotnya:

sekarang.png

Kode bash diposting dalam jawaban yang sangat terperinci ini:

WinEunuuchs2Unix
sumber
0
export PROMPT_COMMAND="echo -n \[\$(date +%F-%T)\]\ "
export HISTTIMEFORMAT="%F-%T "

setidaknya terlihat berguna untukku.

Alexey Shcherbakov
sumber