15 специальных символов-команд, которых нужно знать для работы Bash Linux

Всем доброго времени суток и других разностей.

Если вы хотите освоить оболочку Bash в Linux, macOS или другой UNIX-подобной системе, то специальные символы (например, ~, *, | и >) имеют решающее значение.

15 специальных символов-команд, которых нужно знать для работы Bash Linux - иконка статьи

Сегодня мы расскажем какое и как с ними работать. А то давно что-то ничего не было про линуксы и терминал, да и остальные вкусности.

Поехали.


Что такое специальные символы?

Существует набор символов, которые оболочка Bash обрабатывает двумя различными способами. Когда вы вводите их в оболочку, они действуют как инструкции или команды и сообщают оболочке выполнить определенную функцию. Думайте о них как об односимвольных командах.

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

Мы покажем вам, какие символы являются «специальными» или «мета-» символами, а также как вы можете использовать их функционально и буквально.

к содержанию ↑

Домашний каталог

Тильда (~) является сокращением для вашего домашнего каталога. Это означает, что вам не нужно вводить полный путь к вашей домашней директории в командах. Где бы вы ни находились в файловой системе, вы можете использовать эту команду для перехода в ваш домашний каталог:

cd ~

15 специальных символов-команд, которых нужно знать для работы Bash Linux - скриншот 1

Вы также можете использовать эту команду с относительными путями. Например, если вы находитесь в файловой системе, которая не находится в вашей домашней папке, и хотите перейти в archive каталог в вашем workкаталоге, используйте тильду, чтобы сделать это:

cd ~/work/archive

15 специальных символов-команд, которых нужно знать для работы Bash Linux - скриншот 2

к содержанию ↑

. текущая директория

Точка (.) Представляет текущий каталог. Вы увидите это в списках каталогов, если используете -a опцию (все) с ls.

ls -a

"15

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

 

./script.sh

 

Это говорит Bash искать script.sh файл в текущем каталоге . Таким образом, он не будет искать каталоги в вашем пути для поиска исполняемого файла или сценария.

15 специальных символов-команд, которых нужно знать для работы Bash Linux - скриншот 4

к содержанию ↑

.. Parent Directory

Двойной период или «двойная точка» (..) представляет родительский каталог вашего текущего. Вы можете использовать это, чтобы перейти на один уровень вверх в дереве каталогов.

cd ..

15 специальных символов-команд, которых нужно знать для работы Bash Linux - скриншот 5

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

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

cd ../gc_help

15 специальных символов-команд, которых нужно знать для работы Bash Linux - скриншот 6

к содержанию ↑

/ Path Directory Separator

Вы можете использовать косую черту (/) - часто называемую косой чертой - для разделения каталогов в имени пути.

ls ~ / work / archive

15 специальных символов-команд, которых нужно знать для работы Bash Linux - скриншот 7

Одна косая черта представляет кратчайший возможный путь к каталогу. Поскольку все в дереве каталогов Linux начинается с корневого каталога, вы можете использовать эту команду для быстрого перехода в корневой каталог:

cd /

15 специальных символов-команд, которых нужно знать для работы Bash Linux - скриншот 8

к содержанию ↑

# Комментарий или "обрезка строк"

