Поиск по сайту:

Как создавать псевдонимы и функции оболочки в Linux


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

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

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

Разница между псевдонимом и сценарием заключается в сложности и масштабе. Скрипты лучше справляются с более длинными и сложными фрагментами кода. Псевдонимы идеально подходят для хранения более коротких и лаконичных наборов команд.

Предопределенные псевдонимы

Некоторые псевдонимы предопределены для вас. Чтобы просмотреть список псевдонимов, определенных в вашей системе, используйте команду alias без параметров:

alias

Это псевдонимы, определенные на тестовой машине Ubuntu, на которой исследовалась эта статья. Если бы я определил какие-либо пользовательские псевдонимы, они также появились бы в этом списке.

В верхней части списка есть сложно выглядящий псевдоним под названием alert. Мы подойдем к этому чуть позже. Существует множество различных псевдонимов для команды ls, а также группа псевдонимов, которые обеспечивают цветной вывод для семейства команд grep. Например, если эти псевдонимы определены, всякий раз, когда вы вводите:

grep

Система интерпретирует это как:

grep --color=auto

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

Вот определение псевдонима grep.

alias grep='grep --color=auto'

  • Команда alias используется для определения псевдонима.
  • Далее указывается имя псевдонима. В данном примере это grep.
  • Знак равенства соединяет имя псевдонима с телом псевдонима. Для всех псевдонимов, кроме очень простых, тело псевдонима заключено в одинарные кавычки .
  • Тело псевдонима — это раздел, который выполняется, когда псевдоним используется в командной строке.

Тело этого псевдонима просто вызывает команду grep с параметром --color=auto.

Предупреждающий псевдоним

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

Вот простой пример. Команда sleep будет бездействовать в течение пяти секунд. Затем будет вызван псевдоним alert. Псевдоним проверяет ответ от предыдущей команды. Он извлекает последнюю команду из файла истории. Он определяет, была ли команда выполнена успешно или нет. Затем он представляет результаты в системном предупреждении.

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

sleep 5; alert

Через пять секунд мы видим вот такое системное оповещение:

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

DoomedToFail; alert

Наше системное оповещение теперь имеет значок ошибки.

Определение тривиального псевдонима

Как мы видели, для определения псевдонима мы используем команду alias.

Мы собираемся создать псевдоним для команды clear. Наш псевдоним будет называться cls и будет вызывать команду clear.

Наше определение псевдонима настолько тривиально, что его нельзя заключать в одинарные кавычки. Если тело псевдонима более сложное, чем это, или если оно содержит пробелы, заключите его в одинарные кавычки. Мы определим псевдоним, используем ls, чтобы вывести некоторые данные в окно терминала, а затем используем наш новый псевдоним cls, чтобы очистить экран.

alias cls=clear
ls -l
cls

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

Так как же сделать наши псевдонимы постоянными?

Файл .bashrc и псевдонимы

Вам может быть интересно, где определяются предварительно упакованные псевдонимы. он находится в файле «.bashrc» в вашей домашней папке. Этот файл читается, и команды внутри него выполняются всякий раз, когда вы запускаете интерактивную оболочку. То есть, когда вы открываете окно терминала.

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

gedit .bashrc

Это запустит редактор gedit с загруженным в него файлом «.bashrc».

Выделенные области показывают две области, в которых определены псевдонимы.

Прокрутка документа покажет два других раздела, связанных с псевдонимами:

Первым из них является определение псевдонима alert. Второй — оператор if. Это переводится как «если файл «.bash_aliases» существует, прочтите его».

Если у вас есть только несколько псевдонимов, которые вы хотите определить, вы можете поместить их в свой файл «.bashrc». Спрячьте их под разделом, содержащим псевдонимы ls.

Если вы собираетесь создать много псевдонимов или вам просто нравится идея инкапсулировать ваши псевдонимы в их собственный файл, вы можете определить их в своем файле «.bash_aliases». Одним из преимуществ их создания в файле «.bash_aliases» является то, что вы не можете случайно изменить какие-либо настройки в файле «.bashrc». Еще одним преимуществом является то, что ваши псевдонимы легко копируются в новые системы, потому что они полностью отделены от файла «.bashrc».

Хранение псевдонимов в файле .bash_aliases

Файл «.bash_aliases» не будет существовать, пока вы его не создадите. Вы можете создать файл с помощью этой команды:

touch .bash_aliases

Давайте отредактируем файл и добавим в него несколько псевдонимов. Эта команда откроет файл «.bash_aliases» в редакторе gedit.

gedit .bash_aliases

Мы добавили три псевдонима. Первый — это наш псевдоним cls, который мы использовали ранее. Следующий называется h. и представляет собой сокращенный способ вызова команды history.

Третий псевдоним называется ftc. Это означает «количество типов файлов».

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

Когда мы сохранили файл «.bash_aliases», мы можем ожидать, что наши псевдонимы будут активными и доступными. Это не так. Файл должен быть прочитан оболочкой Bash до того, как определения псевдонимов станут активными. Это делается всякий раз, когда открывается интерактивная оболочка.

Мы также можем использовать встроенный в оболочку Bash . для чтения и выполнения команд в файле. Поскольку наш файл «.bash_alias» считывается при обработке «.bashrc», мы должны выполнить наш тест, вызвав «.bashrc». Таким образом мы можем проверить, что файл «.bash_alias» вызывается из «.bashrc» и что наши псевдонимы живы и здоровы.

