Geçmiş komutunu kullanmanın bir yolu olup olmadığını merak ediyorum ama sadece başarıyla çalıştırılan komutları listele. Benzer şekilde, hata üretenleri listelemenin bir yolu var mı?
Her komutun çıkış durumu olduğunu biliyorum:
0- Komutun başarıyla yürütülmesi
1- Genişletme veya yönlendirme sırasında bir hata nedeniyle komut başarısız olur, çıkış durumu sıfırdan büyüktür.
2- Hatalı komut kullanımı
12- Komut bulundu ancak yürütülebilir değil
127- Komut bulunamadı
ve şu komutla devam ederek kontrol echo $?
edilebilir: http://www.linuxnix.com/2011/03/find-exit-status-script-command-linux.html
Misal:
Bu 4 komutu çalıştırdıktan sonra:
ls
help
lss
ls nonexistentfile
Sadece 'ls' ve 'help' olması gereken sadece başarılı komutları (0 çıkış durumu) yazdırmak için test etmeyi denedim:
for j in `history | tail -5 | head -4 | cut -d ' ' -f5-`; do $j > cmd_out; if [[ `echo $?` != 0 ]]; then :; else echo $j | grep -v 'bash'; fi; done; rm cmd_out
Bu çıktılar:
ls
help
bash: lss: command not found
ls
bash: nonexistentfile.txt: command not found
Bu biraz işe yarıyor, ancak iki sorun var:
- Bazı nedenlerden dolayı,
grep -v 'bash''bash' içeren satırları hariç tutmaz, ama eğer yaparsamgrep 'bash', sadece 'bash' içeren satırları içerecektir, birinin neden diğerinin işe yaradığından emin değilim. - Her satırı / komutu dizeyle ayırır. Son
lskomut olmalı
ls nonexistentfile, ancak çalışıyorlsvenonexistentfileayrı komutlar olarak çalışıyor .
Komutta neyi ayarlamam gerektiği konusunda herhangi bir fikrim var ya da bunu nasıl yapacağım?
ls #$CODE, ll #$CODEve tarihin çıktısını aldım . Sizin için çalışıyorsa emin değilim, ama değiştirmek zorundased -i '\$s/\$/ \#\$CODE/' $HISTFILE'içinsed -i '\$s/\$/ \#$CODE/' $HISTFILE. `` $ CODE önce