Перевод сборника команд Unix ToolBox. Раздел 20. Shells (Оболочки)
20. Оболочки
Во многих дистрибутивах 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.
20.1 Системная оболочка 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 # Не подавать звуковой сигна, инверировать цвета # Настройка приглашения строки [user@host]/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
20.2 Системная оболочка 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%/> " # Приглашение командной строки: user@host/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).