Глава 23. Псевдонимы | Популярный Linux

Опубликовано Bash в Ср, 23/12/2009 — 21:04


Псевдонимы в Bash — это ни что иное, как «горячие клавиши», средство, позволяющее избежать набора длинных строк в командной строке. Если, к примеру, в файл ~/.bashrc вставить строку alias lm=»ls -l | more», то потом вы сможете экономить свои силы и время, набирая команду lm, вместо более длинной ls -l | more. Установив alias rm=»rm -i» (интерактивный режим удаления файлов), вы сможете избежать многих неприятностей, потому что сократится вероятность удаления важных файлов по неосторожности.

Псевдонимы в сценариях могут иметь весьма ограниченную область применения. Было бы здорово, если бы псевдонимы имели функциональность, присущую макроопределениям в языке C, но, к сожалению, Bash не может «разворачивать» аргументы в теле псевдонима. [54] Кроме того, попытка обратиться к псевдониму, созданному внутри «составных конструкций», таких как if/then, циклы и функции, будет приводить к появлению ошибок. Практически всегда, действия, возлагаемые на псевдоним, более эффективно могут быть выполнены с помощью функций.

Пример 23-1. Псевдонимы в сценарии

  1. #!/bin/bash
  2. shopt -s expand_aliases
  3. # Эта опция должна быть включена, иначе сценарий не сможет «разворачивать» псевдонимы.
  4. alias ll=«ls -l»
  5. # В определении псевдонима можно использовать как одиночные (‘), так и двойные («) кавычки.
  6. echo «Попытка обращения к псевдониму ll
  7. ll /usr/X11R6/bin/mk*   #* Работает.
  8. echo
  9. directory=/usr/X11R6/bin/
  10. prefix=mk*  # Определить — не будет ли проблем с шаблонами.
  11. echo «Переменные directory + prefix = $directory$prefix«
  12. echo
  13. alias lll=«ls -l $directory$prefix«
  14. echo «Попытка обращения к псевдониму lll
  15. lll         # Список всех файлов в /usr/X11R6/bin, чьи имена начинаются с mk.
  16. # Псевдонимы могут работать с шаблонами.
  17. TRUE=1
  18. echo
  19. if [ TRUE ]
  20. then
  21.   alias rr=«ls -l»
  22.   echo «Попытка обращения к псевдониму rr, созданному внутри if/then:»
  23.   rr /usr/X11R6/bin/mk*   #* В результате — сообщение об ошибке!
  24.   # К псевдонимам, созданным внутри составных инструкций, нельзя обратиться.
  25.   echo «Однако, ранее созданный псевдоним остается работоспособным:»
  26.   ll /usr/X11R6/bin/mk*
  27. fi
  28. echo
  29. count=0
  30. while [ $count -lt 3 ]
  31. do
  32.   alias rrr=«ls -l»
  33.   echo «Попытка обращения к псевдониму rrr, созданному внутри цикла while
  34.   rrr /usr/X11R6/bin/mk*   #* Так же возникает ошибка.
  35.                            #  alias.sh: line 57: rrr: command not found
  36.   let count+=1
  37. done
  38. echo; echo
  39. alias xyz=‘cat $0’   # Сценарий печатает себя самого.
  40.                      # Обратите внимание на «строгие» кавычки.
  41. xyz
  42. #  Похоже работает,
  43. #+ хотя документация Bash утверждает, что такой псевдоним не должен работать.
  44. #
  45. #  Steve Jacobson отметил, что
  46. #+ параметр «$0» интерпретируется непосредственно, во время объявления псевдонима.
  47. exit 0

Команда unalias удаляет псевдоним, объявленный ранее .

Пример 23-2. unalias: Объявление и удаление псевдонимов

  1. #!/bin/bash
  2. shopt -s expand_aliases  # Разрешить «разворачивание» псевдонимов.
  3. alias llm=‘ls -al | more’
  4. llm
  5. echo
  6. unalias llm              # Удалить псевдоним.
  7. llm
  8. # Сообщение об ошибке, т.к. команда ‘llm’ больше не распознается.
  9. exit 0
  1. bash$ ./unalias.sh
  2. total 6
  3. drwxrwxr-x    2 bozo     bozo         3072 Feb  6 14:04 .
  4. drwxr-xr-x   40 bozo     bozo         2048 Feb  6 14:04 ..
  5. -rwxr-xr-x    1 bozo     bozo          199 Feb  6 14:04 unalias.sh
  6. ./unalias.sh: llm: command not found

[54]    Однако, псевдонимы могут «раскручивать» позиционные параметры.

Запись опубликована в рубрике Без рубрики. Добавьте в закладки постоянную ссылку.