Оболочка Bash — шпаргалка для начинающих
В данной шпаргалке затрагиваются следующие темы: введение в оболочку, навигация, основные команды, переменные окружения, коннекторы, конвейеры, перенаправление ввода/вывода, права доступа и комбинации клавиш.
Оболочка Bash: введение
Оболочка, или шелл (shell) — это программа, в нашем случае названная «bash», что является сокращением от Bourne Again Shell. Оболочка принимает ваши команды и передаёт их операционной системе. Для взаимодействия с системой используются терминалы, такие как Навигация
В Linux файлы и каталоги имеют иерархическую организацию, то есть существует некий начальный каталог, называемый корневым. В нём содержатся файлы и подкаталоги, которые в свою очереди содержат файлы и свои подкаталоги.
pwd
Команда pwd, сокращение от print working directory , отображает текущее местоположение в структуре каталогов.
cd
Команда cd позволяет перейти в новый каталог.
mkdir
Команда mkdir создаёт новый каталог в текущем каталоге.
Основные команды
man
Команда man отображает руководства по командам. Например, следующая команда выдаст всю информацию о команде cat:
cat
Команда cat считывает файл, переданный как аргумент, и выводит его содержимое по стандартному каналу вывода. Передача нескольких файлов в виде аргумента приведёт к выводу конкатенированного содержимого всех файлов.
echo
Команда echo выводит свои аргументы по стандартному каналу вывода.
$ echo Hello World
Hello World
Если вызвать echo без аргументов, будет выведена пустая строка.
head
Команда head читает первые 10 строк любого переданного текста и выводит их по стандартному каналу. Число выводимых строк можно изменить:
tail
Команда tail работает аналогично команде head, но читает строки с конца:
Также можно просматривать добавляемые к файлу строки в режиме реального времени при помощи флага -f:
less
Команда less позволяет перемещаться по переданному файлу или куску текста, причём в обоих направлениях.
$ less test.txt
$ ps aux | less
Подробнее о назначении символа | будет рассказано ниже в разделе команды history.
true
Команда true всегда возвращает ноль в качестве выходного статуса для индикации успеха.
false
Команда false всегда возвращает не-ноль в качестве выходного статуса для индикации неудачи.
$?
$? — это переменная, которая содержит выходной статус последней запущенной команды. Под статусом обычно понимается $ true
$ echo $?
0
$ false
$ echo $?
1
grep
Команда grep занимается поиском переданной строки в указанном файле:
$ cat users.txt
user:student password:123
user:teacher password:321
$ grep ‘student` file1.txt
user:student password:123
grep также может принимать несколько файлов и регулярных выражений для уточнения формата текста.
Также можно ознакомиться с sed
Команда sed — это потоковый редактор, преобразующий входные текстовые данные. Обычно её используют для замены выражений так: s/regexp/replacement/g. Например, следующий код заменит все слова «Hello» на «Hi»:
$ cat test.txt
Hello World
$ sed ‘s/Hello/Hi/g’ test.txt
Hi World
Также вы можете ознакомиться с history
Команда history выводит историю командной строки. Обычно её используют вместе с командой grep для поиска конкретной команды. Например, следующий код найдёт все команды, содержащие строку g++:
$ history | grep g++
155 g++ file1.txt
159 g++ file2.txt
export
Команда export устанавливает переменные окружения для передачи дочерним процессам. Например, так можно передать переменную name со значением student:
ps
Команда ps выводит информацию о запущенных процессах.
$ ps
PID TTY TIME CMD
35346 pts/2 00:00:00 bash
Выводится четыре элемента:
- ID процесса (PID),
- тип терминала (TTY),
- время работы процесса (TIME),
- имя команды, запустившей процесс (CMD).
awk
Команда awk находит и заменяет текст в файлах по заданному шаблону: awk ‘pattern ‘ test.txt
wget
Команда wget скачивает файлы из Сети и помещает их в текущий каталог.
nc
Команда nc — это утилита для отладки сети. Также можно ознакомиться с ping
Команда ping тестирует сетевое подключение.
$ ping google.com
PING google.com (74.125.224.34) 56(84) bytes of data.
64 bytes from lax17s01-in-f2.1e100.net (74.125.224.34): icmp_req=1 ttl=57 time=7.82 ms
— google.com ping statistics —
1 packets transmitted, 1 received, 0% packet loss, time 8ms
rtt min/avg/max/mdev = 7.794/8.422/10.792/0.699 ms
Статистика в конце показывает количество подключений, совершённых до завершения команды, и время их выполнения.
git
Git — это популярная система контроля версий. Также можно ознакомиться с Переменные окружения
Переменные окружения — это именованные переменные, содержащие значения, используемые одним или несколькими приложениями.
Переменная PATH содержит список каталогов, в которых система ищет исполняемые файлы.
Переменная HOME содержит путь к домашнему каталогу текущего пользователя.
Коннекторы
Коннекторы позволяют запускать несколько команд одновременно.