分页: 1 / 2
请教各位高手alias使用
发表于 : 2008-07-22 10:51
由 jcauchy
我的shell是bash,alias普通用法我是知道的,但是给多个命令别名(多个命令间用分号" ; "隔开),我有一个地方不会,例如:
给mkdir和ls别名为md
alias md='mkdir;ls'
然后使用md aa(创建文件夹aa并显示当前目录下的文件)
结果显示错误:mkdir缺少操作符
其实小弟不懂之处在于如何将alias后的操作符传递到mkdir之后,呵呵~
还有ubuntu里man alias,显示alias没有帮助文档,帮助文档源里有下载吗?谢谢~~
发表于 : 2008-07-22 10:56
由 JangMunho
不要自作聪明,我知道你是什么意思,你是不是认为:
md aa会被解析成mkdir aa; ls aa?
这是不可能的,它只能被解析成
mkdir ; ls aa
因此提示缺少操作符,电脑没那么智能。
之所以没有man page是因为它是一个内部命令,就像cd命令,内部命令不可能有man page。
发表于 : 2008-07-22 11:02
由 yawsh
你想要实现的功能不是可以用shell脚本吗?
发表于 : 2008-07-22 11:05
由 jcauchy
以前我用过别人一个系统,它每次cd到一个目录下就会自动显示该目录下的文件
比如cd /home,它就相当于先cd /home然后ls,我就是不知到他是怎么设置别名的
发表于 : 2008-07-22 11:06
由 jcauchy
yawsh 写了:你想要实现的功能不是可以用shell脚本吗?
我希望可以写在.bashrc中
发表于 : 2008-07-22 11:10
由 JangMunho
jcauchy 写了:以前我用过别人一个系统,它每次cd到一个目录下就会自动显示该目录下的文件
比如cd /home,它就相当于先cd /home然后ls,我就是不知到他是怎么设置别名的
我恐怕不是别名,而是使用一个cd脚本掩盖掉了shell本身的cd。
发表于 : 2008-07-22 11:12
由 eexpress
jcauchy 写了:yawsh 写了:你想要实现的功能不是可以用shell脚本吗?
我希望可以写在.bashrc中
直接写脚本到alias就是,一行而已,调用$*等当参数。
发表于 : 2008-07-22 11:14
由 JangMunho
eexpress 写了:jcauchy 写了:yawsh 写了:你想要实现的功能不是可以用shell脚本吗?
我希望可以写在.bashrc中
直接写脚本到alias就是,一行而已,调用$*等当参数。
对,不过我觉得他所希望的不是这样,但事实上想要满足他的要求只能这样了。
发表于 : 2008-07-22 11:19
由 BigSnake.NET
JangMunho 写了:jcauchy 写了:以前我用过别人一个系统,它每次cd到一个目录下就会自动显示该目录下的文件
比如cd /home,它就相当于先cd /home然后ls,我就是不知到他是怎么设置别名的
我恐怕不是别名,而是使用一个cd脚本掩盖掉了shell本身的cd。
可以覆盖吗?
发表于 : 2008-07-22 11:23
由 JangMunho
BigSnake.NET 写了:JangMunho 写了:jcauchy 写了:以前我用过别人一个系统,它每次cd到一个目录下就会自动显示该目录下的文件
比如cd /home,它就相当于先cd /home然后ls,我就是不知到他是怎么设置别名的
我恐怕不是别名,而是使用一个cd脚本掩盖掉了shell本身的cd。
可以覆盖吗?
不知道,也没打算试验。
我觉得即便是搜索路径中存在一个叫cd的程序,shell也要优先执行它的内部命令,因此能覆盖的可能性不大。
PS:我应该看看bash的源代码就什么都明白了。
发表于 : 2008-07-22 11:26
由 BigSnake.NET
代码: 全选
my_cd () { cd "$@" ; ls ; };
alias cd=my_cd
注意只能设定一次, 不然就递归了
发表于 : 2008-07-22 11:28
由 JangMunho
BigSnake.NET 写了:代码: 全选
my_cd () { cd "$@" ; ls ; };
alias cd=my_cd
注意只能设定一次, 不然
就递归了
呵呵,那样就很搞笑了。
发表于 : 2008-07-22 11:32
由 eexpress
JangMunho 写了:jcauchy 写了:以前我用过别人一个系统,它每次cd到一个目录下就会自动显示该目录下的文件
比如cd /home,它就相当于先cd /home然后ls,我就是不知到他是怎么设置别名的
我恐怕不是别名,而是使用一个cd脚本掩盖掉了shell本身的cd。
/usr/local/bin下建立一个cd就是。cd $*;ls
$PATH按照次序来执行的。
发表于 : 2008-07-22 11:37
由 jcauchy
我用过那个人电脑后觉得很方便,就把他的.cshrc文件直接拷到我的电脑上了,结果我也可以这样用了,我觉得不是脚本吧,当时我忘记看.cshrc了
现在想这么设置,却不知道怎么设置,那个人是我的师兄,现在已经毕业了
发表于 : 2008-07-22 11:40
由 BigSnake.NET
eexpress 写了:JangMunho 写了:jcauchy 写了:以前我用过别人一个系统,它每次cd到一个目录下就会自动显示该目录下的文件
比如cd /home,它就相当于先cd /home然后ls,我就是不知到他是怎么设置别名的
我恐怕不是别名,而是使用一个cd脚本掩盖掉了shell本身的cd。
/usr/local/bin下建立一个cd就是。cd $*;ls
$PATH按照次序来执行的。
试过了, 优先执行内部命令