Bagaimana cara melihat prangko waktu dalam sejarah bash?


259

Apakah ada cara saya bisa melihat jam berapa perintah dieksekusi dari bash history? Kita dapat melihat pesanannya, tetapi adakah yang bisa saya dapatkan waktu juga?

Bottom-Line: Waktu pelaksanaan dalam sejarah Bash


7
Saya kagum betapa buruknya dokumentasi ini di Linux dan BSD di halaman manual.
Sridhar Sarnobat


4
jika Anda menggunakan zsh:history -E
Vahid

4
Tidak yakin mengapa dua jawaban di bawah ini merasa perlu memberi tahu Anda cara membuka terminal ..
mwfearnley

2
Menurut blog yang direferensikan oleh @ dog0, timestampse tampaknya tidak bisa diselamatkan kecuali HISTTIMEFORMATvariabelnya disetel ketika perintah dikeluarkan. Dengan kata lain, jika Anda belum menyetelnya, mengaturnya sekarang tidak akan membantu Anda mengambil stempel waktu dari perintah yang sebelumnya dikeluarkan.
Tomislav Nakic-Alfirevic

Jawaban:


318

Tekan Ctrl+ Alt+ Tuntuk membuka Terminal, lalu jalankan perintah di bawah ini:

HISTTIMEFORMAT="%d/%m/%y %T "

Atau, untuk membuat perubahan permanen bagi pengguna saat ini:

echo 'HISTTIMEFORMAT="%d/%m/%y %T "' >> ~/.bashrc
source ~/.bashrc

Kemudian

history

Untuk info lebih lanjut, lihat man bash atau Indeks AZ dari baris perintah Bash untuk Linux .

Untuk perintah yang dijalankan sebelum HISTTIMEFORMAT diatur, waktu saat ini akan disimpan sebagai stempel waktu. Perintah yang dijalankan setelah HISTTIMEFORMATdiatur akan memiliki cap waktu yang tepat disimpan.


7
Mengapa mendeklarasikannya dengan exportdi .bash_profile? Ini adalah variabel yang hanya dibaca oleh bash, bukan oleh perintah yang diluncurkan darinya, jadi tidak boleh diekspor.
Alvaro Gutierrez Perez

71
Perhatikan bahwa ini hanya akan mencatat cap waktu untuk item riwayat baru , setelah HISTTIMEFORMATditetapkan untuk sesi, yaitu Anda tidak dapat menggunakan ini secara retrospektif. Beberapa jawaban di sini memberi kesan perintah sejarah segera menampilkan entri yang bertanda waktu
Louis Maddox

10
@Louis - Sebenarnya ini bekerja untuk saya secara retroaktif untuk saya?!?!
stephenmm

19
@ Jamil: untuk orang-orang yang mengikuti standar ISO, "% y-% m-% d" untuk bagian tanggal;)
Gauthier

13
@Gauthier - sebenarnya, cukup gunakan% F untuk tanggal ISO ;-) man7.org/linux/man-pages/man3/strftime.3.html
brianmearns

73

Buka terminal Ctrl+ Alt+ Tdan jalankan,

HISTTIMEFORMAT="%d/%m/%y %T "

kemudian,

history

Untuk membuat perubahan permanen ikuti langkah-langkah di bawah ini,

gedit ~/.bashrc

Anda perlu menambahkan baris di bawah ini ke file .bashrc dan kemudian simpan,

export HISTTIMEFORMAT="%d/%m/%y %T "

jalankan perintah di bawah ini untuk mendapatkan file .bashrc,

source ~/.bashrc

Setelah itu jalankan historyperintah.

masukkan deskripsi gambar di sini

sumber : http://www.cyberciti.biz/faq/unix-linux-bash-history-display-date-time/


Terima kasih telah menjawab, \ akankah ini perubahan permanen?
rɑːdʒɑ

1
Hai, saya melakukan ini di OS X dan Windows (melalui MINGW), dan saya menambahkannya ke .bash_profile, apa perbedaan antara profil dan rc?
LasagnaAndroid

