免费注册 查看新帖 |

Chinaunix

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

Linux 文件操作 [复制链接]

论坛徽章:
1
丑牛
日期:2014-05-22 15:38:58
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-02-24 17:10 |只看该作者 |倒序浏览

1、复制移动
拷贝文件的时候在不加任何参数的情况下,被拷贝的文件权限将发生改变,例:
[test@localhost etc]$ ls -l yp.conf
-rw-r--r--    1 root     root          361  2 20 17:44 yp.conf
[test@localhost etc]$ cp yp.conf ~
[test@localhost etc]$ ls -l ~/yp.conf
-rw-r--r--    1 test     test          361  2 21 18:54 /home/test/yp.conf
可以明显看到,所有者等信息已经变更了,有时候权限也会跟着变掉.如果要保持所有着与权限不变,必须加a或p参数
[test@localhost test]$ cp -a /etc/php.ini php_2.ini
[test@localhost test]$ ls -l /etc/php.ini php_2.ini
-rw-r--r--    1 root     root        26941  5  6  2003 /etc/php.ini
-rw-r--r--    1 test     test        26941  5  6  2003 php_2.ini
加了参数a后将保持原来文件的创建日期等信息。
复制目录
cp -r ~/test /tmp (要复制整个目录以及目录下的文件,必须加参数r)
建立软链接
cp -s yp2.conf yp2_s.conf
建立硬链接
cp -l yp2.conf yp2_h.conf
-rw-r--r--    2 test     test          361  2 21 19:32 yp2.conf
-rw-r--r--    2 test     test          361  2 21 19:32 yp2_h.conf
lrwxrwxrwx    1 test     test      8  2 21 19:36 yp2_s.conf -> yp2.conf
备份中经常用到的命令
cp -u yp2.conf /tmp/yp2.conf  只有在源文件和目标文件有差异的时候才复制
2、检查文件内容
cat/tac: 由第一行开始显示/由最后一行开始显示
nl       : 显示的时候顺便输出行号
more  :分页显示
less   :分页显示,可向上翻页
head  :显示头几页
tail    : 显示尾几页
on     : 以二进制方式显示
3、umask(目前使用者在建立文件或目录时的属性预设值)
     当进程创建了新文件时,它指定新文件应该具有的权限。通常,所请求的模式是 0666(每个人可读和可写),目录为0777,它比我们希望的具有更多的权限。幸运的是,不管什么时候创建了新文件,Linux 将参考叫做“umask”的东西。系统用 umask 值来将初始指定的权限降低为更合理、更安全的权限。您可以通过在命令行中输入 umask 来查看您当前的 umask 设置:
Linux 系统上,umask 的缺省值一般为 0022(普通用户为0002)它允许其他人读您的新文件(如果他们可以得到它们),但是不能进行修改。
所以,新创建文件的权限为:0666-0002=0664,即为 -rw-rw-r-- ;目录为:0777-0002=0775,即为:drwxrwxr-x
查询umask:
[test@localhost test]$ umask
0002
[test@localhost test]$ umask -S
u=rwx,g=rwx,o=rx
如要重新设定umask,只要输入你想要修改成的数字就可以了,比如:[test@localhost test]$ umask 0022
4、文件权限修改  chattr
+i 参数后该文件将不能被改名、修改、连接等,即使root也无法删除!显示属性用 lsattr
[root@localhost test]# chattr +i yp.conf
[root@localhost test]# lsattr yp.conf
---i---------- yp.conf
[root@localhost test]# rm yp.conf
rm: remove write-protected regular file `yp.conf'? y
rm: cannot remove `yp.conf': Operation not permitted
[root@localhost test]#
5、set uid ,set gid,sticky bit的三个权限的说明整理
一个文件都有一个所有者, 表示该文件是谁创建的. 同时, 该文件还有一个组编号, 表示该文件所属的组, 一般为文件所有者所属的组. 如果是一个可执行文件, 那么在执行时, 一般该文件只拥有调用该文件的用户具有的权限. 而setuid, setgid 可以来改变这种设置.
setuid: 设置使文件在执行阶段具有文件所有者的权限. 典型的文件是 /usr/bin/passwd. 如果一般用户执行该文件, 则在执行过程中, 该文件可以获得root权限, 从而可以更改用户的密码.
setgid: 该权限只对目录有效. 目录被设置该位后, 任何用户在此目录下创建的文件都具有和该目录所属的组相同的组.
Sticky Bit:Sticky Bit只对目录有效,它对目录的作用是:“在具有Sbit的目录下,使用者如果在该目录下有w及x的权限,当该使用者在该目录下建立文件或目录时,只有该文件所有者或ROOT才有权利删除”。也就是说:当甲在A目录和目录下的文件里拥有w的权限,表示甲对该目录下任何人建立的目录或文件都可以进行删除或修改动作,不过如果将A目录加上了Sticky Bit权限后,则甲职能针对自己建立的文件或目录具有删除或更改动作。
6、SUID/SGID/SBIT 权限设置
     与chmod里增加权限时使用的数字一样,SUID/SGID/SBIT权限设置也是采用数字形式:
