Мы — долго запрягаем, быстро ездим, и сильно тормозим.
www.lissyara.su —> статьи —> FreeBSD —> Мелочи —> настрока bash

Юзабельный bash под FreeBSD

Автор: nikll.


1. Установка bash.

Для начала установим bash из портов, я это делаю вот так:
cd /usr/ports/shells/bash;
make -DNOPORTDOCS -DWITH_STATIC_BASH -DNO_DYNAMICROOT -DNOSHARED \
-DWITHOUT_HELP CONFIGURE_ARGS+="--bindir=/bin" deinstall install clean;
# опции:
# -DNOPORTDOCS -DNOSHARED -DWITHOUT_HELP -  не устанавливать doc info man help 
#                                               (на ваше усмотрение)
# -DWITH_STATIC_BASH  и -DNO_DYNAMICROOT - статическая сборка, чтобы для работы
#                                         bash не требовались другие библиотеки

После чего мы получим полноценный установленный в /usr/local bash, но с исполняемым файлом в корне "/bin/bash" которому для работы нетребуются другие библиотеки.

Теперь можно отредактировать у всех профилей сшелл и другие параметры, делаем:
chpass root


и правим следующие строчки:
Class: russian
Shell: /bin/bash

Class: russian - для включения русификации
Shell: /bin/bash - полный путь к сшелу

2. Русификация консоли.

Немного повторю советы других авторов и покажу как заствить фрю говорить по русски.
Поправляем /etc/rc.conf к следующему виду:
font8x14="koi8-r-8x14"
font8x16="koi8-r-8x16"
font8x8="koi8-r-8x8"
keymap="ru.koi8-r.win"
keyrate="fast"

строчки font* задают русский шрифт в кодировке koi8-r для консоли
keymap задает нормальную виндовую раскладку клавиатуры с переключением между языками по нажатию комбинации клавиш CTRL+SHIFT
keyrate="fast" - чтобы клава нетупила

Для применения изменений без перезагрузки сделайте:
/etc/rc.d/syscons restart

ну и обязательно добавте в /etc/profile настройки локализации:
export LANG=ru_RU.KOI8-R
export LC_ALL=ru_RU.KOI8-R

Все теперь наша фря русскоязычна.
Также можно установить русские маны по этой статье http://www.lissyara.su/?id=1313

3. Настройка клавиш клавиатуры.

Создаем файл /etc/inputrc со следующим содержанием:
$if term=cons25r
        "\C-?": delete-char
$endif

Таким образом, для терминалов cons25r, мы привязываем к клавиши с кодом "\C-?" (во фре это del) действие delete-char, вместо назначенного по умолчанию backward-delete-char
весь список возможных действий и кодов назначенных им клавиш можно посмотреть при помощщи:
bind -lpvs

Аналогичным способом настраиваються и другие терминалы клавиши, у меня например сделанн целый набор сочетаний клавиш для удобной работы с консолью, и иксовыми терминалами.

4. Приглашение коммандной строки и удобные команды.

Правим /etc/profile до следующщего вида:
export LANG=ru_RU.KOI8-R
export LC_ALL=ru_RU.KOI8-R
export EDITOR=ee
export PS1="\[\033[03;34m\][\[\033[03;38m\]`whoami`@\h\[\033[03;34m\] \W ]\\$ \[\033[00m\]"
alias kde="startx `which startkde`"
alias rdesktop="rdesktop -g 1022x732 -N -L KOI8-R -u kotlyarov"
alias ls='ls -GAh'
alias ll='ls -l'
alias cp='cp -i'
alias cpr='cp -iR'
alias rm='rm -i'
alias rmr='rm -fr'
alias grep='grep --color'
alias fgrep='fgrep --color'
alias ll='ls -lGAh'
alias df='df -h'
alias du='du -h'
alias h='fc -l'
alias m='more'

