Puncte:1

Comandă la îndemână pentru editarea comenzii greșite executate anterior și pentru suprascrierea intrării în istoric cu cea fixată

drapel za

până de curând eram destul de sigur că fc comanda deschide comanda executată anterior în editorul implicit, execută modificările trimise și suprascrie ultima intrare din istoricul bash. Cu toate acestea, se pare că comanda recent executată este de fapt atașată la sfârșitul istoricului bash, așa că încă rămâne una greșită (care dorea să fie corectată).

Deoarece mi se pare foarte iritante comenzile necorespunzătoare din istoricul bash, deoarece din când în când dau peste ele, mă întrebam dacă shell-ul bash ar putea fi configurat cumva pentru a suprascrie intrarea de editare - în primul rând, sunt interesat să suprascriu intrarea anterioară, dar soluția pentru suprascrierea oricărei intrări din istorie ar fi și mai bună! Sunt destul de sigur că există deja așa ceva (probabil chiar disponibil ca proprietate într-un fișier de configurare sau ca adăugare a unor argumente la invocarea comenzii), dar nu am obținut rezultate utile când îl caut pe web.

Am găsit un răspuns pe care îl ofer ca răspuns la această întrebare, dar dacă altcineva are o soluție și mai bună, nu ezitați să împărtășiți.

zeko868 avatar
drapel za
Ne pare rău, nu este exact ceea ce am căutat, deși există câteva segmente utile în unele răspunsuri. Am postat un răspuns așa cum intenționam și anunțam inițial. Aici este șters istoricul complet și am vrut doar să elimin ultima intrare din istoric - de preferință prin editarea acesteia într-un editor de text, așa cum este cazul cu comanda *fc*.
Puncte:1
drapel za

Această soluție mi se pare destul de promițătoare după ce o folosesc de ceva vreme.

Adăugați următoarele la dvs ~/.bashrc fişier:

shopt -s histappend
PROMPT_COMMAND="istoric -a; istoric -c; istoric -r; $PROMPT_COMMAND"
fc_override_prev_command_if_no_args() {
        dacă [ $# -eq 0 ]; atunci
                fc
                istoric -d $(wc -l < ​​~/.bash_history)
                istorie -w
                istorie -c
                istorie -r
        altfel
                fc $@
        fi
}
alias fc=fc_override_prev_command_if_no_args

Ceea ce face aceasta este schimbându-se comportamentul fc comanda când este apelată fără argumente. Când este chemat cu argumente, l-am făcut să se comporte așa cum se comportă de obicei, deoarece altfel comportamentul său ar induce în eroare fără dacă/altfel/fi bloc, și fără altfel parte că n-ar face absolut nimic.

Pe de altă parte, atunci când nu sunt furnizate argumente, atunci fc comanda este executată, ultima intrare din istoricul bash este abandonată și istoricul stocat în cache este reîncărcat din fișier.

Partea cu realocarea variabilei PROMPT_COMMAND de la care am împrumutat Aici și l-am găsit util, deoarece comenzile trimise sunt disponibile instantaneu în istoriile bash ale altor terminale deschise în prezent cu bash (OK, nu chiar instantaneu, dar chiar și o acțiune precum trimiterea SIGINT semnalul cu Ctrl+C este suficient pentru a reîncărca memoria cache a istoricului).

Simțiți-vă liber să editați acest răspuns sau să comentați dacă considerați că unele părți ale soluției nu sunt necesare.

Link către esenta cu fragmentul de mai sus este disponibil Aici

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.