Команды, которые мы использовали:

gedit .bash_alias

Чтобы отредактировать файл «.bash_alias».

. .bashrc

Это прочитает и выполнит команды в «.bashrc», которые вызовут «.bash_alias».

ftc

Это вызовет псевдоним ftc.

Наш псевдоним отвечает, что означает, что Bash прочитал как «.bashrc», так и «.bash_aliases», и наши новые псевдонимы теперь активны.

Теперь вы можете добавлять новые псевдонимы в файл «.bash_aliases» по мере их появления. Если вы обнаружите, что делаете что-то более одного или двух раз, рассмотрите возможность создания псевдонима для этого.

Удаление псевдонимов

Существует команда для удаления псевдонимов, чтобы Bash не распознавал их и не реагировал на них. Освежающе откровенно, команда называется unalias.

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

unalias ftc

Вы можете использовать unalias для удаления определенных вами псевдонимов и любых предопределенных псевдонимов.

Чтобы удалить все псевдонимы из вашей системы, используйте параметр -a (все):

unalias -a

Однако потеря памяти Bash не будет постоянной. В следующий раз, когда вы откроете окно терминала, «забытые» псевдонимы вернутся. Чтобы по-настоящему стереть их, вам нужно удалить их из файлов «.bashrc» и «.bash_alias».

Если вы думаете, что когда-нибудь захотите их вернуть, не удаляйте их из файла «.bashrc». Вместо этого закомментируйте их, добавив решетку # в начало каждой строки alias. Чтобы сделать ваш файл «.bash_alias» неэффективным, переименуйте его. Если ваш файл «.bashrc» не может его увидеть, он не будет его читать. Отменить эти шаги для восстановления ваших псевдонимов — тривиальное дело.

Функции оболочки

Псевдонимы Lika, функции оболочки Bash могут быть определены в файле «.bashrc», но часто лучше поместить их в собственный файл определений. Мы назовем его «.bash_functions», следуя соглашению, используемому для файла «.bash_aliases».

Это означает, что нам нужно сообщить файлу «.bashrc», чтобы он читал наши определения. Мы можем скопировать и изменить фрагмент кода, который читается в файле «.bash_aliases». Запустите gedit и загрузите файл «.bashrc» с помощью этой команды:

gedit .bashrc

Вам нужно добавить выделенный раздел, показанный ниже.

Вы можете выделить раздел псевдонима и нажать Ctrl+C, а затем перейти туда, где вы хотите создать новый раздел, и нажать Ctrl+V, чтобы вставить копию текста. Затем все, что вам нужно сделать, это изменить два места, где написано «.bash_aliases», на «.bash_functions».

Мы можем сохранить эти изменения и закрыть gedit.

Теперь мы создадим и отредактируем файл «.bash_functions» и поместим в него определение функции.

touch .bash_functions
gedit .bash_functions

Это откроет пустой файл «.bash_functions» в gedit.

Мы собираемся добавить простую функцию под названием up. up принимает единственный параметр командной строки, который является цифрой. Затем up вызовет cd .. указанное количество раз. Итак, если вы использовали команду

up 2

up дважды вызовет cd .. и переместится на два уровня вверх в дереве каталогов.

Существуют различные способы определения функции. Вот один:

function up() {

Слово function указывать необязательно. Если вы традиционалист, используйте его, если вам лень его печатать, пропустите.

Вот вся наша функция в gedit:

function up() {

Это отмечает начало определения нашей функции и называет функцию up.

levels=$1

Это создает переменную с именем levels и устанавливает для нее значение первого параметра. Этот параметр будет цифрой, предоставленной пользователем при вызове функции. $1 означает «первый параметр командной строки».

while [ "$levels" -gt "0" ]; do

Затем мы входим в цикл. Это переводится как «пока значение levels больше нуля, делать то, что содержится в теле цикла».

Внутри тела цикла у нас есть две команды. Они есть:

cd ..

Перейти на уровень выше в дереве каталогов.

levels=$(($levels - 1))

Задайте для levels новое значение, которое на единицу меньше текущего значения.

Затем мы возвращаемся к началу цикла, сравнение между значением levels и нулем выполняется еще раз. Если значение levels больше нуля, тело цикла выполняется снова. Если оно не больше нуля, цикл завершается, и мы переходим к оператору done, и функция завершается.

Сохраните эти изменения и закройте gedit.

Мы прочитаем и выполним команды в «.bashrc», которые должны прочитать и выполнить команды в нашем файле «.bash_functions».

. .bashrc

Мы можем протестировать функцию, переместившись в какое-то место в дереве каталогов и используя up, чтобы вернуться к «более высокой» точке в дереве каталогов.

cd ./work/backup/
up 2

Функция работает. Мы переместились на два уровня каталога выше в дереве.

Отслеживание с типом

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

Давайте используем type для нашего псевдонима ftc и нашей функции up.

type ftc
type up

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

Начать сбор

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

Каждый раз, когда вы видите изящную однострочную или полезную функцию, вы можете адаптировать и персонализировать ее, а затем добавить в свои файлы «.bash_aliases» или «.bash_functions».

RELATED: Best Linux Laptops for Developers and Enthusiasts