Комментарии:
export LANG=ru_RU.KOI8-R    
export LC_ALL=ru_RU.KOI8-R  - задаем локализацию
export EDITOR=ee    - устанавливаем свой дефолтный редактор вместо непривычного vi
export PS1="\[\033[03;34m\][\[\033[03;38m\]`whoami`@\h\[\033[03;34m\] \W ]\\$ \[\033[00m\]" - а это собственно настройка приглашения коммандной строки, конструкции типа "[\033[03;34m\]" задают цвет символов следующщих за ними, по сотальным параметрам можно подробно почитать в манах или интете, благо это достаточно хорошо описанно
alias * -  настраиваем юзабельность нужных нам комманд и придумываем свои команды




размещено: 2008-04-18,
последнее обновление: 2008-04-18,
автор: nikll


Григорй Ситнин, 2008-04-18 в 21:07:42

А зачем "CONFIGURE_ARGS+="--bindir=/bin""?
PREFIX=/ не проще?

К тому же, у меня на семёрке даже и не сработало.

nikll, 2008-04-19 в 16:39:04

PREFIX=/ не проще, если делать так то в корень падает куча лишнего мусора...
Странно у меня на 6.2 6.3 и 7.0 работает, может поподробнее напишеш что и как несработало?

Григорй Ситнин, 2008-04-19 в 16:49:06

Да подробностей никаких, просто порт собрался с бинарником в /usr/local/bin и всё.

nikll, 2008-04-19 в 16:56:22

Странно.... хм...
сделай:
cd /usr/ports/shells/bash ;
make clean deinstall ;
script ~/bash.log  make -DNOPORTDOCS -DWITH_STATIC_BASH -DNO_DYNAMICROOT -NOSHARED -DWITHOUT_HELP -CONFIGURE_ARGS+="--bindir=/bin" make isntall clean ;
и вышле мне на мыло файл ~/bash.log

Григорий Ситнин, 2008-04-20 в 3:18:06

Ломает =)

opt1k, 2008-04-22 в 18:23:54

Чорд, где же лисяра с криками типа "bash, енто нифига не родное!!!!..." заранее +1 лису :)

lissyara, 2008-04-22 в 18:45:18

bash, енто нифига не родное!!!!... =)
========
ну, моё мнение все знают.
а что касается бинарников нагаженных в системе...
После этого вообще ничё писать не хочется.
Сразу видно - линуксоиды.

nikll, 2008-04-26 в 10:08:54

Согласен баш это не родное, скажу по секрету кроме баша есть еще огромная куча "не родного" чего мы устанавливаем из /usr/ports но чото не стремаемся.....
Главое не то что родое а что нет, главное чтобы удобно и практичо было, а это уже зависит только от привычек пользователя....
Кому то удобнее csh/tcsh/sh а мне bash, даже больше скажу есть люди котоым ДЕЙСТВИТЕЛЬНО удобно работать в гноме :)

eJ, 2008-06-11 в 11:08:11

Настройка клавиш Insert, Delete, Home, End, Page-Down, Page-Up для bash:

cat ~/.inputrc
set meta-flag on
set input-meta on
set convert-meta off
set output-meta on

# allow the use of the Home/End keys
"\e[1~": beginning-of-line
"\e[4~": end-of-line

# allow the use of the Delete/Insert keys
"\e[3~": delete-char
"\e[2~": quoted-insert

# alternate mappings for "page up" and "page down" to search the history
"\e[5~": history-search-backward
"\e[6~": history-search-forward

mcat, 2008-11-12 в 6:29:20

приглашение коммандной строки с выводом времени
PS1='(\[$(tput md)\]\t <\w>\[$(tput me)\]) $(echo $?) \$ '

turbina, 2008-11-14 в 0:23:52

а я зделал проще, говорят не толково менять шел для рута по умолчанию  - поэтому просто создаем ~/.bashrc и туда кидаем все настройки какие хотим, логинимся рутом и просто меняем интерпритатор набрав "bash" - и все..

nikll, 2008-11-14 в 9:18:16

Гы! а чо бы и не поменять, ведь в однопользовательском всервано выбор предлагается и по дефолту /bin/sh запускается, а ежели система нормлаьно работает то что бы и более удобным шелом не пользоваться.
Кста в фрях есть еще один рут, toor называется, у него по дефолту /bin/sh запускется, полезно если bash не статически собран и повредится какаянить библиотечка.

