我想要一个产生以下结果的别名:
$cd /home/ok
[clear screen]
/home/ok
total 452K
-rwx--x--x 1 user gigl 16K Oct 1 14:08 ok0
drwx------ 5 user gigl 0 Oct 1 14:02 ok1
drwx------ 5 user gigl 0 Oct 1 13:59 ok2
drwx------ 9 user gigl 0 Oct 1 14:01 ok3
-rw------- 1 user gigl 32 Sep 30 14:36 ok4
我做了像
这样的剧本$cat ~/.cd.sh
#!/bin/bash
cd $1 && clear && pwd && ls -lh --color=auto
但它并没有改变目前的目录。这可能是因为在脚本中它会改变目录但是当它回到bash时我回到了目录中我执行了脚本。
有什么想法吗?
谢谢,从答案中我得到了类似的工作:
alias ls="clear && pwd && ls -lh --color=auto"
cd() { builtin cd "$1" && ls; }
答案 0 :(得分:9)
就个人而言,我建议编写一个函数而不是从.bashrc或.bash_profile加载的别名。
该功能与您已经拥有的功能非常相似:
cdd () {
cd "$1"
clear
pwd
ls -lh --color=auto
}
我不肯为什么别名会让你回去,但我测试了这个功能并且它有效。
答案 1 :(得分:1)
改为使用函数,例如
mycd() { cd "${1?}" && clear && pwd && ls -lh --color=auto; }
答案 2 :(得分:0)
我认为你不想要&&无论是。这将同时运行每个命令,iirc。你应该使用分号。