Командная​ ​строка​ ​Ubuntu:​ ​основные​ ​команды​ ​bash

В этой статье мы рассмотрим, что такое интерпретатор Bash. Выполним введение в оболочку Bash, изучим синтаксис интерпретатора и его основные команды.

Основы регулярных выражений

В общем виде синтаксис команды ‘grep’ выглядит следующим образом:

$ grep поисковый_запрос_regex расположение_файла

Изучим некоторые специальные символы, известные как метасимволы. Они помогают создавать более сложные поисковые выражения:

. будет соответствовать любому символу;
[ ] будет соответствовать диапазону символов;
[^ ] будет соответствовать всем символам, кроме указанных в фигурных скобках;
* будет соответствовать любому количеству символов, предшествующих звездочке, в том числе нулю;
+ будет соответствовать одному или нескольким из стоящих перед ним выражений;
? будет соответствовать нулю или одному из стоящих перед ним выражений;
{n} будет соответствовать ‘n’ повторениям предшествующих выражений;
{n,} будет соответствовать не менее ‘n’ повторениям предшествующих выражений;
{n m} будет соответствовать не менее ‘n’ и не более ‘m’ повторениям предшествующих выражений;
{,m} будет соответствовать не более или равному ‘m’ повторениям предшествующих выражений;
является escape-символом (символом экранирования), используемым, когда нужно включить один из метасимволов.

Подготовительные действия

Сначала хотелось бы уделить время предварительным действиям, поскольку не все юзеры знакомы с принципом работы консоли. Дело в том, что при открытии файла требуется либо указывать точный путь к нему, либо производить запуск команды, находясь непосредственно в самой директории через «Терминал». Поэтому мы советуем для начала просмотреть такое руководство:

Таким методом осуществляется переход к определенной директории через стандартную консоль. Дальнейшие действия также будут производиться через эту папку.

Просмотр содержимого

Одна из основных функций упомянутой команды — просмотр содержимого различных файлов. Вся информация отображается отдельными строками в «Терминале», а применение cat выглядит так:

Вот так работает cat без применения доступных аргументов. Если же вы просто пропишите в «Терминале»cat, то получите некое подобие консольного блокнота с возможностью записывать нужное количество строк и сохранять их нажатием на Ctrl + D.

Нумерация строк

Сейчас давайте затронем рассматриваемую команду с применением различных аргументов. Начать следует с нумерации строк, а за это отвечает -b.

Удаление повторяющихся пустых строк

Случается так, что в одном документе присутствует множество пустых строк, возникших каким-либо образом. Вручную удалять их через редактор не всегда удобно, поэтому здесь тоже можно обратиться к команде cat, применив аргумент -s. Тогда строка приобретает вид cat -s testfile (доступно перечисление нескольких файлов).

Добавление знака $

В операционной системе Linux знак доллара в конце строчки, означает что команда будет выполнена без root прав. Бывает, что нужно добавить символ «$» в конец всех строк документа, для этого нам поможет опция -e script

Читайте также:  Настройка Linux роутера — NAT + DHCP + Squid

Небольшой вывод

В итоге можно сказать, что популярная утилита имеет три основных функции:

  1. выводит на экран текст;
  2. перенаправляет стандартный вывод;
  3. добавляет символа $.

Опции и их описания с примерами

1. -b (byte, байт): используется для извлечения заданных байтов, номера которых указываются после опции через запятую. Можно указать диапазоны через дефис. Если не указать ничего, команда выдаст ошибку. Символы табуляции и пробелы рассматриваются как символы размером в один байт.

$ cut -b 1,2,3 Рос Гер Нид Сое Исп

$ cut -b 1-3,5-7 Росия Герани Нидрла Соеине Испния

echo Россия | cut -b 1,2,3 Рос

Для выбора байтов от заданной позиции до конца строки используется следующая форма:

$ cut -b 1- Россия Германия Нидерланды Соединенное Королевство Испания

Аналогичным образом можно указать байты от начала строки до заданной позиции:

$ cut -b -3 Рос Гер Нид Сое Исп

2. -c (column, столбец): используется для вырезания по символам. Это также может быть список символов, указанных через запятую, или диапазон, заданный через дефис. Символы табуляции и пробела интерпретируются как один символ. Номера символов указывать обязательно, иначе команда выдаст ошибку.

$cut -c [(k)-(n)/(k),(n)/(n)] filename

