Допустим, я хочу изменить исходное поведение инструмента 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 ls
is используется вместо ls
; он сообщает вашей оболочке, что нужно использовать фактическую функцию ls
вместо функции, которую вы только что определили.
решение2
Не забудьте позвонить ls
:
alias ls='echo "Hello World!"; ls'