Оболочки

Во многих дистрибутивах Linux, в качестве системной оболочки, используется bash, в BSD семействе, в основном tcsh, bourne shell используется только для скриптов.

Фильтры, весьма полезная штука при работе в системной оболочке, могут работать через конвейер "|":

  • grep Совпадение с образцом
  • sed Найти и заменить строки или символы
  • cut Печать определенной колонки из совпадения
  • sort Цифровая или алфавитная сортировка
  • uniq Удалить из вывода(файла) дубликаты строк

Примеры использования:

# ifconfig | sed 's/  / /g' | cut -d" " -f1 | uniq | grep -E "[a-z0-9]+" | sort -r
# ifconfig | sed '/.*inet addr:/!d;s///;s/ .*//'|sort -t. -k1,1n -k2,2n -k3,3n -k4,4n

Первый символ в образце команды sed, табуляция, что-бы написать его в консоли, используйте ctrl-v ctrl-tab.

Системная оболочка bash

Перенаправления ввода/вывода и пайпы в bash и sh:

# cmd 1> file                         # Пренаправить stdout (стандартный вывод) в файл.
# cmd 2> file                         # Перенаправить stderr (стандартный вывод ошибок ) в файл.
# cmd 1>> file                        # Перенаправить stdout и дописать его в файл.
# cmd &> file                         # Перенаправить все stdout и stderr в файл.
# cmd >file 2>&1                      # Пренаправить stderr в stdout и потом в файл.
# cmd1 | cmd2                         # Пайп stdout на вход команды cmd2
# cmd1 2>&1 | cmd2                    # Пайп stdout и stderr команде cmd2

Настройка оболочки в файле конфигурации ~/.bashrc ( так-же может быть ~/.bash_profile ).

# in .bashrc
bind '"\e[A"':history-search-backward # Использовать клавиши "вверх" и "вниз" для поиска.
bind '"\e[B"':history-search-forward  # История введенных команд
set -o emacs                          # Установить emacs режим в bash (см. ниже)
set bell-style visible                # Не подавать звуковой сигна, инверировать цвета
# Настройка приглашения строки [[email protected]]/path/todir>
PS1="\[\033[1;30m\][\[\033[1;34m\]\u\[\033[1;30m\]"
PS1="$PS1@\[\033[0;33m\]\h\[\033[1;30m\]]\[\033[0;37m\]"
PS1="$PS1\w\[\033[1;30m\]>\[\033[0m\]"

Что-бы посмотреть используемые псевдонимы(alias) команд, используйте команду alias

alias  ls='ls -aF'                    # Добавить индикатор (один из */=>@|)
alias  ll='ls -aFls'                  # Лмстинг файлов и каталогов
alias  la='ls -all'
alias ..='cd ..'
alias ...='cd ../..'
export HISTFILESIZE=5000              # Увеличить историю
export CLICOLOR=1                     # Использовать цвета (если возможно)
export LSCOLORS=ExGxFxdxCxDxDxBxBxExEx

Системная оболочка tcsh

Перенаправления и пайпы для tcsh и csh (> и >> действуют как в sh):

# cmd >& file                         # Перенаправить stdout и stderr в файл.
# cmd >>& file                        # Добавить вывод stdout и stderr в конец файла.
# cmd1 | cmd2                         # Перенаправить stdout на вход cmd2
# cmd1 |& cmd2                        # Перенаправить stdout и stderr на вход cmd2

Настройка оболочки csh(tcsh), делается в файле ~/.cshrc, перезагрузить можно командой source .cshrc. Примеры:

# in .cshrc
alias  ls      'ls -aF'
alias  ll      'ls -aFls'
alias  la      'ls -all'
alias  ..      'cd ..'
alias  ...     'cd ../..'
set   prompt    = "%B%n%b@%B%m%b%/> " # Приглашение командной строки: [email protected]/path/todir>
set   history   =  5000
set   savehist  = ( 6000 merge )
set   autolist                        # Список возможного дописывания команд по нажатию Tab
set   visiblebell                     # Не выдавать звуковой сигнал, инвертировать цвета

Цепляем клавиши и цвета:

bindkey -e     Select Emacs bindings  # Использовать сочетания клавиш emacs для редактирования командной строки
bindkey -k up history-search-backward # Использовать и для поиска
bindkey -k down history-search-forward
setenv CLICOLOR 1                     # Использовать цвета (если возможно)
setenv LSCOLORS ExGxFxdxCxDxDxBxBxExEx

Режим emacs, включает горячие клавиши в стиле emacs, для редактирования командной строки. Это очень удобно и не только для пользователей emacs. Часто используемые команды:

  • C-a Переместить курсор в начало строки
  • C-e Переместить курсор в конец строки
  • M-b Переместить курсор на одно слово назад
  • M-f Переместить курсор на одно слово вперед
  • M-d Удалить слово слева
  • C-w Удалить слово справа
  • C-u Удалить все до курсора
  • C-k Удалить все после курсора
  • C-y Вставить в строку последнее вырезанное
  • C-_ Назад

Справка: C- = зажать Ctrl, M- = зажать meta (обычно клавиша Alt или Esc).