Перевод сборника команд Unix ToolBox. Часть 20 Оболочки

0
36

Оболочки

Во многих дистрибутивах 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 # Не подавать звуковой сигна, инверировать цвета
# Настройка приглашения строки [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
Системная оболочка 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).

НЕТ КОММЕНТАРИЕВ

ОСТАВЬТЕ ОТВЕТ