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

rɑːdʒɑ
sumber
7
Saya kagum betapa buruknya dokumentasi ini di Linux dan BSD di halaman manual.
Sridhar Sarnobat
Lihatlah blog ini - sanctum.geek.nz/arabesque/better-bash-history .
abhicantdraw
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.

Mitch
sumber
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/

Avinash Raj
sumber
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.

Dennis Kaarsemaker
sumber
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
DimiDak
sumber
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
aku aku aku
sumber
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

Shashank Agrawal
sumber
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