用参数创建别名

时间:2010-10-01 18:44:32

标签: bash

我想要一个产生以下结果的别名:

$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; }

3 个答案:

答案 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。你应该使用分号。