当前位置:文档之家› linux论文

linux论文

Linux结课论文

题目:MV命令

班级:K0311415

学号:K031141518 K031141505

姓名:李开菊苏梦云

专业:计算机科学与技

日期:2013/12/29

目录

中文摘要---------------------------------------- ABSTRACT---------------------------------------- 正文-------------------------------------------

1.MV指令的功能以格式 -------------------------

2.MV指令的相关参数----------------------------

2.1 MV参数的详细说明-----------------------

3.MV指令的相关实例------------------------------

4.MV的工作原理-------------------------------

4.1从管道方向------------------------------

4.2从shell命令方向--------------------------

4.3从连接控制方向-------------------------------

5.总结与展望-----------------------------------

致谢

参考文献

中文摘要

随着IT产业巨头纷纷宣布对linux的支持,linux正在迅速扩展其应用市场。尤其是对linux中的命令的使用,对于linux系统来说,我们关心更多的就是文件系统。那么对文件系统的操作有很多指令,但本文主要研究的是mv指令。mv命令是linux系统中为文件或目录改名或将文件由一个目录移入另一个目录中。该命令等同于DOS系统下的ren和move命令的组合。它的使用权限是所有用户。学习mv命令,将从其功能入手,研究其实现机理,找出其实现方法还研究了与mv相关的管道以及shell命令。通过理解mv的工作原理,深入理解linux的文件系统,为学习linux系统并逐渐精通linux系统编程掌握更多方法。

关键字:mv linux 文件系统文件目录ABSTRACT

As the IT industry giants have announced support for Linux, Linux is rapidly expanding its application market. Especially for use in Linux command, for Linux system, we care more is the file system. So there are a lot of instruction to the operation of the file system, but this paper mainly studies the mv command.

The mv command is Linux system as a file or directory name, or the file from a directory to another directory. This command is equivalent to a DOS under the system of the

combination of ren and move command. It is access to all users. Learning mv command, from its function, studies its implementation mechanism, find out its implementation method is also studied the mv related pipe and shell commands. By understanding the working principle of the mv deep understanding of the Linux file system, to learn Linux system and proficient in Linux system programming method have more gradually.

Key words: mv Linux file system file directory

正文:

1. mv指令的功能以及格式

mv命令是linux下最常用的命令。mv命令就是move 的缩写,mv命令不同于cp命令,mv命令是完全的从源移动文件并且把文件移动到指定的目录,这里cp命令只是复制文件的内容从一个文件到另一个文件。它的命令格式为mv [options] 源文件或目录目标文件或目录,其中的options可以省略,通过mv 命令不仅可以为linux文件夹中包含的文件或目录改名,而且还可以将文件由一个目录移入另一个目录中等等。

mv命令是如何使用的呢?在linux系统的有很多目录以

及文件,mv后接的参数非常多mv最常用的参数有两个:-I -f。

-i:交互方式操作。如果mv操作将导致对已存在的目标文件的覆盖,此时系统询问是否重写,要求用户回答”y”或”n”,这样可以避免误覆盖文件。

-f:禁止交互操作。mv操作要覆盖某个已有的目标文件时不给任何指示,指定此参数后i参数将不再起作用。

当第二个参数类型是文件时,mv命令完成文件重命名,它将所给的源文件或目录重命名为给定的目标文件名。

当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目录中。在跨文件系统移动文件时,mv先拷贝,再将原有文件删除,而链至该文件的链接也将丢失。

2.mv命令的相关参数:

-b或--backup 若需覆盖文件,则覆盖前先行备份。

-f或--force 若目标文件或目录与现有的文件或目录重复,则直接覆盖现有的文件或目录。

-i或--interactive 覆盖前先行询问用户。

-S或

--suffix= 与-b参数一并使用,可指定备份文件的所要附加的字尾。

-u或--update 在移动或更改文件名时,若目标文件已存在,且其文件日期比源文件新,则不覆盖目标文件。

-t :--target-directory=DIRECTORY move all SOURCE arguments into DIRECTORY,即指定mv的目标目录,该选项适用于移动多个源文件到一个目录的情况,此时目标目录在前,源文件在后。

-v或--verbose 执行时显示详细的信息。

-V=或

--version-control= 与-b参数一并使用,可指定备份的方法。