Чаще всего вы используете хеш или знак числа (#), чтобы сообщить оболочке, что ниже следует комментарий, и он не должен на него воздействовать. Вы можете использовать его в сценариях оболочки и, - менее полезно, - в командной строке.

# This will be ignored by the Bash shell

15 специальных символов-команд, которых нужно знать для работы Bash Linux - скриншот 9

Однако он не игнорируется, потому что он добавлен в историю команд.

Вы также можете использовать хеш, чтобы обрезать строковую переменную и удалить некоторый текст с начала. Эта команда создает строковую переменную с именем this_string.

В этом примере мы присваиваем текст «Dave Geek!» переменной.

this_string="Dave Geek!"

15 специальных символов-команд, которых нужно знать для работы Bash Linux - скриншот 10

Эта команда использует echo для печати слова «How-To» в окне терминала. Он извлекает значение, хранящееся в строковой переменной, через расширение параметра . Поскольку мы добавляем хеш и текст «Dave», он обрезает эту часть строки перед тем, как передать её в echo.

echo How-To ${this_string#Dave}

15 специальных символов-команд, которых нужно знать для работы Bash Linux - скриншот 11

Это не меняет значение, хранящееся в строковой переменной; это влияет только на то, что отправлено echo. Мы можем использовать echo для печати значения строковой переменной еще раз и проверить это:

echo $this_string

15 специальных символов-команд, которых нужно знать для работы Bash Linux - скриншот 12

к содержанию ↑

? - как знак подстановки символа

Оболочка Bash поддерживает три символа подстановки, одним из которых является знак вопроса (?). Вы используете "подстановочные" знаки для замены символов в шаблонах имен файлов. Имя файла, которое содержит "подстановочный" знак, формирует шаблон, который соответствует диапазону имен файлов, а не одному.

"Подстановочный" знак вопроса представляет ровно один символ. Рассмотрим следующий шаблон имени файла:

ls badge? .txt

Это переводится как: «перечислить любой файл с именем, начинающимся с «badge» и сопровождаемым любым отдельным символом перед расширением имени файла».

Это соответствует следующим файлам. Обратите внимание, что у некоторых есть цифры, а у некоторых есть буквы после части имени файла в виде значка. "Подстановочный" знак вопроса будет соответствовать как буквам, так и цифрам.

15 специальных символов-команд, которых нужно знать для работы Bash Linux - скриншот 13

Этот шаблон имени файла не соответствует значению «badge.txt», поскольку в имени файла нет ни одного символа между «значком» и расширением файла. "Подстановочный" знак вопроса должен совпадать с соответствующим символом в имени файла.

Вы также можете использовать знак вопроса, чтобы найти все файлы с определенным количеством символов в именах файлов. Здесь перечислены все текстовые файлы, которые содержат ровно пять символов в имени файла:

ls ?????. txt

15 специальных символов-команд, которых нужно знать для работы Bash Linux - скриншот 14

к содержанию ↑

* - как "подстановочный" знак последовательности символов

Вы можете использовать "подстановочный" знак звездочка (*) для обозначения любой последовательности символов, включая отсутствие символов. Рассмотрим следующий шаблон имени файла:

ls badge*

Это соответствует всем следующим:

15 специальных символов-команд, которых нужно знать для работы Bash Linux - скриншот 15

Он соответствует «badge.txt», потому что "подстановочный" знак представляет собой любую последовательность символов или не содержит символов.

Эта команда сопоставляет все файлы, называемые «исходными», независимо от расширения файла.

ls source.*

15 специальных символов-команд, которых нужно знать для работы Bash Linux - скриншот 16

к содержанию ↑

[] - набор символов

Как указано выше, вы используете знак вопроса для обозначения любого отдельного символа, а звездочку - для любой последовательности символов (включая символы).

Вы можете сформировать "подстановочный" знак с квадратными скобками ([]) и символами, которые они содержат. Соответствующий символ в имени файла должен соответствовать хотя бы одному из символов в наборе символов подстановки.

В этом примере команда переводит: «любой файл с» .txt», имя файла , начиная с „badge_0,“и в котором следующий символ либо 2, 4 или 6.»

ls badge_0 [246] .txt

15 специальных символов-команд, которых нужно знать для работы Bash Linux - скриншот 17

Вы можете использовать более одного набора скобок на шаблон имени файла:

ls badge_ [01] [789] .txt

15 специальных символов-команд, которых нужно знать для работы Bash Linux - скриншот 18

Вы также можете включить диапазоны в набор символов. Следующая команда выбирает файлы с номерами от 21 до 25 и от 31 до 35 в имени файла.

ls badge_ [23] [1-5] .txt

15 специальных символов-команд, которых нужно знать для работы Bash Linux - скриншот 19

к содержанию ↑

; - разделитель команд оболочки

В командной строке Вы можете вводить столько команд, сколько Вам нужно, если Вы разделяете каждую из них точкой с запятой (;). Мы сделаем это в следующем примере:

ls> count.txt; wc -l count.txt; rm count.txt

15 специальных символов-команд, которых нужно знать для работы Bash Linux - скриншот 20

Обратите внимание, что вторая команда выполняется даже в случае сбоя первой, третья - даже в случае сбоя второй и тд.

Если Вы хотите остановить последовательность выполнения в случае сбоя одной команды, используйте двойной амперсанд (&&) вместо точки с запятой:

cd ./doesntexist && cp ~ / Documents / reports / *.

15 специальных символов-команд, которых нужно знать для работы Bash Linux - скриншот 21

к содержанию ↑

& - "фоновый процесс"

После того, как Вы введете команду в окне терминала и она завершится, Вы вернетесь в командную строку. Как правило, - это занимает всего минуту или две. Но если вы запустите другое приложение, например gedit, вы не сможете использовать окно терминала, пока не закроете приложение.

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

gedit command_address.page &

15 специальных символов-команд, которых нужно знать для работы Bash Linux - скриншот 22

Bash показывает идентификатор процесса, который был запущен, а затем возвращает вас в командную строку. Затем Вы можете продолжать использовать окно терминала.

к содержанию ↑

< - перенаправление ввода

Многие команды Linux принимают файл в качестве параметра и берут свои данные из этого файла. Большинство из этих команд также могут принимать данные из потока. Чтобы создать поток, используйте левую угловую скобку (<), как показано в следующем примере, чтобы перенаправить файл в команду:

sort < words.txt

15 специальных символов-команд, которых нужно знать для работы Bash Linux - скриншот 23

Когда команда перенаправляет ввод в нее, она может вести себя иначе, чем при чтении из именованного файла.

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

Вот несколько примеров того, как вы можете использовать wc:

wc words.txt
wc < words.txt

15 специальных символов-команд, которых нужно знать для работы Bash Linux - скриншот 24

к содержанию ↑

> П