clear
Terminalde bazı komutlar yazdığımda bash komutunu çalıştırmak için bash'ı yapılandırmak istiyorum (komutumu çalıştırmadan önce). Bunu nasıl yapabilirim?
Debian Linux kullanıyorum.
clear
Terminalde bazı komutlar yazdığımda bash komutunu çalıştırmak için bash'ı yapılandırmak istiyorum (komutumu çalıştırmadan önce). Bunu nasıl yapabilirim?
Debian Linux kullanıyorum.
Yanıtlar:
Bash'in ön kumanda kancası var . Sırala.
preexec () {
clear
}
preexec_invoke_exec () {
[ -n "$COMP_LINE" ] && return # do nothing if completing
[ "$BASH_COMMAND" = "$PROMPT_COMMAND" ] && return # don't cause a preexec for $PROMPT_COMMAND
local this_command=`history 1 | sed -e "s/^[ ]*[0-9]*[ ]*//g"`; # obtain the command from the history, removing the history number at the beginning
preexec "$this_command"
}
trap 'preexec_invoke_exec' DEBUG
Enter
, komutu yerine getirmeden önce tuşuna bastıktan sonra ekranı temizlemelidir . Benim için böyle çalışıyor. Preexec kancası her bir etkileşimli komut için yürütülür, komutun yerleşik mi harici bir komut mu yoksa birçok komut mu olduğu önemli değildir.
[ "$BASH_COMMAND" = "$PROMPT_COMMAND" ] && return;
bu problemi tamamlarsanız PROMPT_COMMAND'ın çalıştırılması ve asıl komuttan sonra kapana kısılması ; Ayrıca bazıları neden local this_command=`history 1 | sed -e "s/^[ ]*[0-9]*[ ]*//g"`;
burada olduğunu söyleyebilir mi?
history -1
, geçmiş komut satırı önünde bir tarih numarası ile yazdırır. Sed filtre geçmiş numarasını çıkarır.
bind 'RETURN: "\e[1~clear; \e[4~\n"'
Bundan sonra returnsadece yazmak yerine bastığınız her seferde \n
satırın başına hareket eder, metni girin clear;
, sonra sonuna gidin ve \n
beklendiği gibi girin .
clear
komutları.
clear
komut ve komut çıktısının kaybolmamasından önce yapılmasıdır. Ancak istemi durumunda durumunda yapar.
clear;
Her ekstra için çıkışa ekliyor \n
.
bind "\"\\eOQ\":\"\e[1~ls;#\\n\""
başlangıçta hareket eder ls;#
, orada olanı yorumlayarak yazın ve ls
komutu doğru şekilde çalıştırın ! Teşekkürler!
bugün sorduğum bir sorudan (user @ aecolley'nin cevabına krediyle ):
bind '"\C-m": "\C-l\C-j"'
\C-m
, 'Enter' tuşu simüle \C-l
simüle Ctrl+l
açık ve aşağıdaki gibi \C-j
olan "satır-ve girinti" komut Ctrl + l ve Ctrl + j için girin bağlayıcıdır böylece
GNU bash, sürüm 3.2.53 (1) - yayın (x86_64-apple-darwin14) üzerinde çalışır ve bu konudaki diğer cevaplar yok. Ayrıca, bu, diğer her komutta 'clear' komutları ile geçmişi kirletmez.
cb4() {
preexec () {
clear
}
}
Bu da denilen bir kanca kullanır preexec
, onaylanmış zsh ile de çalışır
Ardından, çalıştırdığınız her komuttan önce otomatik olarak silmek istediğiniz herhangi bir oturum: cb4
preexec () {
clear
}
sözcüğü clear
ile değiştirtput reset
tput
isteğe bağlıdır ancak sıfırlama işlemini hızlandırır