Как создавать псевдонимы и функции оболочки в 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».
Linux Commands | ||
Files | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm · scp · gzip · chattr · cut · find · umask · wc | |
Processes | alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg · pidof · nohup · pmap | |
Networking | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw · arping · firewalld |
RELATED: Best Linux Laptops for Developers and Enthusiasts