Makine oluşturulduğundan beri kabuk komutlarının geçmişi nasıl bulunur?


23

Birkaç hafta önce bir Ubuntu sanal kutu makinesi yarattım ve o zamandan bu yana projeler üzerinde çalışıyordum.

Şimdi bir hafta önce terminale yazdığım bazı komutların sözdizimini bulmak istiyorum, ancak terminal penceresini açıp kapattım ve makineyi defalarca yeniden başlattım.

historyMakineyi oluşturduktan sonra yazdığım ilk komuta geri dönme komutunu nasıl alabilirim ?
Yoksa tüm komutların Ubuntu'da saklandığı başka bir yer var mı?


2
Bildiğim kadarıyla yapamazsın. Yalnızca tarih arabelleği ayarlandığı sürece geri gidebilirsiniz. Gelecekte komut geçmişini süresiz olarak kaydetmek için hangi paketi yükleyebileceğinizi soruyorsanız, belki de sorunuzu gözden geçirmelisiniz.
RobotHumans

Yanıtlar:


26

Tüm komutları almak mümkün olabilir veya olmayabilir. Kaç tane komut çalıştırdığınıza ve tarih sınırının nasıl ayarlandığına bağlıdır.

Ancak geçmiş listesinin burada saklandığını görebilirsiniz

/home/<YOUR_USERNAME>/.bash_history

İlgili soru (birden fazla kabuk geçmişini işlemek için):

.Bash_history'ye hemen yazı yazmak mümkün müdür?


3
Tarihin sadece bir terminal / kabuktan kaydedildiği doğru değil. Eğer çalıştırdığınızda history, bundan önce (önceki oturumlarda kabukları, güç çevrimleri arasında dahil olmak üzere) tüm diğer kabukları en son ve tarih gibi güncel kabuk geçmişi gösterir. Tüm kabuk örnekleri , geçmişlerini.bash_history çıkış yapılıncaya kadar kaydeder. Hiçbir örnek o noktadan önce otomatik olarak oraya kaydedilmez.
Eliah Kagan

6

Varsayılan olarak, ~/.bash_historyson birkaç komutu içermesine rağmen (eğer kullanıyorsanız bash, Ubuntu'daki varsayılan kabuktur) tüm komutların süresiz olarak kaydedildiği ve tutulduğu bir yer yoktur .

İsterseniz her yazdığınız komutu bashkaydedildi sonsuza , kendiniz kurmak zorunda. Örneğin, ~/.bashrcbir bashkabuğa yazılan tüm komutları dosyaya kaydetmek için aşağıdakileri dosyanıza koyabilirsiniz ~/.command_log:

# log every command typed and when
if [ -n "${BASH_VERSION}" ]; then
    trap "caller >/dev/null || \
printf '%s\\n' \"\$(date '+%Y-%m-%dT%H:%M:%S%z')\
 \$(tty) \${BASH_COMMAND}\" 2>/dev/null >>~/.command_log" DEBUG
fi

Yukarıdakiler DEBUG, sıradan bir komutun yürütülmesinden hemen önce yürütülen bir tuzağı açıklar. callerYerleşik komut interaktif kabuk yazılmış olarak ya da benzeri bir şey aracılığıyla çalıştırıldığını bildiren testi için kullanılır ~/.bashrc. Değer ${BASH_COMMAND}, yürütülmekte olan komutu içerir.


MacOS'ta, bu tekniğin update_terminal_cwd, kullanıcının çalıştırmadığı, ancak otomatik olarak çalıştırıldığı bir komut olan geçmiş dosyasına da giriş yaptığını not etmek isterim .
Ashish Ahuja

5

Ayrıca ilginizi çekebilecek bir şey de önceki komut geçmişinizi nasıl arayacağınızdır. Komut satırında geçmişinizi tekrar arayabilir ve tuşuna basarak Ctrl+rardından eşleştirmek istediğiniz harfleri yazabilirsiniz. Birden fazla eşleştirme komutunuz varsa, Ctrl+rtekrar basın . Geriye doğru aramadan çıkmak için tuşuna basın Ctrl+g.

http://www.ice2o.com/bash_quick_ref.html


4

Yalnızca tarih sınırınız belirlendiği sürece geri gidebilirsiniz; o noktaya ulaştığında tarihin üzerine yazmaya başlayacaktır. Bununla birlikte, gelecek için daha büyük bir geçmiş boyutuna sahip olmak mümkündür. Bunu .bashrc içine koyun ve bir değer belirtin (benimki 1000 olarak ayarlandı):

export HISTSIZE=1000
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.