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

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

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'/")" 
  • Псевдонимы в csh
  • cshell alias: как использовать вложенные одинарные кавычки (') в псевдониме cshell
  • Новый псевдоним, недоступный после;
  • Могу ли я использовать скрипты вместо псевдонимов?
  • Что происходит с аргументом в псевдониме после его использования один раз?
  • Псевдоним команды для запуска в фоновом режиме
  • Проблема: слияние команды с конвейером и аргументом
  • Как определить псевдоним для неинтерактивной / недействительной оболочки?
  • Как поменять две команды в bash?
  • Как сделать работу с псевдонимами на других терминалах
  • zsh с аргументами
  • Создание псевдонима для сценария bash
  • Interesting Posts

    Как монтировать mdf-образ, iso9660 doens't для этого?

    Установка Arch Linux на SD-карту – проблема записи таблицы разделов

    Перенесите большие файлы, не забирая полосу пропускания (есть ли эквивалент BITS для Linux?)

    Загрузка ядра останавливается сразу после «Uncompressing Linux …»

    Как удалить блок-устройство из списка lsblk на CentOS 7?

    Fedora 20, сценарий запуска с сетевыми настройками работает правильно, но без реального эффекта

    что означает $ * в shell

    Как настроить собственный сервер записи DNS?

    Восстановить содержимое отформатированного диска?

    Существуют ли процессы, у которых нет родителя?

    grep с большим количеством файлов, который содержит много строк?

    nginx обслуживает info.php, но не поддерживает index.php

    Amazon EC2: предоставление постоянных разрешений в Sepecific Directory в Amazon Linux AMI

    Мой компьютер говорит: «/ dev / sda2 содержит файловую систему с ошибкой, проверяет принудительное» и показывает это

    nmcli не отображают карту wlan в пользовательской области

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