Alias (команда)

Материал из wikixw
Перейти к навигации Перейти к поиску

Псевдонимы переменных в языке программирования см. Aliasing (computing).

В вычислительной технике alias - это команда в различных интерпретаторах командной строки (оболочках), которая позволяет заменить слово другой строкой. Он в основном используется для сокращения системной команды или для добавления аргументов по умолчанию к регулярно используемой команде. aliasдоступен в оболочках Unix, AmigaDOS, 4DOS/4NT, KolibriOS, Windows PowerShell, ReactOS и оболочке EFI.Функциональность псевдонима в операционных системах MS-DOS и Microsoft Windows обеспечивается утилитой командной строки DOSKey.

Псевдоним сохраняется в течение всего сеанса оболочки. Регулярно используемые псевдонимы могут быть заданы из rc-файла оболочки (например, как .bashrc), чтобы они были доступны при запуске соответствующего сеанса оболочки. Команды alias могут быть либо записаны непосредственно в конфигурационный файл, либо получены из отдельного файла.

История[править]

В Unix псевдонимы были введены в оболочку C и выживают в оболочках-потомках, таких как tcsh и bash. Псевдонимы оболочки C были строго ограничены одной строкой. Это было полезно для создания простых команд быстрого доступа, но не более сложных конструкций. Более старые версии оболочки Bourne не предлагали псевдонимов, но предоставляли функции, которые являются более мощными, чем концепция псевдонима csh. Концепция alias из csh была импортирована в Bourne Again Shell (bash) и Korn shell (ksh). В оболочках, поддерживающих как функции, так и псевдонимы, но не имеющих параметризованных встроенных сценариев оболочки, рекомендуется использовать функции везде, где это возможно. Случаи, когда псевдонимы необходимы, включают ситуации, когда требуются цепные псевдонимы (bash и ksh). В alias command также была портирована на операционную систему IBM i.

Использование[править]

Создание псевдонимов[править]

Распространенные оболочки Unix[править]

Непостоянные псевдонимы могут быть созданы путем предоставления пар имя/значение в качестве аргументов для команды alias. В оболочках Unix синтаксис:

alias gc='git commit'

Оболочка C[править]

Соответствующий синтаксис в оболочке C или tcsh:

псевдоним gc "git commit"

Этот псевдоним означает, что при gcчтении команды в оболочке она будет заменена на git commitи эта команда будет выполнена вместо нее.

4DOS[править]

В оболочке 4DOS/4NT следующий синтаксис используется для определения cpв качестве псевдонима команды 4DOScopy:

псевдоним cp copy

Windows PowerShell[править]

Для создания нового псевдонима в Windows PowerShell new-aliasможно использовать командлет:

new-alias ci copy-item

Это создает новый псевдоним, ciкоторый будет заменен copy-itemкомандлетом при выполнении.

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

Просмотр текущих псевдонимов[править]

Для просмотра определенных псевдонимов можно использовать следующие команды:

alias          # Используется без аргументов; отображает список всех текущих псевдонимов
alias -p # Список псевдонимов таким образом, чтобы их можно было воссоздать путем поиска выходных данных; недоступен в 4DOS /4NT и PowerShell
alias myAlias # Отображает команду для определенного псевдонима

Переопределение псевдонимов[править]

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

alias ls='ls -la'

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

'ls'

или

\ls

В оболочке 4DOS/4NT можно переопределить псевдоним, поставив перед ним префикс со звездочкой. Например, рассмотрим следующее определение псевдонима:

alias dir = *dir /2/p

Звездочка во 2-м экземпляре dirвызывает вызов unaliaseddir, предотвращая рекурсивное расширение псевдонима. Также пользователь может получить неизменное поведение dirв командной строке, используя тот же синтаксис:

*реж

Изменение псевдонимов[править]

В Windows PowerShell setглагол можно использовать вместе с aliasкомандлетом для изменения существующего псевдонима:

set-alias ci cls

Теперь псевдоним ciбудет указывать на clsкоманду.

В оболочке 4DOS/4NT esetкоманда предоставляет интерактивную командную строку для редактирования существующего псевдонима:

eset /a cp

/a Вызывает редактирование псевдонимаcp, в отличие от переменной окружения с тем же именем.

Удаление псевдонимов[править]

В оболочках Unix и 4DOS/4NT псевдонимы можно удалить, выполнив unaliasкоманду:

unalias copy # Удаляет псевдоним копии
unalias -a# Переключатель -a удалит все псевдонимы; недоступно в 4DOS/4NT
unalias * # 4DOS/4NT эквивалент `unalias -a` - поддерживаются подстановочные знаки

В Windows PowerShell псевдоним можно удалить из псевдонима:\drive с помощьюremove-item:

remove-item  alias:ci  # Удаляет псевдоним ci

Характеристики[править]

Цепочка[править]

Псевдоним обычно заменяет только первое слово. Но некоторые оболочки, такие как bashand ksh, позволяют заменять последовательность или слова. Эта конкретная функция недоступна через механизм функций.

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

alias  list='ls'      # обратите внимание на пробел в конце, чтобы вызвать цепочку
alias  long='-Flas'    # параметры для ls для длинного списка

позволяет:

list long myfile # становится "ls -Flas myfile" при запуске

для длинного списка, где "long" также оценивается как псевдоним.

Аргументы команды[править]

В оболочке C аргументы могут быть встроены внутрь команды с помощью строки \!*. Например, с этим псевдонимом:

alias ls-more 'ls\!* | more'

ls-more /etc /usr расширяетсяls /etc /usr | more, чтобы перечислить содержимое каталогов /etc и /usr, делая паузу после каждого экрана. Без \!*,

псевдоним ls-more 'ls | more'

вместо этого расширится до ls | more /etc /usrтого, что неправильно попытается открыть каталоги в more.[4]

Оболочки Bash и Korn вместо этого используют функции оболочки — см§ Альтернативы ниже.

Альтернативы[править]

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

  • Шелл-скрипты, которые по сути обеспечивают полную возможность создания новых системных команд.
  • Символические ссылки у пользователя PATH(например/bin). Этот метод полезен для предоставления дополнительного способа вызова команды, а в некоторых случаях может разрешить доступ к скрытой командной функции для небольшого числа команд, которые используют свое имя вызова для выбора режима работы.
  • Функции оболочки, особенно если создаваемой команде необходимо изменить внутреннюю среду выполнения самой оболочки (например, переменные окружения), необходимо изменить текущий рабочий каталог оболочки или должно быть реализовано таким образом, чтобы гарантировать, что они появляются в пути поиска команды для чего-либо, кроме интерактивной оболочки(особенно любая "безопасная" версия rm, cp, mvи так далее).

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

  1. long listing, alias 'ls -Flas'=ll alias

ll () { ls -Flas "$@" ; } # длинный список, функция

Чтобы предотвратить рекурсивный вызов функции, используйтеcommand:

ls () { command ls --color=auto "$@" ; }

В старых оболочках Bourne используется /bin/lsвместо command ls.

См.также[править]

Читать[править]

.intel.com/content/www/us/en/developer/overview.html#gs.2s0b5x

Пруф[править]

pubs.opengroup.org/onlinepubs/9699919799/utilities/alias.html