1、目录及文件的增删改查
pwd:打印当前所在目录
cd:进入到某一个目录。
./ 表示当前目录
../ 表示进入上一级目录
cd ~或者cd进入家目录
mkdir:创建一个目录
-p 递归创建目录
-m 指定目录的权限
rmdir:删除一个目录,不能删除不为空的目录
-p 递归删除,即删除上一级目录
rm:删除一个目录或者文件
-f 强制删除
-i 用户删除文件或目录时,会进行提示
-r 删除目录,可以删除不为空的目录
-rf 删除文件和目录,切记不能跟‘/’
which:查找一个命令的绝对路径,只能查找path环境变量中出现的可执行文件
alias:设置指令别名 alias rm='rm -i'
绝对路径:路径由根目录‘/’开始写
相对路径:
当我们执行某个命令时,并没有写该命令的绝对路径,而是直接写该命令的名称,why? 因为设置了环境变量
echo $PATH :查看所有的环境变量
PATH="$PATH":/root :添加一个路径到环境变量
ls:查看某个文件或者目录
-a 查看全部的文件或者目录包括隐藏文件和. ..
-A 查看全部的文件或者目录不包括 ..
-l 查看文件的详细属性信息:大小、创建日期、属主、属组等
-d 后面跟目录,只显示此目录,不显示目录下的文件
cp:复制文件 格式:cp [选项][源文件][目的文件]
-d 如果复制软连接时,没有使用此选项,则将软连接的目标文件一起复制;否则只复制链接文件
-r 复制目录
-i 询问是否覆盖
mv:移动文件或者目录 格式mv[选项][源文件][目标文件]
-i 当目标文件存在时,询问是否覆盖
-几种情况:
(1)目标文件是目录且存在
(2)目标文件是目录且不存在
(3)目标文件是文件且存在
(4)目标文件是文件且不存在
cat:查看文件并显示在屏幕上
-n 显示行号
-A 显示特殊字符
tac:反向打印文件的内容到屏幕上
more:分屏显示文件的内容,空格键翻页,q退出,只可以下翻不能上翻
less:与more类似,但可以上翻和下翻
head:显示文件的前几行,默认10行
-n 设置显示前几行
tail:显示文件的后几行,默认10行
-n 设置显示后几行
2、文件的属性操作和查找
一个linux文件或者目录都会有一个所属组和所属主,属主即文件的拥有者,属组即文件的拥有者所属的组。作用:如果有一个文件file1,只能被user1和user2访问,那么可以为user1和user2创建一个组group1,那么user1和user2就可以都访问文件了
ls -l 或ll命令:查看文件的属性
(1)文件类型:d目录;-文件;l链接文件;b块设备文件;c串口设备文件;s套接字文件
(2)属主权限、属组权限、其他用户权限 r w x:读写执行
(3)连接所占用的节点
(4)属主是谁
(5)属组是谁
(6)创建或者修改时间
(7)文件名,如有.表示为隐藏文件
chgrp:更改所属组 chgrp[组名][文件名]
chown:更改所属主 chown[属主名][文件名]
-R 值用作目录,不仅更改目录的属主,级联操作,目录下的文件的属主也要更改
chmod:更改权限 chmod [-R][xyz][文件名];权限用数字代表如:rwr r-x --r :751 三个为一组
-R级联更改
chmod | u g o a | +(加入) -(减去) =(设定) | r w x | 档案或者目录 |
unmask:默认情况下,目录权限和文件权限分别为:776、664 。这个值由unmask确定
语法:unmask xyz
含义:表示需要减掉权限。如:unmask 001 rwx rwx rwx-(--x)=rw-rw-rw-
chattr:修改文件的额特殊属性 chattr[+-=][权限][文件或目录]
A:不能修改文件的atime值
S:将数据同步写入磁盘中
a:只能追加不能删除,只有root用户才能修改
c:读取时自动解压
i:文件不能被删除、重命名、设定连接、写入、增加数据
lsattr:显示文件或目录的特殊属性
-a 隐藏文件也列出
-R 递归列出
查找文件:
locate 与whereis :通过预先生成的一个文件列表库,去查找文件的路径
stat:查看文件的详细信息
文件的三个时间:
(1) access time,atime:在读取或者执行文件时更改
(2)modified time,mtime:在写入文件随文件的内容的更改而改变
(3)create time,ctime:在写入文件或者更改文件属性时(属组、属主、连接、权限、inode)改变
find :格式 find[路径][参数]
-atime +n :访问或执行大于n天的文件
-ctime +n:写入、更改属性大于n天的文件
-mtime +n:写入时间大于n天的文件呢
-name:直接查找该文件名的文件
-type:通过文件类型查找
3、文件系统
搞计算机的应该都知道windows的系统格式化硬盘时会指定格式,fat 或者 ntfs。而linux的文件系统格式为Ext2,或者Ext3 。早期的linux使用Ext2格式,目前的linux都使用了Ext3。 Ext2文件系统虽然是高效稳定的。但是,随着Linux系统在关键业务中的应用,Linux文件系统的弱点也渐渐显露出来了,因为Ext2文件系统是非日志文件系统。这在关键行业的应用是一个致命的弱点。Ext3文件系统是直接从Ext2文件系统发展而来,Ext3文件系统带有日志功能,可以跟踪记录文件系统的变化,并将变化内容写入日志,写操作首先是对日志记录文件进行操作,若整个写操作由于某种原因 (如系统掉电) 而中断,系统重启时,会根据日志记录来恢复中断前的写操作,而且这个过程费时极短。目前Ext3文件系统已经非常稳定可靠。它完全兼容Ext2文件系统。用户可以平滑地过渡到一个日志功能健全的文件系统中来。这实际上了也是ext3日志文件系统初始设计的初衷。
Linux文件系统在windows中是不能识别的,但是在linux系统中你可以挂载的windows的文件系统,linux目前支持MS-DOS,VFAT,FAT,BSD等格式。如果你使用的是Redhat或者CentOS,那么你不要妄图挂载NFS格式的文件到linux下,因为它不支持NFS。虽然有些版本的linux支持NFS,但不建议使用,因为目前的技术还不成熟。
Ext3文件系统为Redhat/CentOS默认使用的文件系统,除了Ext3文件系统外,有些linux发行版例如SuSE默认的文件系统为reiserFS ,Ext3 独特的优点就是易于转换,很容易在 Ext2 和 Ext3 之间相互转换,而具有良好的兼容性,其它优点 ReiserFS 都有,而且还比它做得更好。如高效的磁盘空间利用和独特的搜寻方式都是Ext3 所不具备的,速度上它也不能和 ReiserFS相媲美,在实际使用过程中,reiserFS 也更加安全高效,据说反删除功能也不错。
ReiserFS 的优势在于,它是基于 B*Tree 快速平衡树这种高效算法的文件系统,例如在处理小于 1k 的文件比 Ext3 快 10 倍。再一个就是 ReiserFS 空间浪费较少,它不会对一些小文件分配 inode,而是打包存放在同一个磁盘块 (簇) 中,Ext2/Ext3 是把它们单独存放在不同的簇上,如簇大小为 4k,那么 2 个 100 字节的文件会占用 2 个簇,ReiserFS 则只占用一个。当然 ReiserFS 也有缺点,就是每升级一个版本,都要将磁盘重新格式化一次。
【linux文件类型】
在前面的内容中简单介绍了普通文件(-),目录(d)等,在linux文件系统中,主要有以下几种类型的文件。
1)正规文件(regular file):就是一般类型的文件,当用ls –l 查看某个目录时,第一个属性为”-“的文件就是正规文件,或者叫普通文件。正规文件又可分成纯文字文件(ascii)和二进制文件(binary)。纯文本文件是可以通过cat, more, less等工具直接查看内容的,而二进制文件并不能。例如我们用的命令/bin/ls 这就是一个二进制文件。
2)目录(directory):这个很容易理解,就是目录,跟windows下的文件夹一个意思,只不过在linux中我们不叫文件夹,而是叫做目录。ls –l 查看第一个属性为”d”。
3)连接档(link):ls –l 查看第一个属性为 “l”,类似windows下的快捷方式。这种文件在linux中很常见,而且笔者在日常的系统运维工作中用的很多,所以你要特意留意一下这种类型的文件。在后续章节笔者会介绍。
4)设备档(device):与系统周边相关的一些档案,通常都集中在 /dev 这个目录之下!通常又分为两种:区块 (block) 设备档 :就是一些储存数据,以提供系统存取的接口设备,简单的说就是硬盘啦!例如你的一号硬盘的代码是 /dev/hda1 等等的档案啦!第一个属性为 “ b “;字符 (character) 设备档 :亦即是一些串行端口的接口设备,例如键盘、鼠标等等!第一个属性为 “ c “。
* linux 文件后缀名
对于后缀名这个概念,相信你不陌生吧。在linux系统中,文件的后缀名并没有具体意义,也就是说,你加或者不加,都无所谓。但是为了容易区分,linux爱好者们都习惯给文件加一个后缀名,这样当用户看到这个文件名时就会很快想到它到底是一个什么文件。例如1.sh, 2.tar.gz, my.cnf, test.zip等等,如果你首次接触这些文件,你也许会感到很晕,没有关系,随着学习的深入,你就会逐渐的了解这些文件了。笔者所列举的几个文件名中1.sh代表它是一个shell script ,2.tar.gz 代表它是一个压缩包,my.cnf 代表它是一个配置文件,test.zip 代表它是一个压缩文件。
另外需要你知道的是,早期Unix系统文件名最多允许14个字符,而新的Unix或者linux系统中,文件名最长可以到达 256 个字符!