Как создать псевдонимы с «перекрывающимися» именами для существующих команд?

Как создать псевдонимы с «перекрывающимися» именами для существующих команд?

Допустим, я хочу создать псевдоним с именем ssдля команды sudo -s. Но ssуже есть существующая команда, поэтому я хочу создать еще один псевдоним с именем sstдля команды ss.

Если использовать только обычные имена команд, это невозможно, поскольку псевдонимы:

  1. Не установлены таким образом, чтобы соблюдался порядок, и
  2. Ссылайтесь на другие псевдонимы, а не только на команды

Итак, если я попробую сделать следующее:

alias sst='ss'
alias ss='sudo -s'

Выполнение команды sstприводит к запуску sudo -s, что не входит в мои намерения.

Как это может быть сделано?

решение1

Чтобы вышеизложенное сработало, вам необходимо указать абсолютный путь к команде, которую вы хотите запустить.

Это можно сделать следующим образом:

alias sst='/usr/bin/ss'
alias ss='sudo -s

Однако не всегда можно быть уверенным, ssчто вы находитесь в нужном месте, поэтому более обоснованным подходом будет:

alias sst='$(which ss)'
alias ss='sudo -s

Теперь вышеприведенный код работает так, как и ожидалось, где ssзапускается sudo -sи sstвыполняется команда ss.

Связанный контент