geçerli oturum için bash geçmişi


15

Belki bir şeye bakmıyorum ama şu anda kullandığınız oturum için mevcut bash geçmişinizi almanın bir yolu var mı?

koşarsam

ssh host
$ pwd
$ ls
$ cd /tmp

Sadece bu 3 komutu görmek istiyorum ve başka bir şey yok


historykomutu kontrol ettin mi ??
Hackaholic

ya biliyorum historyama bu sadece benim oturum vermiyor
Mike

Oturumlar arasında kaydedilen tutar hatırlarsam SAVEHIST kabuk değişkeni tarafından kontrol edilir. Bu nedenle, son kaydettiğiniz geçmişin tutarı SIFIR ise, geçerli kabuk oturumu için geçmiş alırsınız (ancak elbette alt düzeylerde değil)
mdpc

mdpc, hangi belgeleri okuyorsun? Bash man sayfasında SAVEHIST'e atıfta bulunmuyorum ama sadece HISTSIZEve HISTFILESIZE.
Wildcard

Yanıtlar:


15

Biraz dolambaçlı bir yol:

history -a ~/current_history

Bu, geçerli oturumun kaydedilmemiş bash geçmişini kaydeder ve ~/current_historydaha sonra görüntüleyebilirsiniz.


Bu işe yarayabilir ama birden fazla oturum işlemez .. Ben saklamak için rastgele bir geçici dosya oluşturabilirsiniz
Mike

1
@Mike belki de kabuk PID'sine bağlı bir isim kullanır ~/$$_history.
muru

4
Bunun geçmişi temizlemeyeceğini veya normal tarih tasarrufunu hiçbir şekilde etkilemeyeceğini belirtmek gerekir! Test edene kadar emin değildim. :)
NHDaly

history -aÖnceki geçmişinizle birlikte ~ / .bash_history'ye atarım daha uygun buluyorum ... bu, tarihiniz centos7 ve fedora 24 sistemlerimdeki 1000 olan kesimden daha uzunsa bir sorun olabilir.
Ray Foss

0

Kullanım compzaten kalıcı geçmişi ile tüm geçmişi (. Dahil akım Bash oturum) karşılaştırmak .bash_historyve yalnızca geçerli oturuma özgü bu satırları yazdırmak - Geçerli Bash kabuğunu almaya başladıktan sonra infaz edildi yalnızca komutları göstermelidir

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

Düzenleme: @Wildcard belirttiği gibi bu komutun tüm dağıtımları için çalışmaz comm. Bunu Mac OS'de test ettim.

Aynı fikrin farklı bir kullanımı diff:

diff <( history | cut -c 8- ) ~/.bash_history | sed -n 's/^< //pg'

İyi bir düşünce, ama testlerimde çok güvenilmez. commsıralı girdi varsayar. Ancak, Stack Exchange'e hoş geldiniz! :)
Wildcard

@Wildcard, girişin her iki tarafı da yukarıdaki örneğimde commdoğal olarak sıralanıyor. Sen mi çalıştırdın? Ve mevcut Bash oturum geçmişinizi üretmedi mi?
Christian Kadner

Evet, yaptım ve hayır. Ve hayır, içeriği ~/.bash_historyedilir değil sıralanır; ve historyönde gelen satır numaraları kaldırıldıktan sonra sıralananların çıktısı da alınmaz . (Bunun yanında, commsayısal olarak sıralanmamış girdinin sözlükbilimsel olarak sıralanmış girdisini bekler.)
Wildcard,

Doğru, yani benim örneğimdeki commkomutun her iki argümanı da aynı şekilde, sözlükbilimsel olarak sıralanmış değil. FreeBSD sürümü commsözlükbilimsel olarak sıralanmış girdi gerektirmez
Christian Kadner

Mac OS X kullanıyorum. Bununla hiçbir ilgisi yok. Daha yakın bakıldığında, göründüğü erken beri tarih içinde üzerine yazılır olmuştur bellek geçmişinden komutları, dosyaya çıkan diğer kabukları ile.
Wildcard

0

Geçerli historybir dosyaya yazmak istediğim bir sorun vardı ama yine de girişlerin ana bash kaydedilmesini istedihistory

Sadece takılarak bu çözüldü dosyayı ile cat:

history -a current-history
cat current-history >> .bash_history
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.