--help 显示帮助。

--version 显示版本信息

2.1mv指令参数的详细说明

i - m mv 命令用途移动文件。语法移动并重命名文件mv [ -E{force|ignore|warn} ] [ -i | -f ] SourceFile TargetFile 移动并重命名目录mv -E{force|ignore|warn} ] [ -i | -f ] SourceDirectory ... TargetDirectory 将文件移动到维护原始文件名的目录mv -E{force|ignore|warn} ] [ -i | -f ] SourceFile ... TargetDirectory

描述注意: mv 命令可以覆盖许多现有文件,除非指定-i 标志。-i 标志提示您在覆盖文件前先确认。如果-f 和-i 标志进行组合指定,则最后指定的标志占优。mv 命令把文

件和目录从一个目录移动到另一个,或者重命名文件或目录。如果把文件或目录移动到一个新的目录,保留基本文件名。当移动文件时,与其它文件的所有链接都保持不动,除非当您将其移动到不同的文件系统时。当把目录移动到现有目录时,目录及其内容添加到现有目录下。

当使用mv 命令来重命名文件或目录时,TargetDirectory 参数可以指定新的文件名或新的目录路径名。如果移动文件将覆盖没有写权限设置的现有文件,并且如果标准输入是工作站,mv 命令显示文件权限代码并且从标准输入中读取一行。如果该行以y 或者语言环境中y 的等价字符开始,mv 命令就移动文件。如果响应是除了y 以外的其它任何字母,mv 命令对该文件不做任何事而是继续下一个指定的文件。如果TargetFile 与ACL 关联,则显示的文件许可权代码可能无法完全表示访问许可权。当SourceFile 的父目录是可写的并且有粘性位设置,以下的一个或多个条件为真:用户必须拥有文件。用户必须拥有目录。用户必须是特权用户。文件对用户必须是可写的。此警告消息和输入提示可通过使用-f 选项覆盖。可以使用mv 命令在相同的文件系统或文件系统之间移动文件。不管是在一个文件系统中工作,还是跨文件系统工作,mv 命令把文件拷贝到目标处并删除原文件。

mv 命令在新文件中保存最新数据修改的时间、最新访问时间、用户标识、组标识和原始文件的文件方式。对于符号链路,mv 命令仅保存该链路本身的所有者和组。如果不能保存所有者和组标识,mv 命令清除目标中的S_ISUID 和S_ISGID 位。如果不能清除这些位,即使退出代码无效,mv 命令把诊断消息打印到标准错误中。如果命令过早地终止,mv 命令或者修改源文件或者修改目的路径。注: mv 命令支持把--(短划线,短划线)参数当作定界符,表示标志的结束。标志提示:mv 命令可以覆盖许多现有文件,除非指定了-i 标志。-i 标志提示您在覆盖文件前先确认。如果-f 和-i 标志进行组合指定,则最后指定的标志占优。-E -E 选项需要下列参数之一。如果省略-E 选项,warn 是缺省行为。force 如果文件的固定范围大小或者空间保留无法保存,则对文件的mv 操作失败。ignore 在保存范围属性时忽略任何错误。warn 如果文件的空间保留或者固定范围大小无法保存就发出警告。-f 在覆盖现有文件之前不提示。-i 移动文件或目录到现有的路径名称之前进行提示,通过后跟问号显示文件名。

如果您以y 或语言环境中y 的相等物开始的一行应答,移动就继续。其它任何应答都阻止移动发生。示例要重命名文件,输入:mv appendix apndx.a该命令把appendix 重命名为apndx.a。如果命名为apndx.a 的文件

已存在,它的旧内容将由appendix 的内容替换。要移动目录,输入:mv book manual如果manual 存在,该命令把book 下的所有文件和目录都移动到命名为manual 的目录。否则,目录book 重命名为manual。要把文件移动到另一个目录下并且给它新的名称,输入:mv intro manual/chap1该命令把intro 移动到manual/chap1。把名称intro 从当前目录下删除,且相同的文件在目录manual 中作为chap1 出现。

要把文件移动到另一个目录,保持相同的名称,输入:mv chap3 manual该命令把chap3 移动到

manual/chap3。注:例1 和例3 命名了两个文件,例2 命名了两个现有目录,而例 4 命名了一个文件和一个目录。要把多个文件移动到另一个目录,输入:mv chap4

