LinuxКак сделать

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

Окно терминала на ноутбуке с Linux
Фатмавати Ахмад Заенури / Shutterstock.com

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

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

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

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

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

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

  псевдоним 

псевдоним в окне терминала

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

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

  Grep 

Система будет интерпретировать это как:

  grep --color = auto 

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

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

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

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

Предупреждение Alias

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

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

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

  спать 5;  бдительный 

спать 5; оповещение в окне терминала

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

Системное оповещение для команды сна

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

  DoomedToFail;  бдительный 

DoomedToFail; оповещение в окне терминала

Наше системное предупреждение теперь имеет значок ошибки.

Системное оповещение о неудачной команде со значком ошибки

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

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

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

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

  псевдоним cls = очистить 
  ls -l 
  ЦБС 

псевдоним cls = очистить в окне терминала

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

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

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

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

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

  gedit .bashrc 

gedit .bashrc в окне терминала

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

gedit с загрузкой в ​​него .bashrc

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

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

gedit с загруженным в него .bashrc и выделенным разделом .bash_aliases

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

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

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

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

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

  коснуться .bash_aliases 

коснитесь .bash_aliases в окне терминала

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

  gedit .bash_aliases 

редактор gedit с загруженным в него .bash_aliases

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

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

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

СВЯЗАННЫЕ: Как использовать Pipes в Linux

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

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

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

  gedit .bash_alias 

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

  ,  .bashrc 

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

  Федеральная торговая комиссия 

Это будет называть псевдоним ftc .

, .bashrc в окне терминала

Наш псевдоним отвечает, что означает, что 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» не может его увидеть, он не будет его читать. Отмена этих шагов для восстановления псевдонимов — тривиальный вопрос.

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

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

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

  gedit .bashrc 

gedit .bashrc в окне терминала

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

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

gedit с загруженным .bashrc и выделенным новым разделом .bash) _functions

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

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

  коснитесь .bash_functions 
  gedit .bash_functions 

коснитесь .bash_functions в окне терминала

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

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

  до 2 

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

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

  function up () { 

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

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

Функция оболочки up () Bash в gedit

  function up () { 

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

  Уровни = $ 1 

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

  while ["$ levels" -gt "0"];  делать 

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

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

  компакт диск .. 

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

  уровни = $ (($ уровней - 1)) 

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

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

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

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

  ,  .bashrc 

, .bashrc в окне терминала

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

  cd ./work/backup/ 
  до 2 

cd ./work/backup/ в окне терминала

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

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

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

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

  введите ftc 
  напечатать 

введите ftc в окне терминала

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

Начать сбор

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

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

Похожие посты
Как сделать

Как получить возмещение за покупки в iTunes или App Store

Как сделать

Поверхностное перо не работает? Вот как это исправить

Как сделать

Как настроить и использовать Fire TV Recast

Как сделать

Как изменить рингтон по умолчанию на вашем iPhone