bash - Одна из наиболее удобных и популярных современных разновидностей командной оболочки UNIX; особенно популярна в среде Linux, где она часто используется в качестве предустановленной командной оболочки.
Стандартные потоки и работа с ними
В bash существует особая система потоков: 0 (stdin), 1 (stdout), 2 (stderr).
- stdout — стандартный вывод программы.
- stdin — стандартный ввод. По сути это то, что набирает пользователь в консоли.
- stderr — стандартный вывод ошибок.
Для операций с этими потоками, существуют специальные символы: > (перенаправление вывода), < (перенаправление ввода). Символ & означает указатель на 1 (stdout).
| 1>filename | Перенаправление вывода в файл «filename», файл перезаписывается поступающими данными |
| 1>>filename | Перенаправление вывода в файл «filename», данные добавляются в конец файла |
| 2>filename | Перенаправление стандартного вывода ошибок в файл «filename» |
| 2>>filename | Перенаправление стандартного вывода ошибок в файл «filename», данные добавляются в конец файла |
| &>filename | Перенаправление вывода и ошибок в файл «filename» |
| 2>&1 | Перенаправление вывода ошибок на стандартный вывод |
Как один из вариантов грамотного применения перенаправления ввода/вывода, можно назвать разбор и "сшивание" вывода от команд. Это позволяет создавать файлы отчетов и журналов регистрации событий.
| Создает файл, содержащий список дерева каталогов. |
| ls -lR > dir-tree.list |
Отдельно следует упомянуть такое понятие, как конвейр.
Конвейеры (еще их называют каналами) - это классический способ взаимодействия процессов,
с помощью которого stdout одного процесса перенаправляется на stdin другого.
Обычно используется совместно с командами вывода, такими как cat или echo, от которых поток данных
поступает в "фильтр" (команда, которая на входе получает данные, преобразует их и обрабатывает).
| Сшивается 2 файла, после чего по их содержанию осуществляется поиск |
| cat file1 file2 | grep some_word |
Рассмотрим дополнительно некоторые спец.символы
| символ | смысл |
| ; | разделение последовательности команд |
| $ | вызов содержания переменной |
| ./ | текущий рабочий каталог |
| ../ | каталог уровнем выше |
| / | корень сервера |
| ~/ | личная директория пользователя |
| ? | какой-либо символ |
| * | множество символов |
| # | строка-коментарий |
| \ | экранирование следующего символа |
| '' | экранирование содержимого, полностью |
| "" | экранирование содержимого, почти полностью |
| [] | подстановка команды |
| : | пустая команда |
| {} | создание списка команд |
| символ | смысл |
| Команда | Описание | Часто применяемые флаги | Пример использования |
| wc | wc по умолчанию подсчитывает число строк, слов и байтов в указанном файле. Если указано более одного значения для файла, то результатом подсчёта является общее количество строк. Если файл не указан или указано значение -, то команда считывает стандартный ввод. Словом команда считает последовательность ненулевой длины, состоящую из символов, отделённых пробелами от других слов. | -c, подсчитывает количество байтов
-m, подсчитывает количество символов -l, подсчитывает количество строк -L,подсчитывает длину самой длинной строки -w,подсчитывает количество слов | wc aba 1 1 3 |
| find | ищет указаное, возвращает путь до искомого | -name, искать по имени файла | find ~ -name 'somthing' /somwhere/somthing |
| echo | возвращает поданое команде | echo "123" 123 | |
| pwd | показывает абсолютный путь к рабочей директории | pwd /somwhere | |
| ls | показывает спискок чего-нибудь (изначально список файлов) | -R, рекурсивный обход дерева каталогов -S -- сортировка по размеру файлов -t -- сортировка по времени последней модификации -d показыает директории | |
| mkdir | сотворить папку | ||
| rm | удалить что-либо | ||
| cat | сшить что-либо | ||
| rmdir | удалить директорию | ||
| less | просмотреть содержание файла | ||
| more | просмотреть содержание файла с большим функционалом | ||
| head | просмотреть заголовок файла | ||
| nano | просмотреть содержание файла при помощи текстового редактора | ||
| grep | осуществить построчный поиск | ||
| man | просмотр мануала | ||
| cd | сменить рабочую директорию | ||
| ping | узнать пинг до чего-нибудь | ||
| cp | скопировать что-то куда-то | ||
| scp | зайти куда-нибудь по этому протоколу |