jim/chap5 /home/manual该命令把chap4 文件移动到

/home/manual/chap4 文件目录,并且把jim/chap5 文件移动到/home/manual/chap5 文件。要使用带模式匹配字符的mv 命令,输入:mv manual/* 。该命令把manual 目录中的全部文件都移动到当前目录中。(period),保留它们在manual 中的名称。此移动也清空manual。必须在星号和周期之间输入空格。

3.MV指令的相关实例

在linux文件系统中,多个文件到各自文件夹,要如何操作呢?实现办法如下:

mv可以把多个文件移动到一个文件夹(目录)里面,比如:有a b c三个文件,一个目录d,用下面命令就能将a b c移动到d中$ mv a b c d 需要注意的是,目录d必须在最后面,而且它前面不能再出现其他目录,也可以使用带选项的mv命令,把多个文件移动到一个目录中,如$ mv a b c -t d $ mv -t d a b c 其中,-t后面紧接着的就是要移动到的目录,并且不能有多个目录出现,如果出现了多个目录,比如下面的命令$ mv -t adir a -t bdir b mv: multiple target directories specified 会出现上面的警告,且只执行了前面正确的那部分,即只是将a移动到了adir,后面的没执行,如果你的文件和目录名称有一定的关系,你的问题可以通过脚本来解决,当然,脚本的具体内容也要视具体情况而定假设有文件a b c,希望将a移动到adir,将b移动到bdir,将c移动到cdir,那么就可以这样来做写一个简单shell脚本:move.sh # FileName move.sh #!/bin/bash mv $1 "$1dir" $ chmod +x move.sh 然后,$ find . -type f | xargs -n

1 ./move.sh 执行完毕之后,就发现$ tree . |-- adir | `-- a |-- bdir | `-- b 即实现了将a移动到adir,b移动到bdir,c移动到cdir了。

如果想列出指定的内容并将其转移到新的目录,我们可以使通过使用mv和管道符有几种方法,1、file=`ls pattern`;mv $file newdir2、ls pattern|xargs -i mv {} newdir;

3、find ./ -name "pattern" -exec mv {} newdir \; /*不要忘记后面的"\;",这是必须添加的,否则执行不成功

*/12.sh`;do mv $i ./0328/ ;donfor i in `ls |grep -v 0328|grep –v

4.mv的工作原理

想要搞清楚mv指令是怎么样利用管道和shell命令来工作的,那么我们首先就要搞清楚管道以及shell相关知识

4.1从管道方向论述

在Linux中,管道是一种使用非常频繁的通信机制。从本质上说,管道也是一种文件,但它又和一般的文件有所不同,管道可以克服使用文件进行通信的两个问题,具体表现为:

·限制管道的大小。实际上,管道是一个固定大小的缓冲区。在Linux中,该缓冲区的大小为1页,即4K字节,使得它的大小不象文件那样不加检验地增长。使用单个固定缓冲区也会带来问题,比如在写管道时可能变满,当这种情况发生时,随后对管道的

write()调用将默认地被阻塞,等待某些数据被读取,以便腾出足够的空间供write()调用写。

·读取进程也可能工作得比写进程快。当所有当前进程数据已被读取时,管道变空。当这种情况发生时,一个随后的read()调用将默认地被阻塞,等待某些数据被写入,这解决管道实现的源代码在fs/pipe.c中,在pipe.c中有很多函数,其中有两个函数比较重要,即管道读函数pipe_read()和管道写函数pipe_wrtie()。管道写函数通过将字节复制到 VFS 索引节点指向的物理内存而写入数据,而管道读函数则通过复制物理内存中的字节而读出数据。当然,内核必须利用一定的机制同步对管道的访问,为此,内核使用了锁、等待队列和信号。

4.2从shell命令方面论述

linux的shell中有个很常用的东西管道,很多人认为他是shell的精华了,意思就是把一个命令的输出,作为另一个进程的输入。而在上操作系统课程时候,老师曾经给我们讲过进程通信中的管道这一个概念。在linux具体的实现就是pipe函数,可以说这个和shell中的管道,我认为就是一个东西,shell中的管道就是用pipe函数来实现的,文件的数据结构描述:管道通信,就是在2个进程间建立一个管道(其实具体是的实现,是一个虚拟的文件,这个文件只存在于内存中,所以是个虚拟的)一个进程掌握写入段,另一个掌握读出段。linux把设备看作文件,以前我们就说过标准输入是0,输出是1,错误输出是,具体的意思是:每个进程都有一个files

