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


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.


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

-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'

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
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.