Chinaunix首页 | 论坛 | 博客
  • 博客访问: 79006
  • 博文数量: 25
  • 博客积分: 1280
  • 博客等级: 中尉
  • 技术积分: 366
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-09 17:36
文章分类

全部博文(25)

文章存档

2010年(1)

2009年(5)

2008年(19)

我的朋友

分类:

2008-09-09 17:43:45

学Linux好一段时间了,现把所学的知识来个大总结,和大家一起成长.呵呵
指令的输入格式:
#command [-option] parameter1 parameter2
说明:
1.指令与参数区分字母大小写;
2.中括号[]实际并不存在,在进行参数设定时,通常为"-"号,若为完整参数名称,则输入"--"符号;
3.指令大长的时候,可使用"\"符号使指令连续到下一行.
 
文件的属性与权限
#ls -l
-rwxrwxrwx    1       root       root       293      Oct 19 21:24      test
文件属性     连接数  文件拥有者  文件所属群组  文件容量  文件最后被修改的时间   文件名
"d"为目录,"-"为文件,"l"为链接文件;"b"为设备文件中可供存储的接口设备;"c"为设备文件中的串行端口设备,如键盘等.
 
 
常用的文件与目录管理命令
在此之前,先要了解相对路径与绝对路径的概念
绝对路径:路径的写法一定是从根目录"/"写起
相对路径:路径的写法不是从根目录"/"写起,而是从当前目录.
"."代表当前目录
".."代表上层目录
"~"代表自己的根目录
"~user"代表user这个人的根目录
 
cd      变换当前目录,change directory的缩写
语法:   #cd [相对路径或绝对路径]
 
pwd     显示当前目录,print working directory的缩写
语法:   #pwd
       #pwd -L      <==显示逻辑的当前目录
       #pwd -P      <==显示物理的当前目录
 
mkdiir  创建目录  make directory的缩写
语法:   #mkdir [目录名称]
       #mkdir [-pv][-m mode] directory_name ...
       -m mode  <==指定新建目录的权限.如-m 0640
       -p 当创建多层目录而目录不存在时,也可以在它下面建立目录.如mkdir -p /root/test/test1,可能/root下没有test这个目录,如果不使用-p创建的话,就会出错,此时若有-p参数后不但会建立test1目录,且test也会一起建立.
       -v  当建立目录后列表这些目录的信息.
 
 
rmdir   删除目录  Remove directory的缩写
语法:   #rmdir [-pv] directory_name ...
       -p  如果有一个/y/x的目录,当使用该选项后,如rmdir -p /y/x,那么y与x目录全部被删除,如果y目录中还存在其它的文件或目录,则操作失败.
       -v  删除目录后显示被删除目录的信息
[root@mail root]# rmdir -pv y/x/z
rmdir: removing directory, y/x/z
rmdir: removing directory, y/x
rmdir: removing directory, y
 
ls     显示文件名称,属性等
语法:   #ls [-ailS]
说明:
-a: 列出所有文件(连同隐藏文档)
-i: 打印inode的值
-l: 详细列出(连同文件大小,属性数据等)
-S: 以文件大小排序
 
 
cp   复制文件或目录
语法: #cp [-drsu][source_file][destination_file]
说明:
-d  进行复制时,如果是复制链接文件,若不加任何参数,则默认情况下会将链接到的源文件复制到目的地,若加-d,则链接文件可原封不动地将链接这个快捷方式复制到目的地
-r  可以进行目录的复制
-s  做成链接文件,与ln -s指令功能相同
-u,--update  如果源文件较新,或者没有目标文件,才会进行复制动作,可用于备份操作.
 
 
rm   删除文件或目录
语法:  #rm [-fir] file_name
-i:  提供用户确认(默认值)
-f:  :force,强制删除
-r:  循环删除,直到没有东西为止
 
 
mv   移动文件或目录
语法: #mv [-u][source_file][destinatioin_file]
-u 为update的缩写,当源文件比目标文件还新时才会动作.
可同时移动多个文件,如 #mv file1 file2 /tmp
 
 
常用的查看文件内容指令
cat   由第一行开始显示文件内容.concatenate的缩写
语法:  #cat [-n] file_name
-n   显示时,连同行号一起输出列到屏幕上
 
 
tac  同最后一行开始显示,tac是cat的倒写
语法: #tac file_name
 
 
more 一页一页地显示文件内容
语法: #more file_name
 
 
less 与more类似,但其优点是可以往前翻页
语法: #less file_name
 
 
head  只查看文件的头几行
语法:  #head [-n number] file_name
-n number  显示number行,默认情况下是显示10行.
 
 
tail  只查看文件的后几行
语法:  #tail [-n number] file_name
-n number  显示number行,默认情况下显示后10行.
 
