Расширьте один псевдоним во втором псевдониме

Это можно сделать так:

alias tm=cd /opt/tomcat alias tmbin=tm/bin $ tmbin $pwd /opt/tomcat/bin 

??

Я знаю, что могу сделать:

 alias tmbin=tm;cd bin 

3 Solutions collect form web for “Расширьте один псевдоним во втором псевдониме”

Как насчет использования простой функции:

 # may contain bashisms function tm () { cd "/opt/tomcat/$1"; } alias tmbin='tm bin' # if that really is necessary 

или что-то более сложное:

 # more configurable function tm () { cd /opt/tomcat case "$1" in "foo") # do something funky ;; "bar") # do something more funky ;; esac } 

Действительно есть способ, но единственный, что я нашел, был довольно сложным. Например, вот что я буду делать (хотя я не рекомендую это для такого простого псевдонима …)

 alias tm="cd /opt/tomcat" tmp=`alias tm | cut -f2 -d"="` tmp="${tmp%\'}" tmp="${tmp#\'}" alias tmbin="$tmp/bin" 

Объяснение:

  • Сначала я получаю необработанную команду, хранящуюся в псевдониме, используя вырез и псевдоним.
  • Затем я удаляю первый и последний «\», потому что мне не нужна строка.
  • После этого я получил исходный псевдоним, и я могу создать новый, используя это значение.

Хотя я думаю, что мое решение плохое, и если кто-то получил лучшее, спасибо, что позволил мне знать 🙂

EDIT: более короткое решение, которое работает одинаково

 alias tm="cd /opt/tomcat" tmp=`alias tm | cut -f2 -d"=" | cut -f2 -d"'"` alias tmbin="$tmp/bin" 

Я должен сказать вам, что он может использоваться для расширения любого псевдонима. Я просто тестировал его, и он работает, хотя на более длинных псевдонимах я не знаю, как это будет реагировать. В случае более длительного псевдонима с большим количеством «» в нем лучше использовать первое решение, которое удаляет FIRST и LAST «». Тебе решать. Надеюсь, это поможет.

В этом вопросе stackoverflow есть хороший ответ

Например, чтобы расширить псевдоним 'ls', добавив '-o', вы бы сделали

 eval "$(alias -p|grep '^alias ls='|sed "s/'$/ -o'/")" 
  • псевдонимы параметров
  • Как я могу сказать, какая команда означает псевдоним?
  • Псевдоним в bashrc - не может заставить его работать
  • Реализация команды, выполняющей заданную команду по определенному пути и возвращающегося к текущему пути
  • Почему сглаживание над стандартными командами не рекомендуется?
  • псевдоним? не работает в zsh
  • Что происходит с аргументом в псевдониме после его использования один раз?
  • Идентифицировать псевдоним для введенной команды
  • Почему пользовательская команда mkcd не работает?
  • Трудный рекурсивный псевдоним bash? установить при первом использовании
  • Запустите команду, которая затенена псевдонимом
  • Linux и Unix - лучшая ОС в мире.