Cứ sau mỗi lần tôi 'cd' vào một thư mục khác trên máy của mình (trong trường hợp này, chạy Mac OS X 10.6.7) qua dòng lệnh (là bash), tôi lập tức gõ 'ls' để lấy danh sách nội dung trong thư mục đó. Tôi đang cố gắng tìm ra cách ghi đè 'cd' để nó thay đổi thư mục được yêu cầu và sau đó đưa cho tôi danh sách trong một lần chụp.
Tôi đã có thể có được chức năng cơ bản mà tôi đang tìm cách làm việc bằng dòng sau được thêm vào ~ / .bash_profile của tôi
function cl() { cd "$@"; ls -l; }
Điều này hoạt động như mong đợi. Thay đổi thư mục được yêu cầu và sau đó hiển thị cho tôi nội dung. Trường hợp tôi gặp phải một vấn đề là cố gắng ghi đè chính "cd" thay vì tạo lệnh "cl" mới.
Những điều sau đây không hoạt động
##### 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;
Tôi cũng đã thử một số lần lặp khác không được liệt kê cũng như tạo một bí danh trỏ đến chức năng 'cl' hoạt động. Không ai trong số đó làm việc.
Những gì tôi đã đọc trong tài liệu nói về thực tế rằng 'cd' không thể chạy như một lệnh bên ngoài (đó là điều tôi hiểu là cách mà chức năng sẽ cần sử dụng nó).
Vì vậy, hiện tại tôi có thể sử dụng lệnh "cl" của mình và nhận được những gì tôi muốn, nhưng câu hỏi là / vẫn:
Có cách nào để ghi đè hành vi của 'cd' để thay đổi thư mục được yêu cầu và sau đó thực hiện một thao tác nào khác không?