где k – начальный символ, а n – конечный, если они разделены дефисом, либо просто позиции символов, указанные через запятую. Следующая команда вырезает второй, пятый и седьмой символы строк:

$ cut -c 2,5,7 ои еаи ира оие сня

А эта команда – выводит первые семь символов каждой строки файла:

$ cut -c 1-7 Россия Германи Нидерла Соедине Испания

Интервалы от заданной позиции до конца строки и от начала строки до заданной позиции задаются аналогично предыдущей опции:

$ cut -c 1- Россия Германия Нидерланды Соединенное Королевство Испания

$ cut -c -5 Росси Герма Нидер Соеди Испан

3. -f (field, поле): опция -с полезна для строк фиксированной длины, однако в большинстве файлов они не встречаются. Вам потребуется вырезать данные по полям, а не по столбцам, чтобы получить нужную информацию. Для этого используется опция -f. Номера полей должны разделяться запятыми. Данная опция не позволяет указывать диапазоны. По умолчанию в качестве разделителя полей используется символ табуляции, но при помощи опции -d можно задать другой разделитель. Важно: по умолчанию пробел не является разделителем.

$cut -d «разделитель» -f (номер поля) файл

В файле поля разделены пробелами, и если не использовать опцию -d, строки будут выводиться целиком:

$ cut -f 1 Россия Германия Нидерланды Соединенное Королевство Испания

При помощи опции -d можно задать в качестве разделителя пробел:

$ cut -d » » -f 1 Россия Германия Нидерланды Соединенное Испания

Было выведено каждое слово до пробела.

4. –complement: используется с другими опциями, например, -f или -c, и инвертирует опции вывода:

$ cut —complement -d » » -f 1 Россия Германия Нидерланды Королевство Испания

$ cut —complement -c 5 Росся Гермния Ниделанды Соедненное Королевство Испаия

Читайте также:  Автоматический перевод в Опере: подключение и настройка

5. –output-delimiter: По умолчанию разделитель выводимых данных такой же, как указанный в опции -d. Чтобы его изменить, воспользуйтесь опцией –output-delimiter. Следующая команда задает в качестве разделителя вывода символ «%» и выводит 1 и 2 поля с опцией -f:

$ cut -d » » -f 1,2 —output-delimiter=’%’ Россия Германия Нидерланды Соединенное%Королевство Испания

6. –version: Выводит информацию о версии команды:

$ cut —version cut (GNU coreutils) Packaged by Cygwin () Copyright (C) 2016 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later . This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Written by David M. Ihnat, David MacKenzie, and Jim Meyering.

7. –help: Выводит справочную информацию.

Основные команды

Команда интерпретатора Bash man

Отображает руководства по командам. К примеру, последующая команда выдаст вам все данные о команде cat:

$ man cat

Команда интерпретатора Bash cat

Cчитывает файл, переданный в качестве аргумента, с выводом его содержимого по стандартному каналу вывода. При передаче нескольких файлов в виде аргумента происходит вывод конкатенированного содержимого всех файлов.

Команда интерпретатора Bash echo

Осуществляет вывод своих аргументов по стандартному каналу вывода.

$ echo Hello World Hello World

При использовании без аргументов выводится пустая строка.

Команда интерпретатора Bash head

Читает лишь первые десять строк любого переданного текста, выводя их по стандартному каналу. Можно изменить количество выводимых строк:

$ head -50

Команда интерпретатора Bash tail

Работает аналогично head, однако читает строки с конца:

Основные команды

$ tail -50

Дополнительно есть возможность просматривания добавляемых к файлу строк в режиме реального времени, используя флаг -f:

$ tail -f

Команда интерпретатора Bash less

Позволяет перемещаться куску текста либо переданному файлу в обоих направлениях.

$ less $ ps aux | less

Кстати, о символе | мы расскажем ниже в блоке про команду интерпретатора Bash history.

Команды интерпретатора Bash true и false

Первая всегда возвращает ноль в качестве выходного статуса для индикации успеха, вторая, соответственно, не ноль в качестве выходного статуса для индикации неудачи.

$? — это переменная, содержащая выходной статус последней запущенной команды. Выходной статус — код возврата программы. В нашем случае 0 будет означать успешное выполнение программы, а любое значение, которое больше нуля, будет отражать факт возникновения ошибок в процессе выполнения. Кстати, именно по этой причине в интерпретаторе Bash истиной (true) считается 0, а ложью (false) — всё, что не ноль.

$ true $ echo $? $ false $ echo $? 1

Команда интерпретатора Bash grep

Служит для поиска переданной строки в указанном файле:

$ cat user:student password:123 user:teacher password:321 $ grep 'student` user:student password:123

Кроме того, может принимать несколько регулярных выражений и файлов для уточнения формата текста.

Команда интерпретатора Bash sed

Потоковый редактор, который преобразует входные текстовые данные. Используется для замены выражений следующим образом: s/regexp/replacement/g. К примеру, в следующем коде произойдёт замена всех слов «Hello» на «Hi»:

$ cat Hello World $ sed 's/Hello/Hi/g' Hi World

Руководство по sed.

Команда интерпретатора Bash history

Выводит историю командной строки. Часто используется совместно с grep при поиске конкретной команды. В коде ниже будут найдены все команды, которые содержат строку g++:

Читайте также:  Заправка картриджа лазерного принтера в домашних условиях

$ history | grep g++ 155 g++ 159 g++

Кстати, здесь тоже можно увидеть символ | — это конвейер (pipe). С его помощью происходит перенаправление вывода одной команды на вход другой. Так, в вышеописанном примере вся история (в обычном режиме она выводится с помощью history непосредственно в вывод терминала), перенаправляется в grep в качестве входных данных. То есть мы не увидим вывод команды history, зато увидим вывод команды grep.

Команда интерпретатора Bash export

Устанавливает переменные окружения для их передачи дочерним процессам. Допустим, так мы можем передать переменную name, имеющую значение student:

$ export name=student

Команда интерпретатора Bash ps

Выводит данные о запущенных процессах.

Основные команды

$ ps PID TTY TIME CMD 35346 pts/2 00:00:00 bash

В результате выведутся 4 элемента: — PID (ID процесса), — TTY (тип терминала), — TIME (время работы процесса), — CMD (имя команды, запустившей процесс).

Команда интерпретатора Bash awk

Находит и меняет текст в файлах на основании заданного шаблона: awk ‘pattern {action}’

Команда интерпретатора Bash wget

Закачивает файлы из интернета, помещая их в текущий каталог.

$ wget -cs100

Команда интерпретатора Bash nc

Утилита для отладки сети. Вот руководство.

Команда интерпретатора Bash ping

Служит для тестирования сетевого подключения.

$ ping PING (74) 56(84) bytes of data. 64 bytes from (74): icmp_req=1 ttl=57 time=7.82 ms — ping statistics — 1 packets transmitted, 1 received, % packet loss, time 8ms rtt min/avg/max/mdev = 7.794/ ms

Статистика в конце отображает число подключений, которые были совершены до завершения команды. Также отображается время их выполнения.

Статья написана специально для курса по Linux на основании материалов Bash-Cheatsheet.

Создание, перемещение и удаление

Используйте команду mkdir для создания директории. Не забудьте указать имя:

mkdir dir1

Новая директория будет создана в той директории, где вы находитесь в данный момент, но вы также можете прописать какой-то другой путь для создания новой директории:

mkdir /home/users/dir1

Для создания файла вам нужно ввести команду touch и название будущего файла:

touch file1

В этом случае прописать путь, где нужно создать файл, тоже возможно:

touch /home/users/dir1/file1

Для перемещения директорий и файлов используется команда mv, после которой вы пишете название директории или файла, который хотите переместить, а затем место, куда хотите переместить:

mv file2 /home/users/dir2 mv dir1 /home/users/dir3

Обратите внимание, что команда mv также используется для переименования, поэтому если при отсутствии директории dir2 вы напишете такую команду:

mv dir1 dir2

то директория dir1 будет переименована в директорию dir2. Этот пример справедлив и для файлов, которым вы можете давать другие названия при помощи команды mv.

Для удаления файлов следует использовать команду rm, а для удаления директорий rmdir. Если вы хотите удалить каталог, используйте команду rm с ключами -rf:

rm -rf /home/users/

Еще одно действие, которое вы можете использовать, — это копирование при помощи команды cp. Синтаксис у этой команды такой же, как и у предыдущих, — вы просто пишете, что и куда хотите скопировать. Для копирования директории обязательно нужно использовать ключ -r, при этом если конечная директория (dir2) не существует, то она будет создана при копировании:

cp -r dir1 dir2