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 | зайти куда-нибудь по этому протоколу |