Примерно каждый раз, когда я 'cd' в другой каталог на моем компьютере (в данном случае, под управлением Mac OS X 10.6.7) через командную строку (это bash), я сразу же набираю 'ls', чтобы получить список содержимого. в этом каталоге. Я пытаюсь найти способ переопределить 'cd', чтобы он изменился на запрошенный каталог и затем выдал мне список за один раз.
Мне удалось получить базовую функциональность, над которой я работаю, добавив следующую строку в мой ~ / .bash_profile
function cl() { cd "$@"; ls -l; }
Это работает как ожидалось. Перейдя в запрошенный каталог, а затем показывая мне содержимое. Я сталкиваюсь с проблемой, пытаясь переопределить сам «cd» вместо создания новой команды «cl».
Следующие вещи не работают
##### Attempt 1 #####
# Hangs the command line
function cd() { cd "$@"; ls -l; }
##### Attempt 2 #####
# Hangs the command line
function cd() { 'cd' "$@"; ls -l; }
##### Attempt 3 #####
# Does not change directory.
# Does list contents, but of the directory where you started.
function cd() { /usr/bin/cd "$@"; ls -l; }
#### Other attempts that fail in various ways #####
alias cd=cd "$@"; ls -la;
alias cd="cd '$@'; ls -la;"
alias cd='cd "$@"'; ls -la;
alias cd=/usr/bin/cd "$@"; ls -la;
Я также попробовал несколько других итераций, которые не перечислены, а также создал псевдоним, который указывает на работающую функцию 'cl'. Ни один из которых не работал.
То, что я прочитал в документации, говорит о том факте, что «cd» не может быть запущен как внешняя команда (как я понимаю, это то, как функция должна использовать ее).
Таким образом, в настоящее время я могу использовать свою команду "cl" и получить то, что хочу, но вопрос в том / остается:
Есть ли способ переопределить поведение 'cd', чтобы оно изменилось на запрошенный каталог, а затем сделать что-то еще после этого?