例:显示某文件夹的第11-20行
#head -n 20 file_name | tail -n 10
 
 
nl   显示时同时输出行号,与cat -n功能类似
语法:  #nl file_name
 
 
od   以二进制方式读取文件内容
语法:  #od file_name
 
 
 
链接文件的内容
先了解一下硬盘的整体结构
硬盘中包含多个硬盘盘片,硬盘盘片为圆形,每一个硬盘盘片上都有一个可以读写的磁头(Head),将这个磁头固定,使硬盘盘片旋转一周,所走轨迹就是磁道(Track).硬盘内所有盘片的相同磁道号的集合称为磁柱(Cylinder).每一磁道被划分成许多区域,每个区域叫一个扇区(sector).扇区是硬盘的最小存储物理量,一个扇区的存储容量大约是512字节(约0.5K).
硬盘分区:在进行硬盘分割的最小单位是磁柱,分割完之后自然就是格式化.在Linux中进行格式化必须考虑Block与inode,Block是磁盘可以记录的最小单位,是由数个扇区组成,所以大小通常为n*512bytes.
接下来说说什么是inode,Block是记录文件内容数据的区域,inode则是记录该文件的属性及其放置在哪个Block之内的信息.所以,每个文件都会占用一个inode,当Linux系统要查找某个文件时,它会先搜寻inode table找到这个文件的属性及数据放置地点,然后再查找数据存放的Block进而将数据读取出.inode数量在一开始就己被设定好,其设定方式通常是"硬盘大小/一个容量",这个容量比Block大一些较佳,一个inode的大小为128bytes.由此可知,一个分区被格式化为一个文件系统之后,基本上它一定会有inode talbe和数据区域两大块,一个用来记录文件的属性信息与该文件放置的Block块,一个用来记录文件的内容.
链接分为硬链接(hard link)与符号链接(symbolic link)
硬链接:硬链接就是再建立一个inode链接到文件放置的Block块,也就是说,在进行硬链接时,实际上你的文件内容不会改变,只是在查询时,利用原来的inode与后来添加的inode均可以指定到该文件放置的地点.因此,读取两个inode的结果都是存取同一个文件的内容,因为inode会链接到block块,而"目录"只消耗inode,故硬链接就不能链接目录.
硬链接有两大限制
1.不能跨文件系统,因为不同的文件系统有不同的inode table.
2.不能链接目录
 
符号链接:符号链接就是再建立一个独立文件,而这个文件会让数据读取操作指向它链接的那个文件.
 
ln
语法:  #ln [-s][source_file][destination_file]
      -s  提供符号链接,如果直接用ln而不加任何参数,就属于硬链接.
 
 
 
常用改变文件与目录权限的命令
每个文件都有"文件拥有者的权限,owner","群组的权限,group","其它非本群组的用户的权限,other"三组权限,每组权限都分为"可读,可写,可执行",例如一文件的文件属性为"-rwxrwxrwx"则表示所有人都可以读写这个文件,而"-rw-rw-r--"则表示文件的拥有者和文件所属的群用户可以读写该文件,其它用户只能读该文件,所有用户均水能执行这个文件(如果这个文件是程序文件的话)."r"代表可读,"w"代表可写,"x"代表可执行.
 
chown     改变文件的拥有者
语法:  #chown [-R] user:group [folder&file]
      #chown [-R] user [folder&file]
      -R  循环地将该目录下的所有文件都改成user和group的名称.
 
chgrp     改变文件的所属群组
语法:   #chgrp group folder&file
 
 
chmod    改变文件的可读,可写,可执行等属性
语法:   #chmod [-R][parameter][folder&file]
       -R  循环地将该目录的文件都改变.
      有两种类型,数字类型与符号类型.如rwxrwxrwx有数字类型表示为777,要设置一个文件的权限为rw-rw-r--,用符号类型表示为"#chmod ug=rw,o=r file".
 
 
umask    改变预定的建立文件或目录时的属性
语法:   #umask 002
       建立文件时: 666-002=664
       建立目录时: 777-002=775
       通常一个文件建立时是没有可执行属性的.umask可以在/etc/bashrc中修改.
 
 
