几乎每次我通过命令行(为bash)“ cd”到机器上的其他目录(在本例中为运行Mac OS X 10.6.7)时,我立即键入“ 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”的行为,使其更改为请求的目录,然后再执行其他操作?