Unix & Linux笔记(16)

来源:互联网 发布:淘宝怎么提高买家信誉 编辑:程序博客网 时间:2024/05/16 17:53

第25章 文件操作


25.1 创建文件:touch

改变文件的修改时间和访问时间

touch [ -acm ] [ -t time ] file...        -a access time        -c no create        -m modification time    touch -m -t 201312310930 file

25.2 命名文件

使用拓展名非常方便,因为允许使用通配符引用一组文件。


25.3 复制文件:cp

cp [ -ip ] file1 file2        -i interactive        -p preserve the same

25.4 将文件复制到不同的目录中:cp

cp [ -ip ] file... directorycp data1 data2 data3 backupscp data[123] backupscp data* backups

25.5 将目录复制到另一个目录中:cp -r

cp -r [ -ip ] directory1... directory2-r recursive(注意ls中递归为ls -Rcp -r essay backups

复制目录中所有文件 cp documents/* backups
复制目录本身及其中包含的所有文件目录 cp -r documents backups


25.6 移动文件:mv

mv [ -if ] file... directory-i interactive-f force

25.7 重命名文件或目录:mv

mv [ -if ] oldname newname使用mv可以同时移动文件和重命名 mv incomplete archive/compete

25.8 删除文件:rm

rm [ -fir ] file...rm *ls data*

25.9 如何防止误删文件:rm –if


25.10 删除整个目录树:rm -r

危险!
在使用之前一定要先用pwdls,在许多系统上-f选项覆盖率-i选项。


25.11 被删除文件恢复的可能性


25.12 文件权限

文件权限 file permission简称权限(permission)
读权限 read permission
写权限 write permission
执行权限 execute permission

普通文件

读 读取文件 写入文件 执行 执行文件(程序或脚本)

目录文件

读 读取目录中的文件名 - 执行 搜索目录

25.13 setuid

setuid
一个特殊的权限设置,允许其他用户标识访问文件,就好像是文件的属主(创建者)一样。(set userid
例:passwd
setuid只用来允许普通用户标识为了执行某个具体任务而以临时特权来运行程序。

25.14 Unix维护文件权限的方式:idgroups

id
groups=500(staff)(主组),502(admin)(辅组)


25.15 显示文件权限:ls –

显示目录权限时,在设置-l的同时还要设置-d选项。

-rwxrwx--- 1 g staff 4 23:00 a.out

每行的第一个字符是文件类型指示符。

r
读权限
w
写权限
x
: 执行权限-

没有权限

Ower Groups Other File

rw- --- - - - a.out

25.16 文件模式

文件模式 file mode简称模式 (600)
属主的权限 组的权限 其他用户标识的权限
6 0 0

4 读 2 1 执行 0 没有权限

25.17 改变用户权限

chmod mode file...chmod 644 essay

25.18 Unix为新文件指定权限的方式:umask

用户掩码 user mask

umask [ mode ] umask 002

显示用户掩码的当前值 umask


25.19 清空文件内容:shred

shred -fuzv [ file... ] 多层覆盖硬盘上已有的数据    -f force    -u 覆盖后截断并删除文件    -z 最后一次使用0 进行覆盖以隐藏覆盖动作    -v verbose

25.20 链接的概念:statls -i

i节点(i-node
索引节点(index node)

i节点包含是用文件系统所需的全部文件系统信息。

stat
查看某个文件地i节点内容
stat filename

文件系统的i节点表(i node table)
i节点号(i - number)
索引号(index number)
ls -i 显示文件的i节点号

目录只包含文件的名称及文件的i节点号。
存放文件的过程:
1.准备存储空间——>2.查找空闲i节点,填充信息——>3.在目录中存放条目

文件名和i节点之间的连接称为链接,链接将文件名与文件连接起来,这就是为什么i节点不包含文件名的原因。


25.21 多重链接

文件的唯一标识符是其i节点号,而不是它的名称。
链接的基本思想是使同一个文件在不同的环境下可以拥有不同的含义。
Unix平等地对待所有链接。
Unix中,文件不由他们的名称或位置控制,而只受所有权和权限控制。


25.22 创建新链接:ln

为单个文件创建新链接

ln file newname

为一个或多个普通文件创建新链接

ln file... direcrtory

25.23 基本文件命令的工作方式

分析文件命令是要从文件名和链接两方面进行理解。
1. 创建文件,创建目录[ mkdir ]
2. 复制文件[ cp ]
复制已有文件:Unix用原内容替换目标文件内容,但不修改其i节点。
复制不存在的文件:Unix首先用新文件自己的i节点创建一个全新的文件。然后将旧文件的内容复制到新文件中。复制后将会有两个相同的文件,各自对应自己的i节点。
3. 重命名或移动文件[ mv ]
改变文件名或移动目录条目,但保持相同的i节点号。
4. 创建链接[ ln ]
5. 移除链接[ rmrmdir ]


25.24 符号链接:ln –s

相当于windows的快捷方式

两个问题:1.不能为目录创建链接;2.不能为不同文件系统的文件创建链接。
符号链接 symbol link/symlink
符号链接包含的不是文件的i节点号,而是原文件的路径名。

常规链接——硬链接(hard link)
符号链接——软链接(soft link)


25.25 目录使用符号链接

mkdir extraln –s extra backupsls -ld extra backups

默认cd -L


25.26 查找与Unix命令相关的文件:whereis

whereis [ -bms ] command…    -b binary    -m manual    -s source

25.27 通过搜索数据库查看文件:locate

locate [ -bcirS ] pattern...其中pattern是在路径名中查找的模式。    -b basename 例:locate -b temp    -c count 例:locate -cr '.jpg$'    -i ignorecase 例:locate -i x11    -r 使用正则表达式 例:locate -r '^/user*x114$'    -S statistics

25.28 通过搜索目录树查找文件:find

find path... test... action...

例:find /home/g -name important -print


25.29 find命令:路径

find /usr/binfind /find .find ~

既可以搜索绝对路径名,也可以搜索相对路径名。

find /bin /sbin /usr/bin

可以搜索多个目录。


25.30 find命令:测试

文件名

-name patter-iname ignorecase文件特征-type [ fdbcpl ] f——regular file-perm mode-usr usrid-group groupid-size [-/+] n [ cbkMG ]-empty访问时间、修改时间-amin [-/+] n access time-anewer file file 文件之后访问-atime [-/+] n n天之前访问-cmin [-/+] n n分钟之前改变状态-cnewer file file 文件之后改变状态-ctime [-/+] n n天之前改变状态-mmin [-/+] n n分钟之前修改-mtime [-/+] n n天之前修改-newer file file文件之后修改

如果使用通配符,则必须将它们引用起来,防止被shell解释。
例:

find . -type f -name '*.c' -printfind . -type f -name 'data[123]' -print

25.31 find命令:使用!运算符对测试求反

使用条件:
1.在!号两边各留一个空格。
2.必须引用!,防止被shell解释。

find ~ -type f /! -name '*.jpg' -printfind ~ -type f '!' -name '*.jpg' -print

25.32 find命令:处理文件权限错误信息

将标准错误定位到位桶

find / type d -name bin -print 2> /dev/null

25.33 find命令:动作

-print-fprint file 将输出写入到file中-ls 显示长目录列表-fls file 将输出写入到file中-delete 删除文件-exec command { } \; 执行command,{}指示匹配的文件名-ok 同-exec。但是在运行command之前确认对于GNU版本的用户来说,如果不指定路径,则假定工作目录是默认路径,如果不指定动作,则假定-print是默认动作。-ls和-delete的动作的使用类似于将搜索的输出分别发送给ls和rm命令。但是find命令更具有一般性:可以使用-exec动作将搜索输出发送给任何希望的程序。command包含了选项和参数。{ }表示find查找到的路径名,为了表示命令的末尾,必须以;结束命令。
find ~ -type d -exec chmod 700 { } \;

25.34 处理查找到的文件:xargs

xargs [ -prt ] [ -istring ] [ command [ argument…] ]string是占位符find . -type f | xargs echofind . –type f | xargs -i echo { } { }echo对其参数进行求值,并写入到标准输出中。允许使用{ }作为占位符,占位符在命令运行之前被参数取代。    -i insert    -p prompt
find . –type f | xargs -i mv { } ~/backups/{ }.old

一定确保不要将-i选项和其他选项一起使用,xargs将认为-i之后的是占位符。
默认xargs运行指定的命令至少一次,-r选项告诉xargs如果没有输入参数,则不运行命令。

0 0