Bash общая информация
Консоль работает с текстом, поэтому центральная задача - обработка текста.
Поиск приложения: whereis name
~ - домашняя директория, ~sergey домашняя директория пользователя sergey
cd без аргументов в домашнюю, cd - в предыдущую
Маски для ls
? | один символ |
* | много символов |
[set] |
Набор символов, в данном случае s,e,t [a-c] a,b,c [!0-9] где нет цифр |
{} |
перечисляются наборы текста, например echo f{io,am} |
Утилиты фильтрации текста
cat |
перенаправление ввода на вывод -b - нумеровать только непустые строки; cat file1 file2 > file3 |
grep |
поиск строк во вводе Может анализировать один файл или директорию. -e несколько регулярных выражений, например -e ... -e ... -n номер строки, где найдено совпадение -i, --ignore-case - не учитывать регистр символов; |
sort |
сортировка строк -b - не учитывать пробелы ls -l | sort -k9 |
cut |
извлечение символов из ввода -b 2-6, 8 отобразит символы от 2 по 6 из строки и 8 -b 5- символы с 5 до конца -с нечто похожее на -b -d ':' -f 1,3 считать разделителем : и оставить первый и третий столбцы |
sed |
операции изменения данных перед выводом Позволяет вырезать строки, поиск/замена по регулярке, вывод. Крутая штука. |
tr | транслирование символов на вводе в другие символы |
Фоновые задачи
Фоновые задачи не получают данные от клавиатуры
Команда | Что делает |
---|---|
command & |
Запускает процесс в фоне |
jobs |
Показывает список фоновых задач (с job ID: %1 , %2 …) |
fg %N |
Переводит задачу номер N в передний план |
bg %N |
Возобновляет приостановленную задачу в фоне |
Ctrl+Z |
Приостанавливает текущий процесс (отправляет в «stopped») |
kill %N |
Завершает задачу по её job ID |
kill PID |
Завершает задачу по PID |
kill -9 PID |
Жёсткое завершение (если обычный kill не помог) |
disown %N |
«Отвязывает» задачу от текущего терминала (будет жить после выхода) |
`ps aux | grep name` |
pkill -f pattern |
Завершение процессов по шаблону |
История ввода команд
Хранится где-то в сессии, сохраняется в .bash_history при закрытии сессии. Для просмотра введенных команд в пределах сессии используется утилита fc
-l |
Последние 15 команд 4 выведет четвертую команду 4 7 команды с 4 по 7 строка - выведет с первого вхождения строки (из 15) и далее |
-n | без вывода номеров |
-e nano |
без дальнейших аргументов - редактирование последней команды и затем исполнение Чтобы не вводить редактор, можно в .bash_profile добавить переменную FCEDIT=nano |
!! исполнение предыдущей команды
Специальные файлы
.bash_profile, .bash_logout, .bashrc Если отсутствуют - используются файл /etc/profile и файлы из /etc/profile.d
.bash_profile - сейчас не используется.
В .profile переменные окружения, .bashrc - скрипты. .bash_login при входе. Но идея осталась.
Последовательность поиска при авторизации, исполняется первый найденный
-
~/.bash_profile
-
~/.bash_login
-
~/.profile
Исполняет команды при каждом входе в систему.
Итого:
~/.bashrc
Используется в интерактивных (обычных) shell-ах. Сюда кладём то, что нужно только в терминале:
- алиасы (alias ll='ls -lh')
- функции (mkcd() { mkdir -p "$1" && cd "$1"; })
- настройки PS1 (prompt, цвета)
- shopt и настройки истории (HISTSIZE, HISTCONTROL)
- подключение fzf, автодополнений и прочих «тюнингов»
~/.profile
Используется при login-shell (и не только Bash, а sh/dash/zsh тоже могут его читать). Сюда кладём:
- переменные окружения (PATH, EDITOR, LANG, JAVA_HOME)
- настройки, которые должны работать и в GUI-программах (например, экспорт GTK_THEME или XMODIFIERS)
- запуск программ при логине (например, ssh-agent или gnome-keyring-daemon)
~/.bash_profile или ~/.bash_login
Сегодня почти не нужны. Если они есть, то Bash не будет читать ~/.profile.
source .profile - перечитать файл
.bashrc
Создание алиасов: alias cdvoy='cd sipp/demo/animation/voyager'
Пробел перед закрывающей ' означает ожидание ввода пользователя.