Оболочка Bash — шпаргалка для начинающих
280К открытий307К показов
В данной шпаргалке затрагиваются следующие темы: введение в оболочку, навигация, основные команды, переменные окружения, коннекторы, конвейеры, перенаправление ввода/вывода, права доступа и комбинации клавиш.
Оболочка Bash: введение
Оболочка, или шелл (shell) — это программа, в нашем случае названная «bash», что является сокращением от Bourne Again Shell. Оболочка принимает ваши команды и передаёт их операционной системе. Для взаимодействия с системой используются терминалы, такие как gnome-terminal, eterm, nxterm и т. п.
Навигация
В Linux файлы и каталоги имеют иерархическую организацию, то есть существует некий начальный каталог, называемый корневым. В нём содержатся файлы и подкаталоги, которые в свою очереди содержат файлы и свои подкаталоги.
pwd
Команда pwd, сокращение от print working directory, отображает текущее местоположение в структуре каталогов.
cd
Команда cd позволяет перейти в новый каталог.
mkdir
Команда mkdir создаёт новый каталог в текущем каталоге.
Основные команды
man
Команда man отображает руководства по командам. Например, следующая команда выдаст всю информацию о команде cat:
cat
Команда cat считывает файл, переданный как аргумент, и выводит его содержимое по стандартному каналу вывода. Передача нескольких файлов в виде аргумента приведёт к выводу конкатенированного содержимого всех файлов.
echo
Команда echo выводит свои аргументы по стандартному каналу вывода.
Если вызвать echo без аргументов, будет выведена пустая строка.
head
Команда head читает первые 10 строк любого переданного текста и выводит их по стандартному каналу. Число выводимых строк можно изменить:
tail
Команда tail работает аналогично команде head, но читает строки с конца:
Также можно просматривать добавляемые к файлу строки в режиме реального времени при помощи флага -f:
less
Команда less позволяет перемещаться по переданному файлу или куску текста, причём в обоих направлениях.
Подробнее о назначении символа | будет рассказано ниже в разделе команды history.
true
Команда true всегда возвращает ноль в качестве выходного статуса для индикации успеха.
false
Команда false всегда возвращает не-ноль в качестве выходного статуса для индикации неудачи.
$?
$? — это переменная, которая содержит выходной статус последней запущенной команды. Под статусом обычно понимается код возврата программы. 0 означает успешное выполнение программы, любое значение большее 0 отражает тот факт, что в процессе выполнения возникли некоторые ошибки. Кстати, именно поэтому в bash истинной (true) считается 0, а все, что не 0 — ложью (false):
grep
Команда grep занимается поиском переданной строки в указанном файле:
grep также может принимать несколько файлов и регулярных выражений для уточнения формата текста.
Также можно ознакомиться с руководством по regex. У нас на сайте тоже есть руководство по «регуляркам» в Python для новичков.
sed
Команда sed — это потоковый редактор, преобразующий входные текстовые данные. Обычно её используют для замены выражений так: s/regexp/replacement/g. Например, следующий код заменит все слова «Hello» на «Hi»:
Также вы можете ознакомиться с руководством по sed.
history
Команда history выводит историю командной строки. Обычно её используют вместе с командой grep для поиска конкретной команды. Например, следующий код найдёт все команды, содержащие строку g++:
Здесь также используется символ | — это так называемый конвейер (pipe). Благодаря ему можно перенаправлять вывод одной команды на вход другой — таким образом в примере выше вся история, которая в обычном режиме выводится командой history прямо в вывод терминала, будет перенаправлена в grep в качестве входных данных. Мы не увидим вывода команды history, но увидим вывод команды grep.
Это может быть довольно сложно для понимания без практики, поэтому поэкспериментируйте самостоятельно, например с командами ls, history, ps (описана ниже), перенаправляя их вывод в grep, sed или less, например.
export
Команда export устанавливает переменные окружения для передачи дочерним процессам. Например, так можно передать переменную name со значением student:
ps
Команда ps выводит информацию о запущенных процессах.
Выводится четыре элемента:
- ID процесса (PID),
- тип терминала (TTY),
- время работы процесса (TIME),
- имя команды, запустившей процесс (CMD).
awk
Команда awk находит и заменяет текст в файлах по заданному шаблону: awk 'pattern {action}' test.txt
wget
Команда wget скачивает файлы из Сети и помещает их в текущий каталог.
nc
Команда nc — это утилита для отладки сети. Также можно ознакомиться с руководством по nc.
ping
Команда ping тестирует сетевое подключение.
Статистика в конце показывает количество подключений, совершённых до завершения команды, и время их выполнения.
git
Git — это популярная система контроля версий. Также можно ознакомиться с руководством по git и нашими материалами.
Переменные окружения
Переменные окружения — это именованные переменные, содержащие значения, используемые одним или несколькими приложениями.
Переменная PATH содержит список каталогов, в которых система ищет исполняемые файлы.
Переменная HOME содержит путь к домашнему каталогу текущего пользователя.
Коннекторы
Коннекторы позволяют запускать несколько команд одновременно.
Конвейеры
Конвейеры, или пайпы, позволяют соединять входные и выходные каналы различных команд. В следующем примере вывод команды ls будет передан в head , и в результате будет напечатано лишь 10 первых элементов.
Перенаправление ввода/вывода
Перенаправление вывода
Для стандартного перенаправления вывода используются символы > и >>.
Например, этот код передаст вывод ls в файл, а не на экран:
Если файл не существует, он создаётся, а если существует, то перезаписывается. Во избежание перезаписи стоит использовать команду >> — она дописывает данные в конец файла.
Перенаправление ввода
Для стандартного перенаправления вывода используется символ <. В следующем примере sort берет входные данные из файла, а не с клавиатуры:
Команда sort выводит содержимое файла на экран, поскольку мы не перенаправили выход. Это можно сделать так:
Продвинутое перенаправление
Добавление & к > приводит к перенаправлению как стандартного потока выхода, так и потока ошибок. Например, файл test.cpp выведет строку stdout в cout и строку stderr в cerr.
Если вы хотите вывести конкретный файловый дескриптор, вы можете приписать его номер к >.
Например, для перенаправления stderr в test.txt нужно сделать следующее:
Права доступа
Команда ls -l выводит много информации о правах доступа к каждому файлу:
chmod
Команда chmod изменяет права доступа файла. Вот типичные сочетания флагов для изменения прав конкретных пользователей:
Вы можете вызвать chmod с описанием действий над конкретным файлом. Символ - обозначает удаление прав, символ + — добавление. Следующий пример сделает файл доступным для чтения и записи владельцу и группе:
Кроме того, chmod можно использовать с восьмеричными числами, где 1 — это наличие прав, а 0 — отсутствие:
Следующая команда сработает так же, как и предыдущая:
Также можно ознакомиться с руководством по правам доступа.
Сочетания клавиш
280К открытий307К показов











