Linux псевдоним для команды

Сохрани свое время! Используй псевдонимы и функции в командной строке!

Если вы хотите получить от своей GNU/Linux системы все, на что она способна, то от близких отношений с командной строкой и сценариями оболочки вам не отделаться. И тем не менее — чем меньше времени вы проводите за этой клавиатурной работой, тем лучше! И с этим трудно не согласиться. Добиться этой цели нам помогут два мощных средства, предоставленных самой системой, а именно: псевдонимы оболочки (shell aliases) и функции.

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

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

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

Определить псевдонимы для команд можно в командной строке, во время сеанса работы с оболочкой. Но они будут работать только во время текущего сеанса, поэтому более эффективным будет, если вы сделаете их постоянными, определив во внутрисистемном или персональном файле конфигурации оболочки (/etc/bashrc или $HOME/.bashrc). Для того, чтобы узнать, какие псевдонимы уже определены в вашей системе, просто наберите alias в командной строке.

Как видите, псевдонимы достаточно удобное средство, однако они имеют ряд ограничений и особенностей использования. Для начала, они не поддерживаются, если оболочка работает не в интерактивном режиме и при этом вы не установили правильные её параметры (смотрите man страницу команды bash). Кроме того, оболочка загружает как минимум одну полную строку вводимой информации, потом заменяет псевдонимы, и только после этого выполняет всю получившуюся команду. Это означает, что если вы используете более одного предопределенного псевдонима в одной строке-команде, вы можете получить непредсказуемые результаты, но вы также не можете определить псевдоним и затем использовать его в той же строке. По тем же причинам может не получиться ничего хорошего, если вы попытаетесь определить псевдоним внутри функции. Чтобы избежать подобных недоразумений, никогда не помещайте определение псевдонима в одной строке с чем-нибудь еще; не используйте и не определяйте псевдонимы в составных командах или блоках кода, которые выполняются только при соблюдении какого-либо условия.

От псевдонимов к сценариям среды оболочки

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

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

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

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

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

Читайте также:  Вечный активатор windows 10 pro x64

Функция backup_all_files, которая будет выполнена, может быть написана одним образом в файле /etc/root_only_functions.sh и совершенно другим в /etc/normal_users_functions.sh. Следовательно, в зависимости от того, выполняется сценарий обычным пользователем или суперпользователем root, могут быть выполнены совершенно разные действия. Будьте осторожны: когда функция объявляется несколько раз, при вызове будет выполнена ее последняя версия.

Передаваемые в функцию аргументы помещаются в специальные переменные под названиями $1, $2 и так далее. Можно использовать специальный массив $@, содержащий все входящие аргументы. Ограничиться использованием $1, $2 . имеет смысл, только если ваша функция использует определенное, постоянное количество параметров. В функциях, количество аргументов которых может меняться в различных вызовах, а также в рекурсивных функциях, влияющих на один и тот же параметр, вместо этого извлекайте значения параметров из массива $@

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

Выполнение такой функции приведет к тому, что в специальную переменную оболочки $? будет помещено значение 4, в том случае, если SOME_VAR меньше сорока. Помните, что возвращаемыми значениями могут быть только числа. Если требуется возвратить строки или массивы, у вас есть два варианта. Можно выполнить команду echo с результатом функции и присвоить некоторой переменной имя функции, заключенное в одинарные кавычки:

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

В этом примере команда «set_variable WEBSITE linux.com» (заметьте, что знаки доллара отсутствуют!) присвоит переменной $WEBSITE значение «linux.com».

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

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

Документация по Bash

Существуют два очень полезных ресурса с документацией по оболочке bash: reference manual и Advanced Bash Scripting Guide .

Источник

Как создать псевдонимы Bash

Часто ли вы набираете длинную команду в командной строке или ищете в истории bash ранее набранную команду? Если ваш ответ на любой из этих вопросов утвердительный, тогда вам пригодятся псевдонимы bash. Псевдонимы Bash позволяют вам установить запоминающуюся команду быстрого доступа для более длинной команды.

Псевдонимы Bash — это, по сути, ярлыки, которые могут избавить вас от необходимости запоминать длинные команды и избавить вас от необходимости печатать, когда вы работаете в командной строке. Например, вы можете установить псевдоним tgz как ярлык для команды tar -xvfz .

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

Создание псевдонимов Bash

Создание псевдонимов в bash очень просто. Синтаксис следующий:

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

Команда ls вероятно, является одной из наиболее часто используемых команд в командной строке Linux. Обычно я использую эту команду с параметром -la чтобы вывести все файлы и каталоги, включая скрытые, в формате длинного списка.

Давайте создадим простой псевдоним bash с именем ll который будет ярлыком для команды ls -la . Для этого откройте окно терминала и введите:

Теперь, если вы введете ll в свой терминал, вы получите тот же результат, что и при вводе ls -la .

Псевдоним ll будет доступен только в текущем сеансе оболочки. Если вы выйдете из сеанса или откроете новый сеанс с другого терминала, псевдоним будет недоступен.

Чтобы псевдоним был постоянным, вам нужно объявить его в файле

и добавьте свои псевдонимы:

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

После этого сохраните и закройте файл. Сделайте псевдонимы доступными в текущем сеансе, набрав:

Как видите, создание простых псевдонимов bash выполняется быстро и очень просто.

Создание псевдонимов Bash с аргументами (функции Bash)

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

Синтаксис для создания функции bash очень прост. Они могут быть объявлены в двух разных форматах:

Чтобы просто передать любое количество аргументов функции bash, поместите их сразу после имени функции, разделив пробелом. Передаваемые параметры: $1 , $2 , $3 и т. Д., Соответствующие позиции параметра после имени функции. Переменная $0 зарезервирована для имени функции.

Давайте создадим простую функцию bash, которая создаст каталог, а затем перейдет в него:

Как и в случае с псевдонимами, добавьте функцию в файл

/.bashrc и запустите source

/.bash_profile файл source

/.bash_profile чтобы перезагрузить файл.

Теперь вместо использования mkdir для создания нового каталога, а затем cd для перехода в этот каталог , вы можете просто ввести:

Читайте также:  Canon lbp 2900 драйвер astra linux ppd

Если вам интересно, что такое — и && вот краткое объяснение.

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

Выводы

К настоящему времени вы должны хорошо понимать, как создавать псевдонимы и функции bash, которые сделают вашу жизнь в командной строке проще и продуктивнее.

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

Источник

Команда alias упрощает работу в консоли

Статья из серии HuMan

Команда alias встроена в различные шеллы, включая ash, bash (оболочка большинства Линукс систем по умолчанию), csh и ksh. Это один из способов настройки шелла (другой способ — установление переменных среды). Псевдонимы работают только в том шелле, в котором были созданы, и только под аккаунтом пользователя, создавшего их (если это не суперпользователь, который может создавать псевдонимы для всех пользователей).

Синтаксис команды alias различен в разных шеллах. Мы будем рассматривать только оболочку bash.

Просмотр уже созданных псевдонимов

При использовании без аргумента (с опцией или без опции -p), команда alias выводит список уже установленных в системе псевдонимов для данного пользователя:

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

Создание псевдонимов

ИМЯ — это имя нового псевдонима, а ЗНАЧЕНИЕ — это та команда (или группа команд), которые псевдоним запускает. ИМЯ и текст ЗНАЧЕНИЯ могут содержать любые символы, кроме символа знака равенства (=).

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

Простейший пример создания псевдонима:

Здесь псевдоним p вводится для замены распространенной команды pwd, которая выводит имя директории, в которой пользователь работает в настоящее время.

Теперь, чтобы узнать текущую директорию, достаточно ввести в командной строке псевдоним «p»:

Можно создать псевдоним с тем же именем, что и исходная команда, но заменять он будет одноименную команду с опциями или аргументами. Например:

Команда ls выводит список файлов и субдиректорий текущей директории, опция -a позволяет просматривать скрытые файлы, опция -l означает полный (детальный) формат выводимого списка.

Интересно, что теперь, при введении в командную строку выражения «ls» будет работать псевдоним, а не исходная команда. Если нужно запустить исходную команду, то следует предварить ее обратным слэшем — \ls (без пробела).

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

В ЗНАЧЕНИЕ псевдонима можно также включать аргументы:

что позволит введением в командную строку одной буквы «l» просмотреть содержимое директории /etc.

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

при этом будет выполнена первая команда, а немедленно за ней — вторая:

Здесь /home/ya это вывод команды pwd, а Desktop/ — вывод команды ls.

За один раз можно создавать несколько псевдонимов, для этого пары ИМЯ=’ЗНАЧЕНИЕ’ нужно разделять пробелом (а не точкой с запятой, как пишут в устаревших руководствах):

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

При запуске этого псевдонима команда ls -al выведет содержимое текущей директории, а команда grep ^d отберет из них все строки, начинающиеся с буквы «d», то есть все субдиректории.

Созданный псевдоним может применяться с опциями и аргументами исходной программы. Допустим, что псевдоним l заменяет команду ls -a. Тогда мы можем вводить его в командную строку с аргументом команды ls:

или с опциями команды ls:

Опции команды alias

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

Например, если пользователь имеет доступ к конфигурационному файлу web-сервера Apache, находящийся на некоторых системах в /etc/httpd/conf/httpd.conf, и использует редактор gedit для просмотра этого файла, то он вынужден каждый раз набирать в командной строке следующую команду:

Это довольно неудобно и быстро надоест. Гораздо лучше заменить эту команду псевдонимом:

и для открытия конфигурационного файла достаточно будет ввести в командную строку одну букву:

2. Чтобы изменить поведение команды по умолчанию. Например, введя псевдоним

можно быть уверенным, что команда ls покажет также скрытые файлы, чего по умолчанию она не делает.