18

Ya, Anda dapat: jika Anda mengatur $HISTTIMEFORMAT, itu .bash-historyakan diberi cap waktu yang benar. Itu tidak membantu dengan .bash-historykonten yang ada , tetapi akan membantu di masa depan.


1
dapatkah Anda mengembangkannya untuk kejelasan lebih lanjut?
rɑːdʒɑ

5
Koreksi ke posting sebelumnya: Mengatur HISTTIMEFORMAT memungkinkan tampilan cap waktu ... bahkan ada. Favorit saya adalah: HISTTIMEFORMAT = '% F% T' karena tidak penting dari negara mana Anda tinggal ... semua orang langsung tahu jam berapa sekarang. :)

4
Saya menetapkan $ HISTTIMEFORMAT dan saya mendapatkan waktu untuk hari ini bahkan sebelum perintah dari set ini.
Yasin Okumuş

@ user491029 "... bahkan ada". Ini benar, tetapi menyesatkan. Pada ubuntu 14.04, setidaknya, ia mulai menampilkan cap waktu untuk semua entri riwayat setelah saya mengatur HISTTIMEFORMAT, tetapi sepertinya cap waktu untuk perintah apa pun yang dijalankan sebelum sesi saat ini adalah timestamp login sesi saat ini.
jbobbins

1

Anda akan melihat perubahan pada login berikutnya.

echo 'HISTTIMEFORMAT="%d/%m/%y %T "' >> ~/.bashrc

0

Untuk mengaktifkan cap waktu riwayat untuk semua pengguna, buat skrip di /etc/profile.d:

echo 'HISTTIMEFORMAT="%Y%m%d %T "' >> /etc/profile.d/timestamp.sh

1
Ini kemungkinan tidak akan berfungsi untuk pengguna yang masuk melalui GUI, karena terminal default tidak akan menjalankan shell login. /etc/bash.bashrcakan menjadi tempat yang lebih baik.
muru

0

Saya tahu, saya menjawabnya sangat terlambat, tetapi untuk melakukan ini untuk semua pengguna, Anda dapat membuat .shfile apa saja /etc/profile.ddan menambahkan baris berikut ke dalamnya:

echo 'HISTTIMEFORMAT="%Y-%m-%d %T "' >> /etc/profile.d/existing-foo-file.sh

Jika Anda tidak masuk sebagai rootatau pengguna super, Anda perlu menggunakan teeperintah untuk melakukan ini:

echo 'HISTTIMEFORMAT="%Y-%m-%d %T "' | sudo tee /etc/profile.d/mytimestamp.sh

Jika Anda ingin menambahkan file apa pun yang ada, berikan -aflag to teecommand:

echo 'HISTTIMEFORMAT="%Y-%m-%d %T "' | sudo tee -a /etc/profile.d/mytimestamp.sh

masukkan deskripsi gambar di sini


Halo Shashank, Terima kasih telah menambahkan jawaban tetapi bagaimana jawaban ini berbeda dari yang lain? Jika jawaban Anda sama sekali berbeda maka kami senang memilikinya, tetapi jika tidak, Anda dapat meningkatkan jawaban yang ada.
rɑːdʒɑ

Hai, terima kasih sudah berkomentar. Ini berbeda dari yang lain dengan cara berikut: 1. Beberapa dari mereka telah menyebutkan tentang membuat untuk semua pengguna tetapi tidak ada yang menyebutkan tentang membuat / menjelaskan nama file apa pun di /etc/profile.d. timestamp.shterlihat sangat dekat dengan teknis (sehingga menciptakan kebingungan) jadi saya menggunakan namanya existing-foo-file.sh(konsep foo-bar). 2. Tidak ada yang menyebutkan tentang menggunakannya dengan pengguna non-root. Jadi saya telah memberikan contoh penggunaan sudo. 3. Contoh ke-3 meningkatkan contoh ke-2 dari penambahan file yang ada. Karena pemula linux / unix dapat mengatasi masalah ini, saya menguraikan.
Shashank Agrawal
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.