bash histori untuk sesi saat ini

15

Mungkin saya mengabaikan sesuatu tetapi apakah ada cara untuk mendapatkan riwayat bash Anda saat ini untuk sesi saat ini yang Anda gunakan

jika saya lari

ssh host
$ pwd
$ ls
$ cd /tmp

Saya hanya ingin melihat 3 perintah itu dan tidak ada yang lain

Mike
sumber
sudahkah kamu memeriksa historyperintah ??
Hackaholic
ya saya tahu historytapi itu tidak hanya memberikan sesi saya
Mike
Jumlah yang disimpan di antara sesi dikendalikan oleh variabel shell SAVEHIST jika saya ingat. Jadi jika jumlah histori yang Anda simpan terakhir kali adalah NOL, maka Anda akan mendapatkan histori untuk sesi shell saat ini (tapi tentu saja tidak pada sub level)
mdpc
@ mdpc, dokumen apa yang Anda baca? Di halaman manual Bash saya tidak menemukan referensi ke SAVEHIST tetapi hanya untuk HISTSIZEdan HISTFILESIZE.
Wildcard

Jawaban:

15

Cara yang agak bundar:

history -a ~/current_history

Ini akan menyimpan riwayat pesta yang belum disimpan sesi saat ini ~/current_history, yang kemudian dapat Anda lihat.

muru
sumber
ini bisa bekerja tetapi tidak menangani beberapa sesi .. Saya kira saya bisa membuat file temp acak untuk menyimpannya
Mike
1
@ Mike menggunakan nama yang terhubung dengan PID shell, mungkin ~/$$_history.
muru
4
Perlu dicatat bahwa ini tidak akan menghapus riwayat atau memengaruhi penyimpanan riwayat normal dengan cara apa pun! Saya tidak yakin sampai saya mengujinya. :)
NHDaly
Saya merasa lebih nyaman untuk hanya melakukan history -aitu melempar bersama dengan sejarah sebelumnya ke ~ / .bash_history ... yang bisa menjadi masalah jika sejarah Anda lebih lama dari cutoff, yang merupakan 1000 pada sistem centos7 dan fedora 24 saya.
Ray Foss
0

Saya memiliki masalah yang ingin saya tulis saat ini historyke file tetapi masih ingin entri dicatat di bash utamahistory

Saya memecahkan ini dengan hanya melampirkan file dengan cat:

history -a current-history
cat current-history >> .bash_history
nath
sumber
-1

Gunakan compuntuk membandingkan seluruh riwayat (termasuk sesi Bash saat ini) dengan riwayat yang sudah ada di .bash_historydan hanya mencetak baris-baris yang unik untuk sesi saat ini - yang seharusnya hanya menampilkan perintah-perintah yang dieksekusi sejak memulai shell Bash saat ini

comm -23 <( history | cut -c 8- ) ~/.bash_history

Sunting: seperti @Wildcard tunjukkan perintah ini tidak berfungsi untuk semua distribusi comm. Saya menguji ini pada Mac OS.

Variasi dari gagasan yang sama menggunakan diff:

diff <( history | cut -c 8- ) ~/.bash_history | sed -n 's/^< //pg'
Christian Kadner
sumber
Pikiran yang bagus, tetapi sangat tidak bisa diandalkan dalam pengujian saya. commmengasumsikan input yang diurutkan. Tapi, selamat datang di Stack Exchange! :)
Wildcard
@ Kartu Wild, kedua sisi input untuk commdiurutkan secara inheren dalam contoh saya di atas. Apakah Anda menjalankannya? Dan itu tidak menghasilkan riwayat sesi Bash Anda saat ini?
Christian Kadner
Ya, saya lakukan, dan tidak, tidak. Dan tidak, isi ~/.bash_historyyaitu tidak diurutkan; dan juga tidak ada output yang historydiurutkan sama sekali setelah nomor baris terkemuka dihapus. (Selain itu, commmengharapkan input yang diurutkan secara leksikografis, bukan input yang diurutkan secara numerik.)
Wildcard
Benar, maksud saya kedua argumen untuk commperintah dalam contoh saya berada dalam urutan yang sama, bukan bahwa mereka diurutkan secara leksikografis. Versi FreeBSD commtidak memerlukan input yang diurutkan secara leksikografis
Christian Kadner
Saya menggunakan Mac OS X. Tidak ada hubungannya dengan itu. Melihat lebih dekat, tampaknya itu adalah perintah awal dari sejarah di-memori, yang sejak itu telah ditimpa dalam file riwayat oleh shell lain yang keluar.
Wildcard