BASHмачника вызывали? j1m (j1m@list.ru) Хакер, номер #075, стр. 075-098-4 Обычно PS1 содержит нечто вроде [\u@\h:\W]\$ , и приглашение выглядит так: [jim@localhost:share]$ Но это не слишком удобно, да и индивидуальность теряется. Поэтому нам нужно придумать что-нибудь поинтереснее. К примеру: export PS1="-=<\w>=<\t>=-> " Код очень простой и понятный, приглашение будет содержать рабочий каталог и текущее время. Может, для кого-то такой вариант и покажется удобным, но только не для меня. Для большего удобства сюда неплохо было бы добавить код завершения последней команды и количество фоновых задач. Смотри, как это можно сделать: export PS1="=(\w)=(\t)=(\j:\$?)=> " Здесь мы обратились к одной из стандартных переменных bash – «$?». Она-то как раз и содержит код завершения последней выполненной команды. Вообще, в промпте можно использовать любые переменные bash, только не забудь ставить перед ними обратный слэш («\»). Да, получилось неплохо и довольно информативно, но как-то длинно. Но, используя двустрочное приглашение, можно решить и эту проблему: export PS1="=(\w)=(\t)=(\j:\$?)=\n=> " Выглядеть оно будет так: =(~)=(16:29:26)=(0:0)= => То есть мы просто поместили всю информацию в первую строку, а вторую оставили практически пустой для ввода команд. Такой результат работы переменной PS1 на первый взгляд кажется невзрачным, но достаточно только привыкнуть... На десерт предлагаю тебе включить в приглашение количество свободной оперативки: get_freemem () { echo -n `free | grep Mem | awk '{ print $4 }'` } export PS1="=(\w)=(\t)=("'`get_freemem`'")=(\j:\$?)=\n=> " Этот код нужно вставить в /etc/profile или в ~/.profile. От разъяснений воздержусь, смотри прошлые выпуски журнала. Скажу лишь, что необходимо создать функцию, выводящую необходимую инфу, а затем подставить результат ее выполнения в приглашение. Настройка readline. Как я уже говорил, эта библиотека отвечает за обработку пользовательского ввода, а также за автодополнение и историю команд. От правильной ее настройки тоже многое зависит, например возможность вводить символы из расширенного набора. В качестве конфигов readline использует два файла: /etc/inputrc и ~/.inputrc. Вот что я бы порекомендовал тебе прописать в один из этих файлов: # vi /etc/inputrc /* не пищать! */ set bell-style visible /* показывать все варианты автодополнения после первого нажатия <TAB> по умолчанию после второго */ set show-all-if-ambiguous on /* показывать типы файлов при автодополнении («*» - исполняемый, «/» - каталог и т.д.) */ set visible-stats on /* следующие четыре опции разрешают ввод и отображение восьмибитных символов (нужно для ввода русского текста) */ set meta-flag on set input-meta on set convert-meta off set output-meta on В помощь забывчивым За все время существования bash для него было написано множество дополнений различного назначения. Но самым полезным и популярным стал пакет bash_completion. Поможет он в первую очередь тем, кто постоянно забывает доступные флаги команд. Работа его основана на принципе автодополнения и похожа на раскрытие путей. Например ты набираешь в командной строке «cvs», нажимаешь <TAB>, и на экране появляется список доступных флагов, потом вводишь «cvs ch», опять <TAB>, и команда принимает вид «cvs checkout» (btw, у параметра checkout есть псевдоним co. - Снова вмешался редактор). Конечно, поддерживаются не все команды, но с большинством такой прием будет работать. |