数组,files[0]就是键了(一般是,我们程序就不是了,我们改掉了),files[1]就是显示器,files[2]是错误输出(应该是null)。

文件是由inode(i节点)和block(数据块)组成,mv实际上只是改变了i节点,并没有改变数据块的位置

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

4.3从连接控制方面论述

Linux中设备以文件的形式进行管理

如上图所示既然设备也以文件的形式管理,那么目录中就包括磁盘文件跟设备文件的i-节点,设备文件的i-节点包含指向内核中设备驱动器的指针,磁盘文件的i-节点包含指向数据块的指针的列表。

自动添加模式例子:两个进程同时操作同一文件时,将每个进程的多个步骤变成原子操作,防止冲突的发生。终端连接的属性,需要通过终端驱动程序或stty驱动程序进行进程与设备间的控制。

5.总结与展望

经过两个星期的艰苦奋战,完成了linux结课论文,在这次的论文过程中我的主要任务是围绕mv指令,从管道,shell,文件目录连接控制等几个方面分别论述。通过这次论文让我充实了linux命令的使用,主要是mv指令的工作原理,他的实现代码,它的功能,格式以及参数的作用。在现在这个高速发展的社会,越来越多的人都在不断完善linux操作系统。尤其是对文件目录的操作,所以学习linux 指令对我们以后学习linux编程有很大作用。

致谢:

这次结课论文首先要感谢老师给了我这次实践的机会,同时也是我对所学linux知识的一个总结。这次论文是通过分组来完成的,在这次作业的完成期间,我体会到了团队意识的重要性,我的搭档的任务是搜集资料,而我的任务就是对这些资料进行整理,最后做成一份完整的设计报告。在这里,我要谢谢我的搭档,没有她,我一个人是完成不了这个庞大的结课论文的。同时在我遇到问题的时候其他的同学也给了我很大的帮助和支持谢谢你们!同时也非常的感谢老师给我们这个机会让我们更加了解linux的操作命令。从而为我们以后学习linux编程做了很大的贡献。

在完成这次结课论文的过程中,真的应该衷心感谢所有给予我帮助的同学还有我的搭档,如果没有他们的帮助我的也不会得到这样好的完善,也不能学到这么多的知识以及经验,真的非常感谢。

参考文献

(1)余敏.出版集团研究[M].北京:中国书籍出版社,2001 (2)昂温G.昂温PS.外国出版史[M].陈生铮,北京:中国书籍出版社 1988

(3)林慧琛《Red hat Linux服务器配置与应用》人民邮电出版社 2006.1

(4)岳浩《Linux操作系统教程》机械工业出版社 2005.4 (5)刘志国《练就Linux系统高手教程》延边出版社2006.1 (6)社大鹏《Red hat Linux因特网服务器》中国水利水电出版社 2004.2

(7)毛德操胡希明《Linux内核源代码情景分析》(8)全国文献工作标准化技术委员会第七分委员

会.GB/T5795—1986 中国标准书号[S].北京:中国标准出版社 1986

(9)《Linux 内核设计与实现(第2 版)》(Robert Love 著,机械工业出版社出版译著)

(10)骆耀祖,刘远东,骆珍仪.Linux网络服务器管理教程.北京电子工业出版社 2007.166-167

(11)李洋,汪虎松.Red Hat Linux 9系统与网络管理教程.北京:电子工业出版社 2006.248-263

(12)冉林仓.Red Hat Linux 9编程开发与网络管理.北京:电子工业出版社 2006.171-192

(13)李成大.操作系统—Linux篇.北京:人民邮电出版

社 2005

(14)柳青.Linux应用教程.北京:清华大学出版社 2008 (15)邱世华.Linux操作系统之奥秘.北京:电子工业出版社 2008

(16)辛希孟.信息技术与信息服务国际研讨会论文集:A集[C].北京:中国社会科学出版社,1994

相关主题
文本预览
相关文档 最新文档