目录
1.特殊目录:
“.”代表此层目录
“..”代表上一层目录
“-”代表前一个工作目录
“~”代表“当前用户身份”所在的主文件夹
2.处理目录的命令:
“cd”:切换目录
“pwd”:显示当前目录
“mkdir”:新建一个新目录
“rmdir”:删除一个空目录
注:使用rmdir删除目录时,目录需要一层一层的删除,而且被删除的目录里不能存在其他目录或文件(空目录),如果想将所有目录下的东西都删除使用rm -r 目录名
3.执行文件路径变量:$PATH
当在执行一个命令时,系统会照PATH的设置去每个PATH定义文件的目录下查询文件名为“xx”的可执行命令,如果在PATH定义的目录中含有多个文件名为“xx”的可执行文件,那么先查询到的同名命令先被执行
使用 echo $PATH 可以查看有哪些目录被定义出来(在一般用户中不包括任何“sbin”的目录)
PATH这个变量的内容是由一堆目录所组成的,每个目录中间用冒号隔开(:),且每个目录有顺序之分
由此可以得出:
1.不同身份用户默认PATH不同,默认能够随意执行的命令也不同
2.PATH是可修改的,所以一般用户可以通过修改PATH来执行某些位于/sbin或/usr/sbin下的命令来查询
3.命令应放到正确的目录下,执行才会方便
4.本目录(.)最好不要放在PATH中
4.文件与目录管理:
1)查看文件与目录:ls
-a:列出全部文件,包括隐藏文件
-A:列出全部文件,及所有隐藏文件,但不包括"."和".."这两个目录
-d:仅列出目录本身,而不是列出目录内的文件数据
-f:直接列出结果,不进行排序
-F:根据文件,目录给予附加数据结构(*:代表可执行文件;/:代表目录;=:代表socket文件;|:代表FIFO文件)
-h:将文件容量以MB,GB等方便阅读的方式列出
-i:列出indoe号码
-l:列出长数据串,包含文件属性与权限
-n:列出UID与GID,不是用户名与组等数据
-r:将排序结果反向输出
-R:连同子目录一同列出,相当于将该目录下的所有文件都显示出来
-S:以文件容量大小排序,而非文件名
-t:依据时间排序
--color=never:不要依据文件特性给予颜色显示
--color=always:显示颜色
--color=auto:让系统自行依据设置来判断是否给予颜色
--full-time:以完整时间模式输出
--time={atime,ctime}:输出访问时间或改变权限属性时间(ctime)而非内容更改时间(modification time)
2)复制、删除与移动:cp,rm,mv
cp(复制文件或目录)
-a:相当于-pdr,是在保留原文件属性的基础上复制文件
-d:若文件为连接文件(link file)的属性,则复制连接文件属性而非文件本身
-f:为强制(force)的意思,若文件已经存在且无法打开,则删除后再尝试一次
-i:若目标文件(destination)已经存在,在覆盖时会询问操作的进行
-l:进行硬链接(hard link)的连接文件创建,并非复制文件本身
-p:连同文件属性一同复制,并非使用默认属性
-r:递归持续复制,用于目录的复制行为
-s:复制成符号链接文件(symbolic link),即快捷方式
-u:目标文件(destination)比源文件(source)旧才会更新源文件
注:
1.如果源文件有两个以上,则最后一个目的文件一定是目录
2.在默认条件中,cp的源文件与目的文件的权限是不同的,目的文件的所有者通常是命令操纵者本身,当有一些特殊权限的文件时需要加上-a或-p可以完整复制文件权限
3.复制目录时,需要加-r
4.在一般用户中,即使加上-a参数,无法复制完整权限,只能复制文件的相关权限及时间属性,与所有者、用户组有关是无法操作的
rm(移除文件或目录)
-f:忽略不存在的文件,不会出现警告
-i:互动模式,在删除前会询问用户是否操作
-r:递归删除
注:
为了防止文件被误删,许多发行版的操作系统已经默认加入-I
当文件中有“-”开头时,可以这样删除 “rm ./-xxx-”或“rm -- -xxx-”
mv(移动文件与目录,或更名)
-f:如果目标文件已存在,不会询问而直接覆盖
-i:若目标文件已存在,就会询问是否覆盖
-u:若文件已经存在,且源文件比较新,才会更新
注:可以使用-u来测试文件的新旧,看看是否移动
需要大批量来改文件名时,使用rename
3)文件内容查阅:
cat(concatenate):从第一行开始显示文件
-A:相当于-vET,show all,可以列出一些特殊字符
-b:仅对非空行列出行号
-E:将结尾的断行字符以$显示出来
-n:打印行号,但与-b不同,空行也会显示行号
-T:将tab按键显示出来
-v:列出一些看不出来的特殊字符
tac:从最后一行开始显示文件
同cat命令
nl:显示的时候,同时输出行号
-b:指定行号
1.-b a 不论是否有空行均列出行号
2.-b t 如果有空行,不会列出该行
-n:列出行号
-n ln:行号在最左边显示
-n rn:行号在最右边显示,且不加0
-n rz:同上,且加0
-w:行号字段占用的位数(加上行号,默认是6位)
more:一页一页的显示文件内容
less:与more类似,并且可以翻页
head:只看开头几行,可以加数字表示想要看的行数
-n:后接数字,表示显示多少行
当接负数时,代表列出前面的所有行数,但不包括后面所写的行数
tail:与head类似,只看结尾
-n:同上
当接正数时,代表该文件会从xx行后都列出
-f:表示持续监测后面的文件名,需要按下ctrl+c才会停止检测
od:以二进制方式读取文件
-t:后面接各种输出类型
a:使用默认字段输出
c:使用ASCLL字符输出
d [size]:利用十进制(decimal)输出数据,每个正数占用 size bytes
f [size]:利用浮点数(floating)输出数据,每个正数占用 size bytes
o [size]:利用八进制(octal)输出数据,每个正数占用 size bytes
x [size]:利用十六进制(hexadecimal)输出数据,每个正数占用 size bytes
4)修改文件或创建新文件:
时间参数:
modification time(mtime):当该文件的内容改变时,会更新这个时间(内容指文件内容,并非文件属性或权限)
status time (ctime):当该文件的状态(status)改变时,会更新该时间(文件的权限或属性)
access time(atime):当文件内容被取用,会更新该时间(使用文件内容查询时,会更新该时间)
注:在默认情况下,使用ls显示的是该文件的mtime
在某些情况下,由于BIOS的设置错误以及失去误差,会导致系统时间“跑到”未来,可以使用touch来改变时间
touch:
-a:仅修改访问时间,若果文件不存在,会创建一个新文件
-c:仅修改文件时间,文件不存在是不会创建文件
-d:后接修改时间,可以不用当前时间;也可使用--date="日期或时间"
-m:仅修改mtime
-t:后接修改时间,可不用当前时间,格式[YYMMDDhhmm]
注:当复制了一个文件时,并没有办法复制ctime这个属性
5.文件与目录默认权限和隐藏权限:
1)文件默认权限:umask
umask是指目前用户在新建文件或目录时的默认权限(umask是指默认值需要减掉的权限)
查看方式:
1.直接输入uamsk,可以看到数字形态的权限设置分数
2.后面加-S,会以符号类型显示出权限
文件一般默认权限为644,最大权限为666
目录一般默认权限为755,最大权限为777
默认情况下,root的umask会拿掉较多权限(默认022),而一般身份用户会保留用户组的写入(002)
2)文件隐藏属性:
chattr:设置文件的隐藏属性(注意:该命令只能在Ext2/Ext3的文件系统上生效)
参数:
+:增加一个特殊参数,其他原本存在的不变
-:减去一个特殊参数,同上
=:既有后面接的参数
A:访问一个文件时,它的atime不会改变(对较慢的计算机有用)
S:一般文件是异步写入磁盘,如果加上S后修改文件时,改动会同步写入磁盘
a:设置a之后,该文件只能增加数据,不能删除和修改数据(只有root可以设置这个属性)
c:会将文件自动压缩,读取时自动解压缩;在存储时,会先压缩在存储
d:当dump程序执行时,该属性会是此文件(目录)不会被dump备份
i:该属性可以是一个文件不能被删除、改名,设置连接也无法写入或添加数据(只有root可以设置这个属性)
s:但文件被删除时,它将完全从硬盘空间中删除
u:与s相反,如果文件被删除,数据内容还存在于硬盘中,可以找回此文件
lsattr:显示文件的隐藏属性
参数:
-a:显示隐藏文件属性
-d:如果接的是目录,仅列出目录本身属性而非目录内的文件名
-R:连同子目录的数据也一同列出
3)文件的特殊权限:SUID,SGID,SBIT
在文件或目录中users、group以及others的可执行权限没有设置(x),所以S,T代表权限为空
Set UID功能与限制:
出现在文件所有者的x权限上,当设置了SUID的程序文件,在用户执行该程序时,用户的权限是该程序文件的属主的权限。(借权执行自己用户身份做不了的)让一个没有相应权限的用户运行程序时,可以访问他没有权限访问的资源
s(小写):表示SUID和所有者权限中可执行位被设置
S(大写):表示SUID被设置,但所有者权限中可执行位没有被设置
1.SUID仅对二进制文件有效
2.执行者对该文件需要有可执行权限
3.本权限仅对执行该程序的过程中(run-time)有效
4.执行者具有该程序所有者(owner)的权限
注:SUID仅用在二进制文件上,不能用在shell script;同时SUID对目录也无效
Set GID功能与限制:
出现在用户组的X权限上,功能与SUID类似,但SGID可以对目录或文件设置 (一般情况下,出于对系统安全的考虑,尽量使用SGID代替SUID);
s(小写):表示SUID和同组用户权限中可执行位被设置
S(大写):表示SUID被设置,但同组用户权限中可执行位没有被设置
文件:
1.对二进制文件有效
2.程序执行着对该程序要有可执行权限
3.执行者在执行该程序中会获得该程序用户组的支持
目录:
1.具有r与x权限,该用户能够进入目录
2.用户在此目录下的有效用户组,将会变成该目录的用户组
3.用户在此目录下,具有写权限(可以新建文件),则用户创建的新文件的用户组与此目录的用户组相同
Sticky Bit功能与限制:
SBIT只针对目录有效,对文件没有效果
t(小写):表示SBIT和其他人权限中可执行为被设置
T(大写):表示SBIT被设置,但其他人权限中没有设置可执行位
1.用户在此目录下具有w,x权限
2.在用户在该目录下创建文件或目录时,仅有自己和root才有权利删除
4为SUID = u+s
2为SGID = g+s
1为SBIT = o+t
6.查看文件类型:file
命令与文件名的查询:
1)脚本文件名的查询:
which(寻找“执行文件”)
2)文件名查找:
whereis(寻找特定文件)
-b:只找二进制文件
-m:只找说明文件manual路径下的文件
-s:只找source源文件
-u:查找上述选项中的其他特殊文件
locate(查询数据库/var/lib/mlocate/mlocate.mdb来搜索文件)
-i:忽略大小写差异
-r:后接正则表达式的显示方式
find
1.与时间有关的参数
-atime n:在n天之内改过的文件
-ctime +n:列出n天之前(不包含n天本身)被改过的文件名
-mtime -n:列出n天之前(包含n天本身)被改过的文件名
-newer file:file为一个已存在的文件,列出比file还新的文件名
2.与用户用户组有关的参数
-uid n:n表示用户账号的ID信息
-gid n:n表示用户组名的ID信息
-user name:name为用户账号名
-group name:name表示用户组名
-nouser:寻找文件的所有者不存在于/etc/passwd的人
-nogroup:寻找文件的所有用户组不存在于/etc/group中的文件
3.与权限名称有关的参数
-name filename:查找文件名为filename文件
-size [+ -] SIZE:查找比SIZE还要大(+)或小(-)的文件,SIZE规格:c表示byte,k表示kbyte
-type TYPE:查找文件类型为TYPE,TYPE包括:一般正规文件(f),设备文件(b,c),目录(d),连接文件(l),socket(s),FIFO(p)
-perm mode:刚好等于mode的文件,mode为chmod的属性值(=)
-perm -mode:必须包括mode的文件(>=)
-perm +mode:包含任一mode的权限(<=)
4.其他可进行的操作
-exec command:command作为命令,后接其他命令来处理查找到的结果
-print:将结果打印到屏幕(此操作默认)
案例:find / -user jay -exec cp -a {} /test/ \;
”{}“代表由find找到的内容
”-exec“到”\;“是关键字,代表find额外命令的开始(-exec)到结束(\;)
”;“表示转义
小结:
1.能让用户进入目录成为可工作目录的基本权限
需要有用户对此文件或目录的执行权限(x);如果想查阅目录,还需要加上r
2.用户在某个目录中读取一个文件的基本权限
用户需要对此目录有x;用户需要对文件有r
3.用户可以修改文件的基本权限
用户在该文件所在的目录至少有x;用户对该文件要有r,w
4.用户可以创建一个文件的基本权限
用户在该目录下有w,x(重点在w)
5.用户进入目录并执行某个命令的基本权限
用户在该目录至少有x;用户在该文件至少有x