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

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

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

??

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

 alias tmbin=tm;cd bin 

  • Список только временных псевдонимов в bash
  • Как я могу сказать, какая команда означает псевдоним?
  • Трудный рекурсивный псевдоним bash? установить при первом использовании
  • cp -f не может перезаписать cp -i alias
  • Как установить псевдоним для определенного файла или каталога?
  • расширение псевдонимов команды
  • Как вы управляете своими псевдонимами bash / zsh?
  • Сколько различных способов вы можете создать «псевдоним» в Bash?
  • 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'/")" 
    Interesting Posts

    Строка состояния i3: низкая батарея не отображается красным цветом

    Отладка программы Java для изменения файла конфигурации часового пояса на Ubuntu

    Перезапуск X в CentOS 5

    Есть ли команда FreeDesktop для открытия диалогового окна open-with, аналогичного xdg-open?

    Сценарий Linux init, что делает 0 <& – &> достигать

    Почему bash отключает автозаполнение некоторых команд и как его отключить?

    Как объединить значения из двух столбцов?

    Зачем использовать команду alternatives?

    Обработка файлов с пробелами в именах

    Как заставить spamassassin не проверять, находится ли аутентифицированный пользователь в черном списке?

    Как мне заставить X запускаться без подключения монитора при использовании драйверов NVIDIA?

    Не удалось перезагрузить или выключить Linux Mint 17.1 на VMWare Player

    Ошибка открытия google-chrome на linuxmint

    Системный пользовательский сервис и таймер

    с двумя головками с NVIDIA Quadro FX3450 / 4000 на Centos 6.2

    Linux и Unix - лучшая ОС в мире.