Pawko, 2008-11-20 в 14:28:26

Полезно... пошел устанавливать bash... ты прав... оно не муляет... а если что - и помогает

Cardinal, 2008-11-24 в 16:05:44

В bash alias не работает. Толку от этих алиасов ноль.

nikll, 2008-11-24 в 16:47:33

Млин... так и хочется ляпнуть какую нибудь гадость....
короче скажу так: если у тебя не получилось значит ты сделал где-то ошибку, алиасы работают прекрастно!

GUGA, 2008-11-30 в 13:06:57

А кто подскажет как зделать чтобы шрифт в консоли был зеленым

svol, 2008-12-19 в 13:04:18

2GUGA
man vidcontrol

Damir, 2009-03-19 в 9:04:02

А чтобы по дефолту для определенного пользователя консоль была зеленой?

tim-s, 2009-07-10 в 9:44:47

Спасибо за статью автору ,но немного поправлю. У меня почемуто) при записи профиля на строку Shell: /bin/bash фряха сругалась, т.к. путь оказался другой Shell: /bin/local/bin/bash, и при записи новой все ОК!.

tim-s, 2009-07-10 в 9:45:55

Прошу прощения!!!
Shell: /usr/local/bin/bash

tim-s, 2009-07-10 в 9:50:06

И по поводу шрифтов могу добавить, лучше не копировать со стотьи в rc.conf а делать через тот же sysinstall -> Configure -> Console , а там выбираем везде KOI8-R, ну или что по вкусу другое)))

ZeVVS, 2009-09-23 в 21:36:38

Народ. Перерыл весь инет, как настроить перебор комманд после написания первых нескольки символов? В линухе такая система:
"e\[A": history-search-backward
"e\[B": history-search-forwart
Во фре не работает. Заношу и в /etc/inputrc и в ~/.inputrc. Попробовал комбинацию от eJ:
# alternate mappings for "page up" and "page down" to search the history
"\e[5~": history-search-backward
"\e[6~": history-search-forward
Работает, но только под юзверем. Под рутом не пашет. Может кто знает, как историю стрелочками все же сделать?

nikll, 2009-09-24 в 9:35:46

cat /etc/inputrc
\"\\C-?\": delete-char
\"\\e[A\": history-search-backward
\"\\e[B\": history-search-forward

set show-all-if-ambiguous On

тоже самое каждому юзеру в ~/.inputrc
у меня уже который год работает идеально

nikll, 2009-09-24 в 9:36:10

"\C-?": delete-char
"\e[A": history-search-backward
"\e[B": history-search-forward

set show-all-if-ambiguous On

ZeVVS, 2009-09-24 в 16:03:45

Чувак! Респект тебе и уважуха ;)
Дело оказывается было всего в одном параметре:
set show-all-if-ambiguous On

Я несколько лет пользовался csh, но последнее время пришлось перелезть на bash, и без этой возможности чувствовал себя безруким :)

Mobilesfinks, 2009-10-27 в 15:12:28

Вопрос тупой
Возможно ли сделать в csh что бы при не дописанной команде и нажатии TAB выводился список возможных команд? В BASH мне эта функция очень нравится.

lissyara, 2009-10-27 в 15:13:46

lissyara$ grep autoli ~/.cshrc
       set autolist = TAB
lissyara$

Проходящий мимо, 2010-12-09 в 0:35:29

[url=http://kerzoll.ru/page/ustanovka-basha] помогли реально решить проблему!

Проходящий мимо, 2010-12-09 в 0:36:21

http://kerzoll.ru/page/ustanovka-basha помогли реально решить проблему! Спасибо!

Creator, 2011-04-19 в 14:10:01

в bash'е ковырял в сторону LSCOLORS - видимо не доковырял чего то.
суть: цвет фона по умолчанию у меня выставлен в Putty на 0,0,128 (голубой фон). по команде, например, "ls -lAG" - цвет каталогов практически невиден.
где его можно "осветлить"?

Антоша, 2011-07-23 в 20:08:40

Исправьте анкор к статье «настроЙка bash» =)

