Saya lebih suka menggunakan terminal dan menghabiskan sebagian besar waktu menggunakannya. Saya mencari cara untuk melihat waktu di terminal sementara saya menggunakannya paralel. Waktu akan berubah secara otomatis ketika lewat. Akan luar biasa jika akan ditampilkan ke command prompt saya.
Jika ini adalah command prompt saya di terminal:
saurav@saurav-P4I45Gx-PE:~$
Maka saya ingin melihat jam (waktu) sebagai:
saurav@saurav-P4I45Gx-PE[06:27:01]:~$
atau
saurav@(06:27:01):~$
atau format lainnya. dimana 06:27:01
waktunya? Yang saya inginkan hanyalah menunjukkan waktu yang berubah ketika detik berlalu.
Jadi, apakah ada cara untuk mencapai ini?
command-line
gnome-terminal
Saurav Kumar
sumber
sumber
$PS1
variabel (prompt) agar memiliki waktu, tetapi saya tidak yakin apakah ada perubahan.\@
, tetapi waktu hanya akan dihitung ulang setiap kali prompt ditampilkan, bukan waktu saat ini.Jawaban:
Saya tidak yakin itu sangat sederhana untuk mencapai ini menggunakan shell bash default (tapi saya tidak mengatakan itu tidak mungkin). Anda mungkin akan memerlukan perintah / fungsi yang dapat me-refresh prompt perintah setiap detik tanpa mengganggu apa pun yang Anda ketik pada prompt.
The Z shell (zsh) memiliki built-in command, yang disebut
zle
, yang, bila digunakan denganreset-prompt
argumen, pasukan prompt untuk menjadi re-diperluas, maka redisplays edit penyangga.Jika Anda ingin mencobanya, gunakan langkah-langkah berikut:
Instal Z shell dengan perintah ini:
Ketika Anda menjalankan
zsh
untuk pertama kalinya, pilih0
kapan Anda diminta.Edit
~/.zshrc
file dan tambahkan baris berikut:Simpan file dan tutup.
Di terminal Anda, ketika Anda masih menggunakan zsh, jalankan
source ~/.zshrc
, atau sederhananyazsh
, untuk mengatur ulang prompt Anda. Sekarang prompt Anda akan terlihat seperti:dengan beberapa warna.
Jika Anda suka, jalankan
chsh -s /bin/zsh
untuk mengubah shell Anda saat ini/bin/zsh
(login ulang diperlukan untuk perubahan ini berlaku).Jalankan
exit
jika Anda ingin keluar dari shell zsh.Berikut adalah screencast 15 detik dari terminal saya:
sumber
chsh
untuk mengubah shell default Anda dari/bin/bash
menjadi/bin/zsh
. Anda harus keluar dan masuk lagi.zsh
perintah untuk masuk ke modus jam ini ..Jika Anda ingin menampilkan waktu berjalan di terminal Anda, Anda dapat menggunakan perintah ini. Ini akan menampilkan waktu di sisi kanan atas terminal Anda.
Tetapi perhatikan bahwa menampilkan waktu menggunakan perintah ini kadang-kadang dapat tumpang tindih dengan teks yang ada di terminal. Jadi gunakan perintah ini dengan sedikit hati-hati.
Cara lain mungkin menggunakan karakter kontrol di dalam PS1
Tetapi dalam metode ini waktu Anda akan disegarkan hanya setelah menekan enter.
Jika Anda ingin metode di atas permanen, tambahkan perintah di atas (yang Anda suka atau keduanya) di
~.bashrc
file Anda .sumber
Jika yang ingin Anda lakukan adalah menampilkan jam, cukup gunakan
date
:Itu akan menunjukkan waktu setiap detik sampai Anda menghentikannya CtrlC. Jika Anda ingin berada di baris yang sama (di atas akan mencetak baris baru setiap detik), lakukan ini sebagai gantinya:
sumber
Pertanyaan ini telah mengganggu saya selama beberapa hari, dan inilah posting saya yang telah diedit dengan semua bahan yang telah saya pelajari. Secara khusus, tujuan saya adalah mencapai menampilkan jam di sebelah prompt di BASH. Sama seperti Radu Radeanu yang disebutkan dalam jawabannya, kuncinya adalah menemukan fungsi atau variabel yang dapat terus-menerus menyegarkan command prompt atau menggambar ulang layar, tanpa mengganggu layar Anda atau dengan apa pun yang Anda ketik. Sementara, ini dimungkinkan untuk dicapai dengan loop sementara, seperti yang ditunjukkan oleh G_P, redrawing konstan layar dengan fungsi tput mengacaukan dengan teks apa pun yang ada di layar saya pada saat itu menyegarkan. Saya sudah hampir mencapai apa yang diminta OP dengan memodifikasi sedikit kode yang diposting G_P, tetapi saya masih yakin jawaban Radu adalah yang paling dekat dengan apa yang diinginkan OP. Tanpa basa-basi lagi, inilah beberapa hal yang saya '
# 1, Solusi pilihan saya: Terminal Multiplexer
Terminal multiplexer adalah perangkat lunak yang memungkinkan pemisahan layar terminal menjadi dua atau lebih layar. Secara khusus, saya ingin menarik perhatian ke terminal Byobu. Emulator terminal berbasis ncurses ini, memungkinkan Anda untuk menunjukkan waktu, persentase CPU, memori, dan sejumlah indikator lainnya. Dalam tangkapan layar dari terminal byobu saya, Anda dapat melihat suhu cpu, persentase baterai, kualitas koneksi internet, frekuensi CPU, RAM, tanggal, dan tentu saja waktu. Jika Anda sebagian besar khawatir dengan terus memantau hal-hal ini saat berada di terminal, Byobu adalah cara untuk pergi. Bahkan, saya sudah sangat menyukainya, saya telah mengaturnya untuk memuat secara otomatis saat masuk ke tty. Satu-satunya kekhasan adalah bahwa dalam tty Anda tidak dapat benar-benar menggabungkan jendela terpisah - hanya beralih di antara tab dengan tombol F3 dan F4.
Solusi alternatif yang melibatkan multiplexing windows adalah dengan menggunakan
splitvt
, yang membagi layar menjadi dua bagian. Anda dapat menjalankan jam terminal sepertitty-clock
, menggunakan perintah arloji dengan tanggal, atau Anda dapat membuat kode sendiri dengan skrip. Lebih lanjut tentang itu nanti. Di tangkapan layar Anda dapat melihat satu bagian dari pemisahan dengan bash prompt yang normal di atas, dan di bagian bawah Anda dapat melihat skrip berjalan, yang hanya terus-menerus menyegarkan output daridate
perintah denganclear
perintah.# 2, While Do Loop dan tput. Ini mungkin adalah kedekatan dengan apa yang orang yang ingin ajukan ingin lakukan dengan bash.
G_P telah memposting solusi hebat yang melibatkan
while do
dantput
perintah. Namun dalam kode G_P ada dua hal yang saya tidak suka. Satu, jam berada di sebelah kanan prompt, dan dua - karena siklus tidur adalah 1 detik (merujuk ke kode asli di mana ia mengatakan tidur), layar digambar ulang setiap detik, dan itu mengacaukan output saya. Apa yang saya lakukan adalah mengedit bash prompt saya menjadi satu baris lebih rendah dengan operator \ n dan mengubah kode G_P sehingga operator tput akan menempatkan jam tepat di atas prompt, dan menyegarkan setiap 60 detik; yang memungkinkan saya untuk melihat jam dan menit (dan saya tidak benar-benar peduli tentang menit), sementara loop jam tidak mengacaukan layar saya. Pertama, inilah prompt saya:Dan ini kode modifikasi G_P:
enter code here
Edit kecil : Saya perhatikan bahwa kode di atas kadang-kadang tidak langsung menampilkan waktu. Ini versi yang lebih baik: Yang
while true; do tput sc;tput cup 0 0;date +%R;tput rc; sleep 60; done &
ini menempatkan jam di layar terlebih dahulu, lalu beri tahu bash untuk menjalani siklus tidur 60 detikCatatan, cangkir tput 0 0 menempatkan jam ke sudut kanan atas layar, tepat di atas prompt saya dan sleep 60 mengubah siklus tidur menjadi 60 detik, karena dengan cara itu saya hanya dapat memonitor jam dan menit daripada setiap detik. Dengan cara ini, teks apa pun yang saya miliki di layar tidak akan terpengaruh, sebagian besar (hanya ketika saya menjalankan perintah, waktu yang sama jam diperbarui).
Baris PS1 sudah ada di profil .bashrc Anda, jadi Anda hanya perlu sedikit men-tweak. Loop while do harus ditambahkan di suatu tempat di file yang sama, lebih disukai pada akhirnya dengan # komentar bahwa ini adalah hal yang Anda tambahkan pada awalnya. Dan jangan lupa untuk selalu mencadangkan file seperti itu kalau-kalau Anda membuat bubu dan harus kembali seperti semula.
# 3, Scripting dan lainnya
Bagian ini hanya untuk mereka yang ingin melihat waktu. Bagi mereka yang ingin terus memantaunya, # 1 dan # 2 adalah pilihan yang lebih disukai.
Jadi seperti yang telah kita lihat while do loop cukup berguna. Inilah cara Anda dapat membuat jam dengan sambil melakukan perintah loop, date, dan sleep.
Tekan kembali / masuk, dan pada dasarnya Anda akan melihat output dari perintah tanggal yang ditampilkan di layar yang dihapus setiap detik. Jika Anda tidak ingin mengetik semua itu setiap waktu, ubah semua ini menjadi skrip:
Sekarang Anda bisa menjalankan skrip itu dengan splitvt dalam satu contoh bash, saat bekerja di yang lain.
Solusi lain adalah
watch -n1 date
perintah, yang akan terus menjalankan perintah tanggal dengan periode 1 detik.Kesimpulan: Saya telah belajar beberapa hal ketika mencoba menemukan jawaban untuk pertanyaan ini, dan saya berharap temuan saya membantu Anda dalam beberapa cara, dan saya berharap saya dapat berkontribusi pada pertanyaan ini. Terminal Byobu IMHO adalah solusi terbaik, tetapi putuskan sendiri, buat riset, dan pilih cara mana yang paling cocok untuk Anda.
Beberapa hal yang saya temukan saat meneliti:
Posting asli saya, solusi minimalis: Edit file ~ / .bashrc Anda. Saya lebih suka mengeditnya dengan nano, jadi
Inilah bagian dari file saya sendiri yang diedit:
Setelah pernyataan lain, baris pertama dikomentari dengan # (ini adalah prompt lama saya), sekarang baris kedua adalah yang Anda inginkan, dan khususnya
\t
operator. Itu menunjukkan waktu berjalan dalam format 24 jam. Untuk info lebih lanjut, periksa ini . Juga catatan kecil, saya menggunakan barang-barang setelah yang lain, karena saya tidak menggunakan prompt berwarna.PS: Tolong beri tahu saya jika saya harus menambahkan sesuatu ke jawaban saya atau mengeditnya dengan cara apa pun, tetapi sebagian besar saya percaya ini adalah jawaban yang paling konklusif yang bisa saya buat, dan setidaknya saya pribadi tidak akan menambahkan apa pun baru untuk itu.
sumber
karena saya lebih suka menampilkan sesedikit info latar belakang mungkin pada i terminal umumnya menyesuaikan setiap sesi sebagai
#
,$
, dll (jika Anda ingin mengubahnya secara permanen, solusi minerz029 adalah sempurna)Untuk memodifikasinya untuk menunjukkan saat ini, saya bisa menggunakan
untuk waktu dalam format 12 jam. Anda dapat melihat dokumentasi bash untuk opsi lain.
sumber
Waktu ini hanya akan berubah ketika prompt baru dijalankan
Anda dapat menambahkan yang berikut ini ke
.bashrc
:Yang akan menghasilkan:
Informasi lebih lanjut di sini: http://www.thegeekstuff.com/2008/09/bash-shell-ps1-10-examples-to-make-your-linux-prompt-like-angelina-jolie/#8
Cari "8. Buat prompt Anda sendiri menggunakan kode yang tersedia untuk variabel PS1" di halaman di atas.
sumber
$PROMPT_COMMAND
akan bekerja jika Anda dapat menemukan perintah yang menampilkan waktu yang berdetak.Saya sangat suka fitur jam ncmpcpp , dipicu oleh 0-kunci (lihat tangkapan layar). Untuk detail lebih lanjut tentang prosedur instalasi, silakan lihat posting ini .
sumber
watch -t -n1 "date +%T|figlet"
akan menjadi cara yang mudah.Dipengaruhi oleh g_p dan Serg saya mencoba membuat fungsi di bash. Itu bekerja, tapi saya tidak yakin itu ide yang baik untuk memeriksa perintah ps setiap detik untuk melihat apakah bash adalah proses fg atau tidak
sumber
Jika Anda tidak perlu menggunakan
debian_chroot
maka itu adalah tempat yang berguna untuk meletakkan waktu prompt perintah ditampilkan dengan menggunakan:Ketik ini di terminal Anda dan perhatikan perubahan prompt perintah Anda seiring waktu:
Setelah waktu diatur satu kali, untuk mendapatkan jam berjalan yang memperbarui setiap penggunaan detik:
Ini
.gif
menunjukkan perintah dalam tindakan:sumber