chattr    改变文件的特殊属性
语法:  #chattr [+-=][ASacdistu][folder&file]
+-=:  分别为"+"(增加),"-"(减少),"="(设定)属性
A:    设定属性A后,这个文件(或目录)的存取时间atime(access)将不可被修改,可避免诸如手提电脑容易产生磁盘I/O错误的情况.
S:    此功能有点类似sync,是将数据同步写入磁盘中,可以有效避免数据流失.
a:    设定后,此文件将只能增加数据而不能删除,只有root才能设定这个属性.
c:    设定这个属性后,将会自动将此文件压缩,在读取时自动解压缩,但是在存储的时候,会先进行压缩再存储(对于大文件很有用)
d:    当dump(备份)程序被执行,设定d属性将可使该文件(或目录)具有dump功效.
i:    此参数可以让一个文件"不能被删除,更名,设定链接也无法写入或新增数据",对于系统安全性有相当大的助益.
j:    当使用ext3文件系统格式时,设定j属性将使文件在写入时先记录在日志中,但当filesystem设定参数为date=journalled时,由于己经设定了日志,所以这个属性无效.
s:    当设定了s属性时,此文件会被完全移出这个硬盘空间.
u:    与s相反,当使用u配置文件时,数据内容其实还存在磁盘中,可以用来取消删除.
 
 
lsattr    显示文件的特殊属性
语法:   #lsattr [-aR]
        -a  将隐藏文件的属性也显示出来
        -R  连同子目录的数据一并显示出来
 
 
 
常用搜索文件或目录的命令
which     查看可执行文件的位置
语法:     #which [file_name]
    which的基本功能是通过PATH环境变量到该路径内寻找可执行文件,所以基本功能在于寻找可执行文件.
 
 
whereis   查看文件的位置
语法:    #whereis [-bmsu] [file_name]
-b    只找二进制文件
-m    只找在说明文件manual路径下的文件
-s    只找source源文件
-u    没有说明文档的文件.
Liunx系统会将系统内所有文件都记录在一个数据库文件中,当使用whereis或locate时,都会以此数据库的内容为准,因此,有时会发现,执行这两个文件时,会找到己被删除的文件,这是因为它是一个数据库文件.基本上,Linux每天会针对Linux主机执行updatedb(针对该数据库文件)动作,可以直接用/usr/bin/updatedb来更新数据库文件.
 
 
locate    配合数据库查看文件位置
语法:    #locate [file_name]
在/etc/updatedb.conf内设定要更新到slocate数据库中的数据,默认每周执行一次.
 
 
find    实际搜索硬盘查询文件名称
语法:   #find [path][parameter]
参数说明
1.时间
-atime n:   将n*24小时内被存取过的文件列出
-ctime n:   将n*24小时内被改变,新增的文件或目录列出来
-mtime n:   将n*24小时内被修改过的文件列出来
-newer file:   将比file还要新的文件列出来
2.使用名称
-gid n:      寻找群组ID为n的文件
-group name: 寻找群组名称为name的文件
-uid n:      寻找拥有者ID为n的文件
-user name:  寻找拥有者名称为name的文件
-name file:  寻找文件名为file的文件名称(也可以使用通配符)
-type type:  寻找文件属性为type的文件,type包含了b,c,d,p,l,s.
 
 
 
SetUID,SetGID,Sticky bit与file指令
Linux可以识别的账号是一堆数字,由于每个文件中同时含有"用户"与"用户群组"属性,因此,就有所谓的UID与GID.UID代表用户代号,GID代表群组代号.
查看一个文件的属性,发现它是"-r-s--x--x",这就是所谓的SUID,如果它是"-r-xr-sr-x",那么就是所谓的SGID了.当一个文件具有SUID时,同时others群组具有可执行权限,那么当others群组执行该程序时,other将拥有该文件的owner权限.
设置一个文件的SUID: #chmod 4777 file_name 或  #chmod u+s file_name
设置一个文件的SGID: #chmod g+s file_name 或  #chmod 3777 file_name
如果一个没有x属性的文件被设置了SUID或GUID时,s将会被S代替."-rwSrw-rw-".
 
 
Sticky bit
Sticky bit属性(t),具有sticky bit属性的目录,基下的文件或目录只有文件拥有者及root才有权删除.
#chmod +t folder_name    "drwxrwxrwt"
 
 
file   查看文件的类型
语法:   #file [file_name]
也可以查看文件是否被加入SUID等信息.
阅读(487) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:Linux命令大总结(二)

给主人留下些什么吧!~~