Выполните другую команду перед запуском команды, которую хочет запустить пользователь.

Выполните другую команду перед запуском команды, которую хочет запустить пользователь.

Допустим, я хочу изменить исходное поведение инструмента lsследующим образом:

$ ls
Hello World
file1 file2 ...

Как я могу это сделать?

При запуске lsя хотел бы выполнить другую команду, скажем echo "Hello World!".

Быстрое решение, которое я вижу, — это использование псевдонима:

alias orig_ls="ls"
alias ls='echo "Hello World!"'

Однако это не настоящее решение, так как при запуске orig_lsбудет выведено "Hello World!".

решение1

Иногда псевдоним недостаточно эффективен, чтобы легко сделать то, что вам нужно, поэтому вот способ обойтись без его использования.

В каком-нибудь файле, который загружается при запуске вашей оболочки (например, .bashrc), добавьте следующую функцию:

ls () {
    echo "Hello world!"
    command ls "$@"
}

В отличие от псевдонима, функция может рекурсивно выполняться. Вот почему command lsis используется вместо ls; он сообщает вашей оболочке, что нужно использовать фактическую функцию lsвместо функции, которую вы только что определили.

решение2

Не забудьте позвонить ls:

alias ls='echo "Hello World!"; ls'

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