Готин Bash хак за изтриване на път
Забелязъл съм нещо интересно, което може да се прави в csh, но работи по друг начин в bash.
Да речем че съм написал някакъв дълъг път:
/mnt/storage/mp3/Manowar
... и се сетя че всъщност не съм имал предвид "Manowar" като последна директория, а "rammstein". Единия начин да оправя това е като набия 7 backspace-а и да изтрия всяка буква поотделно, докато стигна до наклонената черта. Ами ако се сетя че "rammstein" не е в "mp3", а в "/mnt/storage/Music"? Тогава чаткането по backspace става още повече.
В csh това става елементарно с CTRL-W - комбинацията изтрива всичко от командния ред до предната наклонена черта.
Така
/mnt/storage/mp3/Manowar
става
/mnt/storage/mp3/
с един CTRL-W. Следващия CTRL-W ще махне "mp3/", следващия ще махне "storage/" и т.н.
Гугъл върна един резултат на това търсене - тук в Shallow Thoughts.
На кракто решението е следното:
Това отива в ~/.inputrc:
set bind-tty-special-chars Off
А това отива в ~/.bash_profile:
bind '\C-w:backward-kill-word'
Шела се рестартира (logout -> login) и трябва да работи.
Обяснение на дълго защо се случва това - в горния линк.

January 17th, 2011 at 2:14 pm
Що просто не направиш ^mp3^Music^ ?
January 17th, 2011 at 2:17 pm
Не те разбрах?
Всъщност в духа на идеята - открих че в Убунту (rxvt-unicode) ALT+BACKSPACE работи със същия ефект по дефаулт без никакви настройки
January 17th, 2011 at 2:21 pm
^String1^String2^ замества String1 със String2 в последната команда. Има го във всеки урок по bash
January 17th, 2011 at 3:29 pm
Да но това прави друго. Идеята е да редактираме текущата команда, която още не си изпълнил както е недописана. А и даже в случай че командата е изпълнена, по-оптимално (от гледна точка на ергономичност и брой keystrokes) ми изглежда да я върна от историята (UP), да изтрия нужния брой директории (ALT+BACKSPACE) и да си напиша поправката.