4 为 SUID
2 为 SGID
1 为 Sticky bit
假设要将一个文件属性改为[-rwsr-xr-x],由于s在使用者权限中,所以是SUID,因此在可以在原先的775之前加上一个4,也就是:chmod 4755 filename 来设定。
例:[yujun@localhost 1]$ chmod 7666 b
[yujun@localhost 1]$ ll
total 32
-rw-rw-r--    1 yujun    yujun           0  2月 22 16:17 a
-rwSrwSrwT    1 yujun    yujun           0  2月 22 16:41 b
一般来说S和T都是小写的,但是为什么这里是大写呢?因为s和t都是取代x这个参数的,但是我们刚才那个文件b里并没有x权限,所以这里S和T代表的就是空的。SUID表示在该文件执行的时候,具有该文件拥有者的权限,但是目前该文件都无法执行了,哪里来的权限给别人用?当然是空的啦!
7、文件查找
which,  whereis(寻找特定文件), locate, find;其中以find功能最为强大,但是搜索的时候花费时间也最长。

文件压缩、解压缩
1、压缩文件格式:
*.Z       compress 程序压缩格式(新的格式为gzip);
*.bz2       bzip2 程序压缩格式;
*.gz  gzip 程序压缩格式;
*.tar       tar 打包的资料,没有压缩过
*.tar.gz tar 打包的资料,并经过gzip的压缩
2、压缩命令
gzip [-dt] filename
-d为解压缩,-t为检验文件的一致性,-9为达到最佳的压缩率
zcat:显示由gzip压缩的压缩文件内容
bzip2 [-cdz] filename
同上
bzcat:显示由bzip2压缩的压缩文件内容
tar [-cxtzjvfpPN]
-c为创建压缩文件,-x为解开压缩文件,-t为察看压缩文件内容,-v为压缩过程中显示压缩过程,-f后跟要压缩成某个压缩文件名,-P为可以使用绝对路径,-z为压缩的文件同时具有gzip属性,即扩展名为:*.tar.gz,-p为保持原文件属性,-N  为比后面的日期(yyyy/mm/dd)还要新的才会被打包到新建的文件中。
[root@localhost test]# tar -cvf 0622.tar . (将当前目录下所有文件压缩)
[root@localhost test]# tar -tvf 0622.tar  (显示0622.tar文件夹里的文件)
[test@localhost test]$ tar -N '2006/02/22' -cvf php_1.tar php_1.ini
3、dd
dd是一个功能非常强大有用的命令,在man手册里的意思是转换或拷贝一个文件。
参数:
if   :就是 input file ;也可以是设备名字
of   :就是 output file ;也可以是设备名字
bs   :规划一个 block 的大小,如果没有具体设定就是 512 bytes
count:表示多少个bs
[test@localhost test]$ dd if=yp.conf of=yp.ocnf_bak
0+1 records in
0+1 records out
[test@localhost test]$ ll yp.conf yp.ocnf_bak
-rw-r--r--    1 test     test          361  2月 22 11:01 yp.conf
-rw-rw-r--    1 test     test          361  2月 23 13:50 yp.ocnf_bak
前面的0+1表示:因为我的文件大小为361 bytes,由于我没设定bs,所以默认的bytes是512一个单位,因此上面0+1表似乎0个完整的512bytes加一个未满512bytes 的block
dd命令也可以做为备份用。例如备份MBR,整个硬盘或整个分区等

VI 操作
VI 是一个功能非常强大,用处非常广泛的文本编辑命令。VI 分三中模式,分别是:编辑模式、一般模式、指令列命令模式
一般模式:输入vi filename后即进入一般模式,在这个模式下可以删除、复制、粘贴、查找、替换等操作。
常用命令:
/word: 向光标后寻找一个名称为word的字符串
?word:向光标前寻找一个名称为word的字符串
:n1,n2s/word1/word2/g:在第n1到n2行之间寻找word1字符串,并用word2取代
:1,$s/word1/word2/g:  从第一行到最后一行寻找word1字符串,并用word2取代
:1,$s/word1/word2/gc:  从第一行到最后一行寻找word1字符串,并用word2取代,并在取代前提示
:u 撤消编辑当前的操作
:dd 删除光标做在行
:ndd 删除光标所在的向下n行
:yy 复制光标所在行
:p 复制的内容在光标下一行贴上
编辑模式:按“i, I, o, O, a, A, r, R”进入编辑模式,按ESC键退出编辑模式
指令列命令模式:在一般模式中输入":"或"/"进入指令列命令模式,进行文件读取,储存等操作
常用命令:
:w :将资料保存在硬盘中
:w! :若文件为只读,则强制写入
:q  :离开编辑模式
:q! :不保存离开
:wq :保存离开(:wq!为强制保存后离开)
:e! :将文件还原到原始状态
:w filename :将文件另存为一个名字
:set nu :设置行号(:set nonu则为取消行号)
:! command :暂时离开vi到指令列模式下执行command的显示结果,例如: :! ls /home





本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/2937/showart_78173.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP