请教各位高手alias使用

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
头像
jcauchy
帖子: 22
注册时间: 2008-07-18 16:31

请教各位高手alias使用

#1

帖子 jcauchy » 2008-07-22 10:51

我的shell是bash,alias普通用法我是知道的,但是给多个命令别名(多个命令间用分号" ; "隔开),我有一个地方不会,例如:
给mkdir和ls别名为md
alias md='mkdir;ls'
然后使用md aa(创建文件夹aa并显示当前目录下的文件)
结果显示错误:mkdir缺少操作符

其实小弟不懂之处在于如何将alias后的操作符传递到mkdir之后,呵呵~

还有ubuntu里man alias,显示alias没有帮助文档,帮助文档源里有下载吗?谢谢~~
上次由 jcauchy 在 2008-07-22 11:08,总共编辑 1 次。
头像
JangMunho
帖子: 1347
注册时间: 2006-01-18 12:55
来自: 也许真的没有人理解

#2

帖子 JangMunho » 2008-07-22 10:56

不要自作聪明,我知道你是什么意思,你是不是认为:
md aa会被解析成mkdir aa; ls aa?
这是不可能的,它只能被解析成
mkdir ; ls aa
因此提示缺少操作符,电脑没那么智能。
之所以没有man page是因为它是一个内部命令,就像cd命令,内部命令不可能有man page。
MacBook Pro 15" User
Cocoa Programmer
头像
yawsh
帖子: 105
注册时间: 2006-04-29 10:51

#3

帖子 yawsh » 2008-07-22 11:02

你想要实现的功能不是可以用shell脚本吗?
头像
jcauchy
帖子: 22
注册时间: 2008-07-18 16:31

#4

帖子 jcauchy » 2008-07-22 11:05

以前我用过别人一个系统,它每次cd到一个目录下就会自动显示该目录下的文件
比如cd /home,它就相当于先cd /home然后ls,我就是不知到他是怎么设置别名的
头像
jcauchy
帖子: 22
注册时间: 2008-07-18 16:31

#5

帖子 jcauchy » 2008-07-22 11:06

yawsh 写了:你想要实现的功能不是可以用shell脚本吗?
我希望可以写在.bashrc中
头像
JangMunho
帖子: 1347
注册时间: 2006-01-18 12:55
来自: 也许真的没有人理解

#6

帖子 JangMunho » 2008-07-22 11:10

jcauchy 写了:以前我用过别人一个系统,它每次cd到一个目录下就会自动显示该目录下的文件
比如cd /home,它就相当于先cd /home然后ls,我就是不知到他是怎么设置别名的
我恐怕不是别名,而是使用一个cd脚本掩盖掉了shell本身的cd。
MacBook Pro 15" User
Cocoa Programmer
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

#7

帖子 eexpress » 2008-07-22 11:12

jcauchy 写了:
yawsh 写了:你想要实现的功能不是可以用shell脚本吗?
我希望可以写在.bashrc中
直接写脚本到alias就是,一行而已,调用$*等当参数。
● 鸣学
头像
JangMunho
帖子: 1347
注册时间: 2006-01-18 12:55
来自: 也许真的没有人理解

#8

帖子 JangMunho » 2008-07-22 11:14

eexpress 写了:
jcauchy 写了:
yawsh 写了:你想要实现的功能不是可以用shell脚本吗?
我希望可以写在.bashrc中
直接写脚本到alias就是,一行而已,调用$*等当参数。
对,不过我觉得他所希望的不是这样,但事实上想要满足他的要求只能这样了。
MacBook Pro 15" User
Cocoa Programmer
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

#9

帖子 BigSnake.NET » 2008-07-22 11:19

JangMunho 写了:
jcauchy 写了:以前我用过别人一个系统,它每次cd到一个目录下就会自动显示该目录下的文件
比如cd /home,它就相当于先cd /home然后ls,我就是不知到他是怎么设置别名的
我恐怕不是别名,而是使用一个cd脚本掩盖掉了shell本身的cd。
可以覆盖吗?
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
头像
JangMunho
帖子: 1347
注册时间: 2006-01-18 12:55
来自: 也许真的没有人理解

#10

帖子 JangMunho » 2008-07-22 11:23

BigSnake.NET 写了:
JangMunho 写了:
jcauchy 写了:以前我用过别人一个系统,它每次cd到一个目录下就会自动显示该目录下的文件
比如cd /home,它就相当于先cd /home然后ls,我就是不知到他是怎么设置别名的
我恐怕不是别名,而是使用一个cd脚本掩盖掉了shell本身的cd。
可以覆盖吗?
不知道,也没打算试验。
我觉得即便是搜索路径中存在一个叫cd的程序,shell也要优先执行它的内部命令,因此能覆盖的可能性不大。
PS:我应该看看bash的源代码就什么都明白了。
MacBook Pro 15" User
Cocoa Programmer
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

#11

帖子 BigSnake.NET » 2008-07-22 11:26

代码: 全选

my_cd () { cd "$@" ; ls ; };
alias cd=my_cd
注意只能设定一次, 不然就递归了
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
头像
JangMunho
帖子: 1347
注册时间: 2006-01-18 12:55
来自: 也许真的没有人理解

#12

帖子 JangMunho » 2008-07-22 11:28

BigSnake.NET 写了:

代码: 全选

my_cd () { cd "$@" ; ls ; };
alias cd=my_cd
注意只能设定一次, 不然就递归了
呵呵,那样就很搞笑了。
MacBook Pro 15" User
Cocoa Programmer
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

#13

帖子 eexpress » 2008-07-22 11:32

JangMunho 写了:
jcauchy 写了:以前我用过别人一个系统,它每次cd到一个目录下就会自动显示该目录下的文件
比如cd /home,它就相当于先cd /home然后ls,我就是不知到他是怎么设置别名的
我恐怕不是别名,而是使用一个cd脚本掩盖掉了shell本身的cd。
/usr/local/bin下建立一个cd就是。cd $*;ls

$PATH按照次序来执行的。
● 鸣学
头像
jcauchy
帖子: 22
注册时间: 2008-07-18 16:31

#14

帖子 jcauchy » 2008-07-22 11:37

我用过那个人电脑后觉得很方便,就把他的.cshrc文件直接拷到我的电脑上了,结果我也可以这样用了,我觉得不是脚本吧,当时我忘记看.cshrc了
现在想这么设置,却不知道怎么设置,那个人是我的师兄,现在已经毕业了
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

#15

帖子 BigSnake.NET » 2008-07-22 11:40

eexpress 写了:
JangMunho 写了:
jcauchy 写了:以前我用过别人一个系统,它每次cd到一个目录下就会自动显示该目录下的文件
比如cd /home,它就相当于先cd /home然后ls,我就是不知到他是怎么设置别名的
我恐怕不是别名,而是使用一个cd脚本掩盖掉了shell本身的cd。
/usr/local/bin下建立一个cd就是。cd $*;ls

$PATH按照次序来执行的。
试过了, 优先执行内部命令
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
回复