当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 10 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : shell命令中mv的实现原理是什么
帖子发表于 : 2009-05-15 17:49 
头像

注册: 2009-02-07 23:30
帖子: 87
送出感谢: 0 次
接收感谢: 0 次
有这样一道题:
引用:
编写程序move实现linux的shell命令mv的部分功能,要求在shell提示符下输入
$move path1/a path2/b
能够实现文件从路径1到路径2的移动和重命名

我原来以为是先创建一个b,然后把a拷贝到b,然后再删除a.
但这个题的答案很简单只是重命名了a就可以实现了.
代码:
//mv功能的实现
#include <stdio.h>
int main(int argc,char *argv[])
{
   int res;
   if(argc!=3)
   {
       printf("Parameter error!\n");
       exit(0);
   }
   res = rename( argv[1], argv[2]);
   if (res == 0)
   {
       printf("success!\n");
   }
   else
   {
       printf("error!\n");
   }
   return 0;
}

我想知道在linux中,一个文件的文件名包含整个路径吗?mv的具体实现原理是什么?


_________________
$ ubuntu++
心中无敌者,无敌于天下


页首
 用户资料  
 
2 楼 
 文章标题 : Re: shell命令中mv的实现原理是什么
帖子发表于 : 2009-05-15 18:18 
头像

注册: 2008-07-28 19:51
帖子: 805
地址: 长沙
送出感谢: 1
接收感谢: 2
简单的google了一下,大致意思见下面这个图图片
文件应该是由inode(i节点)和block(数据块)组成,mv实际上只是改变了i节点,并没有改变数据块的位置

但是:如果数据在不同的分区,还是改变了数据的位置,应该有cp和rm的操作吧

参考我找的帖子:http://blog.chinaunix.net/u2/68904/showart_1793402.html


_________________
我的乌斑兔儿:http://zhanggang.net/m/b/b1/ubuntu右键选择在新的窗体打开
右边有一只黄手 ----> 或者注册Dropbox中文版感谢我


页首
 用户资料  
 
3 楼 
 文章标题 : Re: shell命令中mv的实现原理是什么
帖子发表于 : 2009-05-15 18:20 

注册: 2008-01-09 22:41
帖子: 18311
送出感谢: 0 次
接收感谢: 6
应该有mv的代码吧

直接读一下不就好了吗


页首
 用户资料  
 
4 楼 
 文章标题 : Re: shell命令中mv的实现原理是什么
帖子发表于 : 2009-05-15 20:05 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
记得以前看fat分区表的时代,不就是分区表的文件名,挪动一个地方嘛。原来的地方,标记一个无效字节(长度字节的后面)


_________________
● 鸣学


页首
 用户资料  
 
5 楼 
 文章标题 : Re: shell命令中mv的实现原理是什么
帖子发表于 : 2009-05-24 23:26 
头像

注册: 2008-09-18 13:11
帖子: 2340
送出感谢: 1
接收感谢: 332
这个答案是错的。rename只能处理在同一分区内移动的情况。mv是先判断是不是在同一分区内移动,是的话用rename,否则先复制再删除


页首
 用户资料  
 
6 楼 
 文章标题 : Re: shell命令中mv的实现原理是什么
帖子发表于 : 2009-05-24 23:39 

注册: 2008-04-11 23:31
帖子: 185
送出感谢: 0 次
接收感谢: 0 次
open read write close :em04


页首
 用户资料  
 
7 楼 
 文章标题 : Re: shell命令中mv的实现原理是什么
帖子发表于 : 2009-05-24 23:53 
头像

注册: 2008-07-21 9:44
帖子: 2371
地址: 深圳
送出感谢: 0 次
接收感谢: 0 次
学习~~


_________________

My blog


页首
 用户资料  
 
8 楼 
 文章标题 : Re: shell命令中mv的实现原理是什么
帖子发表于 : 2009-11-03 0:43 
头像

注册: 2009-10-02 15:47
帖子: 257
送出感谢: 0 次
接收感谢: 0 次
传说中的Linux C 小白也想学…… :em01


_________________
爱Linux 也爱Ubuntu
简洁美观的桌面
更爱高效稳定的系统
不是不折腾难受夫斯基不想浪费时间
我和大多数人一样 我是菜菜
我要有菜菜的觉悟
我是Drdi


页首
 用户资料  
 
9 楼 
 文章标题 : Re: shell命令中mv的实现原理是什么
帖子发表于 : 2009-11-03 14:54 

注册: 2009-11-02 14:49
帖子: 6
送出感谢: 0 次
接收感谢: 0 次
mv 不是shell也可以用啊。。linux手册有的啊。


页首
 用户资料  
 
10 楼 
 文章标题 : Re: shell命令中mv的实现原理是什么
帖子发表于 : 2010-01-26 21:09 

注册: 2008-10-31 22:12
帖子: 6546
系统: 践兔
送出感谢: 18
接收感谢: 25
1:
代码:
>> type mv
mv 已经被散列 (/bin/mv)

2:$a和$b都在同一个分区上 ? 重命名($a, $b) : ( 拷贝($a,$b) && 删除($a) )


_________________
代码:
] ls -ld //


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 10 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译