Isa*_*iah 36
来自Bash Tips and Tricks: 'cd' with style:
最后,我想向您展示如何为“cd”命令编写您自己的自定义替换。
您是否发现自己在切换到目录时总是输入相同的内容?您可能至少每次都在那里列出文件,可能太多了,以至于您的手会在每次 'cd' 后自动键入 'ls'。
好吧,通过尝试我能想到的所有方法,结果证明只有一种方法可以正确实现我们正在寻求的目标。我们必须创建一个shell函数。
Shell 函数是 Shell 编程的一部分。就像在编译的编程语言中一样,函数提供了一种过程模块化。可以创建一个通用函数来执行一些常用的逻辑或具有不同参数的计算。在这种情况下,参数是当前工作目录。
这是一个简单的:
Run Code Online (Sandbox Code Playgroud)function cs () { cd $1 ls }
正如@geirha正确指出的那样,如果您尝试切换到名称中带有空格的目录,上述函数将失败:
$ cs A\ B/
-bash: cd: A: No such file or directory
<current directory listing>
Run Code Online (Sandbox Code Playgroud)
您应该改用以下函数:
function cs () {
cd "$@" && ls
}
Run Code Online (Sandbox Code Playgroud)
一旦你将该代码添加到你的~/.bashrc,你应该能够做到这一点:
hello@world:~$ cs Documents/
example.pdf tunafish.odt
hello@world:~/Documents$
Run Code Online (Sandbox Code Playgroud)
One*_*One 26
您可以builtin在 bash 中使用该命令:
function cd() {
new_directory="$*";
if [ $# -eq 0 ]; then
new_directory=${HOME};
fi;
builtin cd "${new_directory}" && ls
}
Run Code Online (Sandbox Code Playgroud)
Flo*_*sch 17
使用函数而不是别名:
cs() { cd "$1" && ls; }
Run Code Online (Sandbox Code Playgroud)
感谢Florian Diesch提供使用函数的技巧。我不能使用cs作为名称,因为csound包中有一个cs命令,所以我使用了.lc
我将其添加到~/.bash_aliases( nano ~/.bash_aliases) 中:
function lc () {
cd $1;
ls
}
Run Code Online (Sandbox Code Playgroud)
终端需要reset为此生效。