免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 6197 | 回复: 25
打印 上一主题 下一主题

可否解释一下mv -f !* ~/.trash里!号的意义 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-08-01 11:25 |只看该作者 |倒序浏览
有关linux防止误删除,很多地方都介绍引入alias转换rm命令为mv命令,下面的方法在网上较多地方被引用的,不信你用“alias undel”关键字google一下:

在bashrc加入以下指令,但是先要在/目录下创建一个名为.trash的子目录
alias rm        'mv -f !* ~/.trash'
alias undel     'mv ~/.trash/!* ./!*'
alias cleantrash '/bin/rm -rf ~/.trash; mkdir ~/.trash; sync'
alias lrm       'ls ~/.trash'

我发现这里alias定义rm等命令时,不知为何,都没有=号(我也查了其它几个网上的版本,但都没有这个=号),所以实际上根本没法生效。然后我自己加了=号上去,变成
alias rm='mv -f !* ~/.trash'
alias undel='mv ~/.trash/!* ./!*'
alias cleantrash='/bin/rm -rf ~/.trash; mkdir ~/.trash; sync'
alias lrm='ls ~/.trash'

我在我的RH9上配置,但在调用rm时,得到如下错误:
mv:can't stat source !*

我查了许多资料,想搞清楚mv -f !*中这个!号和!*究竟是什么含义,但一直找不到答案。这里想请教高手给指定迷津。

论坛徽章:
0
2 [报告]
发表于 2005-08-01 13:03 |只看该作者

可否解释一下mv -f !* ~/.trash里!号的意义

你man一下alias有下面一段话:
alias [-p] [name[=value] ...]
              Alias with no arguments or with the -p option prints the list of
              aliases  in  the form alias name=value on standard output.  When
              arguments are supplied, an alias is defined for each name  whose
              value is given.  A trailing space in  value causes the next word
              to be checked for alias substitution when the alias is expanded.
              For  each  name  in the argument list for which no value is sup-
              plied, the name and  value  of  the  alias  is  printed.   Alias
              returns  true unless a name is given for which no alias has been
              defined.

可见,alias是要=的

论坛徽章:
0
3 [报告]
发表于 2005-08-01 13:36 |只看该作者

可否解释一下mv -f !* ~/.trash里!号的意义

!*有可能为$*,指后面所有的参数

论坛徽章:
0
4 [报告]
发表于 2005-08-01 14:27 |只看该作者

可否解释一下mv -f !* ~/.trash里!号的意义

csh里的alias就是没有=

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
5 [报告]
发表于 2005-08-01 15:01 |只看该作者

可否解释一下mv -f !* ~/.trash里!号的意义

bashrc .............
应该是 .cshrc 吧?

在csh中 !*表示上一次命令的参数

论坛徽章:
0
6 [报告]
发表于 2005-08-01 15:32 |只看该作者

可否解释一下mv -f !* ~/.trash里!号的意义

哪位给个标准答案阿?

论坛徽章:
0
7 [报告]
发表于 2005-08-01 17:59 |只看该作者

可否解释一下mv -f !* ~/.trash里!号的意义

echo ${!*}  a v
a v

就是表示你所输入的参数.
在这里就是 mv -f  !* (!* 就是你要删除的file  你所输入的文件名就是它的值)

论坛徽章:
0
8 [报告]
发表于 2005-08-02 10:42 |只看该作者

可否解释一下mv -f !* ~/.trash里!号的意义

上面dahai01提到:!* 就是你要删除的file  你所输入的文件名就是它的值,我大概猜可能也是这样,就是没有找到一个地方专门有这个解释的,而且为什么我实际执行也行不通啊。
这个方法我在机械工业出版社的《Red Hat Linux 9桌面应用》同样找到,这个书上有用到=,其余一模一样。而且也是说加在bashrc上。
可有哪位高手顺便帮我试一下,如果有错误,贴出正确的,大家来共享。

论坛徽章:
0
9 [报告]
发表于 2005-08-02 14:05 |只看该作者

可否解释一下mv -f !* ~/.trash里!号的意义

关注。。

论坛徽章:
0
10 [报告]
发表于 2005-08-02 16:01 |只看该作者

可否解释一下mv -f !* ~/.trash里!号的意义

!*这个意思根据前面的回复我已经搞清楚了。比如你敲入命令:
ls test
然后再敲入一个命令,!*,这时结果就出现test。

[root@Linux member]# ls temp
a.out  hi.c
[root@Linux member]# !*
temp
-bash: temp: command not found

心里有点纳闷的是这样简单的东西居然没有任何资料来说明,还得大家捣腾一下才明白……

现在我按前面介绍的方法已设置好alias,然后执行

[root@BitLinux member]# alias rm
alias rm='mv -f !* ~/.trash'
[root@BitLinux member]# rm temp
mv: can't stat source !*

我如果直接这样执行:
[root@BitLinux member]# ls temp
a.out hi.c
[root@BitLinux member]# mv -f !* ~/.trash
就没有问题。
请高手再给予几分关注,行的话,其实还是很有实际意义。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP