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

В моем файле псевдонимов я уже определил:

alias e='eza --long --recurse --dereference …'

Я хочу добавить вариант, который добавляет еще один вариант в конце:

alias et='eza --long --recurse --dereference … --tree'

Вместо повторения кода я хотел бы повторно использовать значение e, я попробовал:

alias et = "$(alias e) --tree"

Это дает неверный результат, поскольку команда alias KEY выводит результат в формате alias KEY=VALUE, где ЗНАЧЕНИЕ заключено в кавычки. В документации этот формат называется многоразовым.

Мне нужно значение псевдонима без кавычек.

alias et = "$(alias-value-unquoted e) --tree"
# hypothetical ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑

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

Попробуйте alias et = "$(alias e | sed "s/^[^']*'//; s/'$//") --tree"

Wiimm 04.08.2024 21:41

Почему бы просто не alias et='e --tree'?

pmf 04.08.2024 22:38
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
60
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В простом случае вы можете повторить псевдоним. Согласно руководству: The first word of the replacement text is tested for aliases, but a word that is identical to an alias being expanded is not expanded a second time. Итак, это работает:

user@host: alias f='echo foo'
user@host: f
foo
user@host: alias g='f bar'
user@host: g
foo bar

В более сложных случаях следует перейти к функциям. Например:

e() {
  eza --long --recurse --dereference "$@"
}

et() {
  e "$@" --tree
}

Обратите внимание, что функции почти всегда предпочтительнее псевдонимов, поскольку функции обычно легче писать (не требуются дополнительные кавычки или экранирование специальных символов) и они более гибки с поддержкой аргументов. В последней строке записи псевдонимов в руководстве даже говорится: For almost every purpose, shell functions are preferred over aliases.

Повторите псевдоним, чтобы создать новый псевдоним, это очень разумно.

Cyrus 05.08.2024 00:29

Независимо от простоты и если вы не пишете сценарии оболочки для компьютеров 35-летней давности, функции — правильный вариант. Псевдонимы являются остатком ранней оболочки, не имевшей функций. Псевдонимы существуют для обратной совместимости со старыми устаревшими файлами /etc/profile или .profile, так же, как расширение подоболочки с обратной галочкой или арифметический синтаксис $[].

Léa Gris 05.08.2024 10:55

Другие вопросы по теме