Dmitry, 2012-09-22 в 2:17:02

which bash
/usr/local/bin/bash

ls -l /bin/bash
ls: /bin/bash: No such file or directory

можно сделать ссылку, но правильно ли это.

Dmitry, 2012-09-22 в 2:19:52

ступил.

автор указал ключи после make.

а как же, если portupgrade -afrR делать будем.
сбросятся ключи же.

Dmitry, 2012-09-22 в 3:51:46

в приглашении теперь вот такое:
\[\033[03;34m\][\[\033[03;38m\]dmitry@freebsd\[\033[03;34m\] dmitry ]$ \[\033[00m\]

перепроверил раз 10 все.

вернулся назад.
видимо, статья старая. под старые версии bsd.

в однопользовательском режиме еще ругань стала "/bin/sh: Syntax error: Unterminated quoted string"

возврат не помогает.
откатился rsync'ом. благо, была копия. загрузившись с live cd.
все ок.

Затем, еще раз перечитал. блин. так же изменил rc.conf и  /etc/profile

Один хер. все те же глюки.

FreeBSD 9.0

gfyyjmntgh, 2013-01-16 в 18:25:43

Товaрищщи! Это пoля для ввoда комментариeв к стaтье, а нe для вопрoсoв. Сюдa пишитe найденныe бaги, или какиe-тo фичи :)
Для вопросов есть форум!

Александр, 2018-07-22 в 20:15:19

## Одна из главных вкусностей - aliases
alias ll='ls -l'
alias la='ls -A'
alias l='ls -CF'
alias lt='ls -lt'

## Colour Prompt
COLOR_RED="\[\033[1;31m\]"
COLOR_WHITE="\[\033[0;00m\]"
COLOR_GREEN="\[\033[0;32m\]"

export PS1="${COLOR_RED}\u${COLOR_WHITE}@${COLOR_RED}\h:${COLOR_WHITE}\w# "

Алекс, 2018-07-24 в 21:39:50

PS1='\t \[[\e[0;32m\]\u\[\e[m\]@\e[0;37m\]\h\[\e[m\] \[\e[1;34m\]\w\[\e[m\]]\[\e[0;31m\] \[\e[32;44m\]$(parse_git_branch)\[\e[0;31m\] \$\[\e[m\]\[\e[0;37m\] '

export PS1
date=`date "+%Y_%m_%d %H-%M"`;
datea=`date "+%A"`;
systt=`uname -r`;

  echo -e "                                                                 ";
  echo -e "\033[1;31;40m******************************************* \033[1;34;40m";
  echo -e "\033[1;31;40m*     Welcome in  \033[1;33;40m[ $date ]\033[1;31;40m    *\033[1;33;40m";
  echo -e "\033[1;31;40m*\033[1;37;40m   $systt  =   $datea          \033[1;31;40m*";
  echo -e "\033[1;31;40m*     You are logged as:  \033[1;33;40m$USER\033[1;31;40m            * \033[1;34;40m";
  echo -e "\033[1;31;40m*                         \033[1;33;40m2:462/46\033[1;31;40m        *\033[1;33;40m";
  echo -e "\033[1;31;40m******************************************* \033[1;37;40m";
  echo -e "                                      ";
  echo -e " - начинаем работу с создания скрина: # screen -a";
  echo -e " - создание окон screen_name: # screen -t screen_name";
  echo -e " - создание нового окна: [ Ctrl + a + c ]";
  echo -e " - удаление окна: [ Ctrl + d ]";
  echo -e " - переключение между двумя последними открытыми окнами: [ Ctrl + a ]";
  echo -e " - переключение на следующее открытое окно: [ Ctrl + a + n ]";
  echo -e " - переключение на предыдующее открытое окно: [ Ctrl + a + p ]";
  echo -e " - отключение от окон: [ Ctrl + a + d ]";
  echo -e " - подключение к окнам: # screen -dr";
  echo -e " - после выхода к сессии можно вернуться при помощи: # screen -r";
  echo -e " - после аварийного выхода, отсоединение от скрина не всегда регистрируется,";
  echo -e "   при попытке повторного подключения выдается сообщение о том, что скрин активен, подключиться невозможно.";
  echo -e "   Подключение к такому скрину выполняется при помощи: # screen -x";
  echo -e "                                                                 ";

  echo    " Welcome in server [ $date ]" >> /var/log/rob.log ;

Алекс, 2018-07-24 в 21:45:56

PS1='\t \[[\e[0;32m\]\u\[\e[m\]@\e[0;37m\]\h\[\e[m\] \[\e[1;34m\]\w\[\e[m\]]\[\e[0;31m\] \$\[\e[m\]\[\e[0;37m\] '

незнаю что ето  parse_git_branch  

Алекс, 2018-07-24 в 21:49:14

# install bash
# chsh -s /usr/local/bin/bash root

Алекс, 2018-07-25 в 11:55:29

самое прикольное
alias he='cat /usr/home/sh/hellp'
alias se='echo service'
alias log='cd /var/log'
alias etc='cd /etc'
alias etc2='cd /usr/local/etc'
alias sh='cd  /usr/home/sh'
alias ftpp='cd  /usr/home/ftp'
alias sa='cd  /mnt'
alias db='cd  /var/db/mysql'
alias rc='cd  /usr/local/etc/rc.d'

Алекс, 2018-07-25 в 11:56:38

alias lx='ls -lXB'              # сортировка по расширению
alias lk='ls -lSr'              # сортировка по размеру
alias lc='ls -lcr'              # сортировка по времени изменения
alias lu='ls -lur'              # сортировка по времени последнего обращения
alias lr='ls -lR'               # рекурсивный обход подкаталогов
alias lt='ls -ltr'              # сортировка по дате

Alekd, 2018-07-25 в 15:24:39

https://www.opennet.ru/docs/RUS/bash_scripting_guide/a15124.html

как визивать

function ll(){ ls -l "$@"| egrep "^d" ; ls -lXB "$@" 2>&-| egrep -v "^d|total "; }

Alekd, 2018-07-25 в 16:02:22

Создаем файл  /etc/.inputrc у нужного пользователя командой touch
# touch /root/.inputrc
и добавляем в него  2 строчки
"\e[A": history-search-backward
"\e[B": history-search-forward
  Для чего это сделано: если вы помните начало предыдущих команд, вводите несколько символов, а потом стрелками верх-вниз выбираете - офигенно удобно.
Ну вот теперь стало намного удобнее работать.

Alexs, 2018-07-25 в 21:34:15

alias moscow='curl -4 wttr.in/Moscow'

)) погода

александр, 2019-03-15 в 22:53:11

alias engl='/root/engll.sh'

 echo " ===== Словник английська мова  ======== " ;
#  echo "  ";
#+    filename=/root/man/engl.txt  ;


rrrr=$(jot -r 1 1 4081)

# echo "-  -  -";
rrr=$rrrr
rrr1=$((rrr+1))
rrr2=$((rrr+2))
rrr3=$((rrr+3))
rrr4=$((rrr+4))
sed -n  $rrr"p"  < /root/man/engl.txt
sed -n  $rrr1"p"  < /root/man/engl.txt
sed -n  $rrr2"p"  < /root/man/engl.txt
sed -n  $rrr3"p"  < /root/man/engl.txt
sed -n  $rrr4"p"  < /root/man/engl.txt
 echo "======  Технічних  СКОРОЧЕНЬ  ===========";
# englteh.txt
rrrr=$(jot -r 1 1 1045)
rrr=$rrrr
rrr1=$((rrr+1))
rrr2=$((rrr+2))
rrr3=$((rrr+3))
rrr4=$((rrr+4))
sed -n  $rrr"p"  < /root/man/englteh.txt
sed -n  $rrr1"p"  < /root/man/englteh.txt
sed -n  $rrr2"p"  < /root/man/englteh.txt
sed -n  $rrr3"p"  < /root/man/englteh.txt



 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.1441 секунд
Из них PHP: 49%; SQL: 51%; Число SQL-запросов: 77 шт.
Исходный размер: 46873; Сжатая: 11341