全部博文(26)
分类: LINUX
2014-02-08 20:58:12
摘自:[美]Harley Hahn:Unix & Linux大学教程
二十、文件操作
(1)创建文件:touch
touch的主要作用是在不改变文件的情况下改变文件的修改时间和访问时间。
touch [-acm] [-t time] file...
其中,time是时间和日期,格式为[[YY]YY]MMDDhhmm[.ss]。
默认情况下,touch同时将修改时间和访问时间设置当前时间和日期。
什么时候用touch命令呢?假设您准备分发一组文件,您都希望它们拥有相同的时间和日期。切换到存放这些文件的目录,然后输入touch *
如果只希望改变修改时间,用-m选项。只改变访问时间用-a选项,使用具体时间,用-t选项。
如果更新许多文件的修改时间或访问时间,而不希望touch创建任何新文件,则可以使用-c(nocreate)选项。
大多数时候,不用touch创建新文件。几乎所有新文件都可在需要时被创建。
(2)命名文件
命名文件最好用小写字母、数字、点、连字符、下划线,不要轻易用大写字母。
(3)复制文件
cp [-ip] file1 file2
cp [-ip] file... directory
-i选项告诉cp在替换已有文件之前进行询问,-p选项保持目标文件和源文件拥有相同的修改时间、访问时间和权限。
将目录复制到另一个目录中:
cp -r [-ip] directory1... directoty2
-r递归选项,复制整个子树。
(4)移动文件
mv [-if] file... directory
mv [-if] oldname newname
-i选项,替换前询问;-f选项,强制替换,忽略权限。
(5)删除文件
rm [-fir] file...
-f,强制;-i,交互;-r,递归。
(6)权限
权限与用户相关,包括读、写、执行权限。
查看用户标识id: group [userid]
Write=2,Read=4,Excute=1
改变权限:chmod mode file...
当Unix创建新文件时,将根据文件的类型为文件指定下述模式:
666:不可执行的普通文件;777:可执行的普通文件;777:目录
在这一初始模式,Unix再减去用户掩码(user mask)值。用户掩码是一种模式,由自己设置,表明希望限制的权限。设置用户掩码时,需使用umask命令。
umask [mode],其中mode指定希望限制的权限。
(7)清空文件内容:shred
shred程序的目的就是多次覆盖硬盘已有的数据,从而使世界上最昂贵的数据恢复设备也难以记录硬盘磁面的磁迹。语法为:
shred –fvuz [file...]
-v选项,在处理过程中显示处理消息。
默认情况下,shred将覆盖数据多次,并且使文件包含的是随机的数据。当然随机数据只是说明文件已经被“粉碎”。为了隐藏这一点,可以使用-z选项,以告诉shred在结束任务时将文件填充为0。进一步讲,如果希望在处理之后删除文件,则可以使用-u选项。最后,为了忽略受限制的文件权限,可以使用-f选项。
(8)链接的概念:stat, ls –i
当Unix创建文件时,Unix完成两件事情。第一,Unix在存储设备上保留一块空间用来存储数据。第二,Unix创建一个称为索引节点(index node)或i节点〔i-nod")的结构,来存放文件的基本信息。
在Linux系统上,可以通过使用stat命令,方便地查看某个特定文件的i节点的内容:
stat filename
文件系统将所有的i节点存放在一个大表中,这个表称为i节点表(inade table)。在i节点表中,每个i节点由所谓的索引(index number)或i节点号〔"i-number"〕表示。
为了显示文件的i节点号,可以使用带-i选项的ls命令。
文件名和i节点之间的连接称为链接。从概念上讲,链接将文件名和文件本身连接起来。
文件的唯一标识符是其i节点号,而不是它的名称。
(9)创建新链接:ln
ln file newname (为单个文件创建新链接)
其中file是一个已有普通文件的名称,newname是希望赋予连接的名称。
ln file... directory (为一个或多个普通文件创建新链接,并把链接放在指定目录)
(10)符号链接:ln –s
在创建不同文件系统中的目录或文件的链接时,需要创建符号链接(symbol link)。这样做时,需要使用带-s选项的ln命令。符号链接包含的不是文件的i节点号,而是原文件的路径名。
一般将常规的链接文件称为硬链接,而将符号链接称为软链接。
(11)查找与Unix命令相关的文件:whereis
whereis程序用来查看与特定Unix命令相关的文件:二进制(可执行)文件、源文件和文档文件。语法为:
whereis [-bms] command...
只显示可执行的路径名,可用-b选项;对于联机手册中的文件,可使用-m;对于源文件,可以-s选项。
(12)通过搜索数据库查看文件:locate
locate程序的任务是搜索一个特殊的数据库(该数据库中包含所有可公共访问的文件的路径名),查找所有包含特定模式的路径名。该数据库自动维护并定期更新。
locate [-bcirS] pattern...
-r选项,使用正则表达式;
-c选项,显示匹配文件的总数;
-i选项,忽略大小写;
-b选项,匹配路径名的最后一部分;
-S(statistics,统计)选项,显示系统上locate数据库的信息。
(13)通过搜索目录树查找文件:find
为了运行find,需要指定3件事件(按下述顺序):目录路径、测试和动作。
find程序的一般语法为:
find path... test... action...
一旦输入该命令,find就会遵循一个3个步骤的处理过程。
(1}路径:find所做的第一件事情就是查找每个路径,检查这些路径所表示的整个目录树,包括所有的子目录。
(2)测试:对于遇到的每个文件,find应用指定的测试条件。这里的目标就是创建一个满足指定标准的所有文件的列表。
(3)动作:一旦搜索完成,find就对列表中的每个文件执行指定的操作。
测试:
文件名:
-name pattern, 包含pattern的文件名;
-iname pattern, 包含pattern的文件名(不区分大小写);
文件特征:
-type [df],文件类型d=目录,f=普通文件;
-perm mode,文件权限为mode;
-user userid,属主为userid;
-group groupid,组为groupid;
-size [-+]n[cbkMG],大小为n[字符(字节)、块、千字节、兆字节、吉字节]
-empty,空文件(大小为0)
访问时间、修改时间:
-amin [-+]n,n分钟之前访问;
-anewer file,file文件之后访问;
-atime [-+]n,n天之前访问;
-cmin [-+]n,n分钟之前状态改变;
-cnewer file,file文件之后状态改变;
-ctime [-+]n,n天之前状态改变;
-mmin [-+]n,n分钟之前修改;
-mtime [-+]n,n天之前修改;
-newer file,file文件之后修改。
当以块大小、千字节、兆字节、吉字节测量文件的大小时,find假定的是磁盘空间。以字节为单位测试文件时,find假定的是文件的内容。
当需要时,可以通过在测试前面加一个!运算符对测试求反,但需引用。
动作
-print,将路径名写入到标准输出;
-fprint,同-print,将输出写入到file中;
-ls,显示长目录列表;
-fls file,同-ls,将输出写入到file中;
-delete,删除文件;
-exec command { } \; ,执行command,{}指示匹配的文件名;
-ok command { } \;,同-exec,但在运行command前进行确认。
(14)处理查找到的文件:xargs
-exec是为每个文件生成一条单独的命令,当生成大量的文件时,可以将find的输出管道传送给一个特殊的程序,这个程序叫xargs,语法为:
xargs [-prt] [-i string] [command [argument...]]
其中command是希望运行的命令的名称,string是占位符,argument是从标准输入读取的参数。
有时候希望在同一命令中使用参数多次发送给xargs,可以使用-i选项,这将允许使用{ }占位符,占位符将在命令运行之前被参数取代。例:
find . –type -f | xargs –i echo { } { }
-p选项,在运行命令前请求许可;
-t选项,查看生成的命令;
-r选项告诉xargs如果没有输入参数,则不运行命令。
xargs可以和任何程序一起使用,只要这些程序可以向xargs提供作为参数使用的字符串即可。