Майже кожен раз, коли я 'кд' в інший каталог на моєму комп'ютері (в даному випадку, запускається Mac OS X 10.6.7) за допомогою командного рядка (який bash), я відразу введіть 'ls', щоб отримати список вмісту \ t у цьому каталозі. Я намагаюся розібратися зі способом перевизначення "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", щоб він змінився на потрібний каталог, а потім виконати щось інше?