Или взять команду df, которая выводит информацию обо всех разделах, смонтированных в системе:

Не правда ли, информация не совсем доходчива, так как единицей размера раздела по умолчанию выбран однокилобайтный блок (это тянется с тех дней, когда килобайт считался большим количеством). Существует опция -h (от английского «human readable» — понятно человеку), которая использует в качестве единиц размера MB (мегабайт) и GB (гигабайт):

Так намного нагляднее. Поэтому имеет смысл ввести псевдоним для команды df -h:

Полезным также будет псевдоним

Читайте также:  Windows 10 language packs iso

который сделает вывод команды grep цветным.

3. Чтобы избежать последствий неправильного набора команд. Скажем, некий пользователь постоянно ошибается при наборе какой-либо команды, например постоянно печатает pdw вместо pwd. Тогда он может создать псевдоним:

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

4. Чтобы повысить безопасность системы, сделав некоторые «опасные» команды интерактивными. Это заставит пользователя подтверждать свои действия. Например команда rm удаляет файлы и директории без возможности восстановления, поэтому имеет смысл создать для нее псевдоним:

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

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

который заставит подтвердить операцию копирования, снизив тем самым риск ошибки.

5. Чтобы стандартизировать названия команд в различных операционных системах. Скажем, популярный текстовой редактор vi имеет разное название в разных ОС (vim, nvi, elvis, и проч.), но если заранее создать в каждой системе соответствующие псевдонимы, то в любой из них текстовый редактор будет запускаться просто командой vi. Например, в моей системе по умолчанию установлен редактор vim, но запускается он не только командой vim, но и vi, так как псевдоним alias vi=»vim» также устанавливается по умолчанию для шеллов bash, csh и tcsh.

Для людей, привыкших к командной строке MS-DOS, можно создать псевдонимы Юниксовых команд в стиле MS-DOS:

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

Как сделать псевдонимы постоянными

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

Универсальным является метод с использованием файла bashrc.

Сначала нужно проверить наличие файла bashrc в системе. Под аккаунтом суперпользователя (root) даем команду locate:

(если команда не срабатывает — «ругается», то нужно обновить базу данных при помощи команд updatedb или locate -u ).

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

1. Чтобы создать постоянные псевдонимы для данного пользователя:

Если в домашней директории есть файл .bashrc (скрытый), то нужно просто вписать в конец этого файла нужные псевдонимы по одному на строку. Например:

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

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

2. Чтобы создать постоянные псевдонимы для всех пользователей:

Если в системе есть файл /etc/bashrc, то следует добавить нужные псевдонимы в список уже имеющихся, если таковые есть. Если их нет, то добавить псевдонимы в конец файла.

Если файл /etc/bashrc отсутствует, то необходимо открыть файл /etc/profile в текстовом редакторе под аккаунтом суперпользователя. Найти строку # include /etc/bashrc if it exists . Если такой строки нет, то вписать ее в конец файла. Под данной строкой нужно написать следующий скрипт:

После этого создать текстовый файл /etc/bashrc, в который и вписать нужные псевдонимы.

Новые псевдонимы будут работать после перезагрузки системы для всех пользователей, кроме root’а.

3. Чтобы создать постоянные псевдонимы для пользователя root:

Если существует файл /root/.bashrc (скрытый), то вписать нужные псевдонимы в этот файл.

Если такового файла нет, то следует создать его и вписать псевдонимы.

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

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

Если команда alias возвращает список установленных псевдонимов, значит должен существовать файл, в котором они прописаны.

Для начала нужно внимательно просмотреть все файлы, содержащие в своем названии выражение bashrc (.bashrc, bash.bashrc и т.п.). Возможно, там нет самих псевдонимов, зато есть указание на файл, в котором они записаны, либо на скрипт, который их устанавливает.

Если файлы типа bashrc не найдены, следует внимательно просмотреть файл /etc/profile, скорее всего там окажется что-нибудь вроде:

В таком случае следует просмотреть скрипты, расположенные в директории /etc/profile.d/, там может быть скрипт /etc/profile.d/alias.sh, в котором и прописаны псевдонимы. Остается добавить туда свои. Если скрипта alias.sh или подобного нет, то придется просмотреть все скрипты в директории /etc/profile.d/. Например у меня в системе, псевдонимы нашлись в скрипте /etc/profile.d/coreutils-dircolors.sh.

А вписав новые псевдонимы, не забудьте перезагрузиться.

В общем, ищите и обрящете; кто ищет тот всегда найдет.

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

Внимание: команда unalias удаляет не только созданные вами псевдонимы, но и постоянные, прописанные в конфигурационных файлах.

Опция -a позволяет удалить все псевдонимы для данного пользователя и данного шелла:

(Кстати, это единственная опция команды).

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

И, наконец, можно удалить псевдоним непосредственно из конфигурационного файла при помощи текстового редактора.

Источник

Оцените статью