Специальные символы Bash, о которых вы должны знать

Особые символы Bash.

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

Разделитель пути к папке (/)

В Bash косая черта ( /) отделяет части пути от подпапок внутри папок. Чтобы перейти в папку с именем "pictures" внутри вашей домашней папки, вам нужно будет использовать команду cd как:

Bash Special Chars Cd Полный путь

Все, что находится после косой черты в приведенном выше примере, находится внутри того, что предшествует косой черте.

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

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

Вы также можете включить его в более сложные пути. Например, чтобы отредактировать файл с именем "mydata.txt" в папке "Личный" в вашем домашнем каталоге, используйте:

Текущая / предыдущая папка (.)

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

Допустим, вы находитесь в папке "/ home / USERNAME / pictures" и хотите выполнить сценарий с именем "transform_images.sh" в том же каталоге. В этом случае введите:

Если после выполнения сценария вы хотите вернуться в папку над той, в которой вы сейчас находитесь, введите:

Это вернет вас из папки "/ home / USERNAME / pictures" в "/ home / USERNAME".

Комментарии и отмены (#)

Символ решетки ( #) более полезен при написании сценариев Bash, поскольку он позволяет добавлять к ним комментарии для дальнейшего использования. Bash игнорирует все, что следует за символом решетки.

В следующем скрипте первая строка определяет, что это сценарий Bash, вторая - это комментарий, который игнорируется, а третья - типичная команда копирования:

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

Затем попробуйте вместо этого следующее:

Во второй версии вы увидите только "Я", потому что хеш отменит все, что следует за ним.

Диапазоны ([])

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

Список специальных символов Bash Диапазон скобок

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

Вы даже можете еще больше упростить их с помощью тире (-):

Bash будет выполнять итерацию от 5 до 9, чтобы включить числа между ними.

Перенаправление ()

Используя угловые скобки (), вы можете перенаправить ввод или вывод команды. Например, следующая команда:

перенаправит вывод ls и сохранит его в файл "list.txt".

Обратите внимание, что двойная правая угловая скобка ( >>) добавляет вывод команды в файл. Если вы повторно запустите ту же команду, она добавит свой вывод в конец существующего содержимого. Чтобы заменить его содержимое новыми результатами, используйте одинарные прямоугольные скобки (>):

Трубы (|)

Вы можете комбинировать разные команды в единое целое для получения более сложных результатов, используя каналы ( |). Они чем-то похожи на перенаправление (их сходства и различия см. Здесь).

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

Bash Special Chars Pipe Into Grep

В этом случае вывод "entry.txt" будет передан команде grep.

Разделитель команд (;)

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

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

Подстановочные знаки (*)

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

Знак вопроса (?) также является подстановочным знаком в Bash, но соответствует только одному символу. Например:

Приведенная выше команда скопирует все файлы jpg в папки, которые начинаются с "201". Поскольку подстановочный знак преобразуется в любой буквенно-цифровой символ, а не только в числа, указанная выше команда также скопирует любую папку с именем "201A" или "201z".

Запуск в фоновом режиме (&)

Вы можете запускать команды как фоновые процессы, просто добавив команду с символом амперсанда ( &):

Вышеупомянутое начнет копирование файла huge_file.zip и сразу перейдет в фоновый режим, позволяя вам продолжать использовать терминал. Команда автоматически завершится после завершения. Если вы хотите продвинуть его снова, вы можете сделать это, набрав fg, а затем Enter.

Переменные ($)

Знак доллара ( $) позволяет вам устанавливать переменные для использования в ваших командах. Чтобы увидеть их в действии, попробуйте ввести в свой терминал следующее:

Переменная Bash Special Chars Echo

Обратите внимание, что при присвоении значений переменным нет знака доллара.

Экраны (\) и кавычки (”)

Если вы хотите использовать какой-либо из специальных символов в команде, вам придется его экранировать. Это можно сделать, поставив перед специальным символом обратную косую черту ( \). Например, если у вас есть файл с именем, содержащим восклицательный знак, вам придется вместо этого набрать \!, чтобы Bash интерпретировал его как восклицательный знак, а не как специальный символ.

Другой способ - использовать одинарные ( '') или двойные кавычки ( ""). Заключив строку в кавычки, любой специальный символ в ней будет рассматриваться как фактический символ. Также существует разница между одинарными и двойными кавычками. Одиночные кавычки оценивают заключенную строку как текст, а двойные кавычки позволяют использовать переменные ($) внутри заключенной строки.

Заключение

Вышеупомянутые не единственные специальные символы в Bash, но они - те, которые мы считаем наиболее полезными для наших ежедневных приключений в терминале. Не забудьте воспользоваться этими сочетаниями клавиш, чтобы быстро перемещаться по Bash. Сообщите нам в разделе комментариев ниже, если мы пропустили какой-либо важный специальный символ.

По теме:

2 комментария

  1. Угловые скобки для перенаправления stdout в файлы неправильны!
    Используйте двойные скобки (>>) для добавления к файлу и одиночную скобку (>) для перезаписи файла


    Спасибо за ответ. Исправлена ​​ошибка.