文件和目录管理相关知识总结:
1、文件的属性和权限:
1】文件的属性包括:文件的类型,文件的权限、文件名、文件大小、文件的属主属组、文件最近一次被修改的时间等;
2】文件的权限,分为属主、属组和其他用户的权限,他们对文件可能具有r(read)、w(write)、x(excute)等权限;
“r”:代表可以读该文件的内容;
“w”:代表可以编辑、修改和删除该文件的内容;
“x”:代表可以执行该文件,但是否能够执行成功是不确定的,如果该文件不是一个可执行文件,即使赋予其x权限,也不能被执行。
例如:-rwxr-xr-- 1 root root 0 Mar 25 00:54 lq
“-”:文件的类型,lq为普通文件;
“rwx”:属主具有读、写、执行的权限;
“r-x”:属组具有读和执行的权限;
“r--”:其他用户对该文件具有读的权限;
“1”:代表文件lq被硬链接的次数;一般来说文件的硬链接为1,目录的硬链接为2。
“root”:代表文件lq的属主;
“root”:代表文件lq的属组;
“0”:代表文件的大小,单位为字节;当是目录时,只表示目录本身的大小,不包含目录中文件的大小。
“Mar 25 00:54”代表文件最近一次被修改的时间;
“lq”:代表文件名;
3】改变文件属性和权限的命令:
改变文件的属组:chgrp 组名 文件名
chown :组名 文件名
改变文件的属主:chown 属主 文件名
改变文件的权限:使用chmod命令,具体格式如下:
chmod u+x g-r o+w 1.sh:代表对1.sh文件的属主增加执行权限,属组减少读权限,其他用户增加写权限。
<+:代表增加某权限;-:代表去掉某权限;u:代表对属主的权限做修改;g:代表对属组的权限做修改;o:代表对其他用户的权限做修改>
2、目录的权限:
目录的权限也分为三种:r w x;
r:代表可读,即可以用命令ls 来查看该目录下的文件及目录;
w:代表可写,即可以对该目录下的文件增加、删除、重命名等操作;
x:代表可以cd到该目录下面,把该目录作为工作目录使用。
t:粘滞位,如果路径设置有粘滞位,则该路径下的文件只有属主和root用户具有重命名和删除的功能,其他用户都不能具有这两项功能。
3、文件名后缀代表的含义:
文件名后缀并不代表着该文件属于什么类型的文件,这是linux与windows的不同之处,它只是向我们暗示了该文件可能的用途及信息。
4、linux中不同的文件类型:
“d”:代表目录文件;
“-”:代表普通文件;
“l”:代表软链接文件(或者符号链接文件),是一种特殊文件;
“s”:代表套接字文件;
“b”:代表块设备文件,它的访问是按照某种特定大小的数据块随机进行的。例如硬盘、软盘等;它是一种特殊文件。
“c”:代表字符设备文件,字符设备通常指的是线性设备,在数据存取的时候是有先后顺序的、串行的设备。例如键盘、鼠标等;它是一种特殊文件。
“p”:代表管道文件,它主要用在解决多个程序同时访问同一个文件所造成的错误问题;
5、文件的命名:
1】单一文件名不超过255个字符;含路径和目录的文件名的文件名不超过4096个字符;
2】不使用linux中有特殊含义的字符,例如:(、)、{、}、|、!、?、/、.、<、>、&、$、[、]、-、+等。
6、绝对路径和相对路径:
绝对路径:以“/”开头的路径都是绝对路径;
相对路径:相对于当前路径的目标路径表示方式;
7、touch:专门用于改变文件的时间标签。
Modify:修改文件的内容;Change:改变文件的属性;
touch -a 文件名:只改变最近一次的访问时间;
touch -m 文件名:只改变最近一次的修改时间;
touch -a|m -t [[CC]YY]MMDDhhmm[.ss] 文件名:指定文件的某一个时间戳;
touch 文件名:创建一个大小为零的空白文件;
touch -a|m -c 文件名:当在改变一个文件的某个时间戳时,如果某文件不存在,则不创建空白文件。
8、几个特殊的目录:
. 代表此层目录;
..代表当前目录的父目录;
<特别注意:如果我们当前处在根目录下面,则.与..代表的是相同的意思,都是当前目录。>
- 代表切换目录之前的目录;
~ 代表当前用户的家目录;
~acount 代表account用户的家目录;
9、文件的特殊权限位:
SUID、SGID和Sticky位:
SUID,属主的x权限位为s或者S,s代表属主原来具有x权限,S代表属主原来不具有x权限,该权限位仅设置在二进制文件上,该权限可以使二进制文件暂时(在执行过程中)获得对某个文件具有属主的权限。
SGID,属组的x权限位为s或者S, s代表属主原来具有x权限,S代表属主原来不具有x权限。功能类似于SUID,只是该二进制文件暂时获得对某个文件具有属组的权限。
Sticky位,其它用户的x权限位为t或者T,t代表属主原来具有x权限,T代表属主原来不具有x权限。该位只针对目录有效,如果某个目录设置了该粘滞位,那么只有root用户和该文件的属主才有权利删除该目录下面的文件,其他的用户只能删除属于自己的文件。
SUID、SGID和Sticky位的设置:
用数字表示法:
4代表SUID,2代表SGID,1代表Sticky位。例如:设置test文件的权限为:-rwsrwsrwt ,chmod 7777 test。也可以通过如下方式进行设置:chmod ug+s,o+t test 。
10、file:查看文件的类型
格式为:file 文件名;查看结果可以是ASCII的纯文本文件、binary文件、目录文件或者data文件。
11、which命令:该命令是根据PATH环境变量所规范的路径去查询“执行文件”的文件名,不在PATH环境变量里的命令是不能被查询出来的。
12、文件名的查找命令:
whereis命令:whereis [options] 文件或者目录名
whereis -b :只找二进制格式的文件;
-s :只找源文件;
-m :只找在说明文件manual路径下的文件;
-u :查找不在上述选项中的其他所有文件;
locate命令:locate [options] 与某字符串相关的文件名
locate -i :忽略大小写的差异;
-r :后面可接正则表达式的显示方式。
(注意whereis和locate都是从数据库/var/lib/mlocate中查找的,速度比较快,但是刚刚创建的文件可能不能够找到。因为数据库的创建默认是每天执行一次,所以此时应手动更新数据库,方法为:# updatedb,该命令会查找硬盘来更新数据库的内容。)
find命令:比较慢的文件查找方法,但是其正确性非常高。当执行find命令的时候,它要去查找硬盘中的数据,找到后从硬盘中读入。
find 目录名 -mtime NUM :在某个目录下面查找,在NUM之前的“一天内”文件内容被修改的文件;
+NUM:在NUM天之前的文件,不包含NUM那一天;
-NUM:在NUM天内被修改过的文件;
-newer file:列出比file文件还要新的文件;
例如:设定设定NUM=3,则:
find /etc/ -mtime 3:在目录/etc/下面查找前3到4天内文件内容被修改的文件;
find /etc/ -mtime +3:在目录/etc/下面查找前四天之前的文件内容被修改的文件;
find /etc/ -mtime -3:在目录/etc/下面查找前3天内文件内容被修改的文件;
find 目录名称 -uid NUM :在某目录下面查找uid为NUM的文件;
-gid NUM :在某目录下面查找gid为NUM的文件;
-user Name:在某目录下面查找用户名为Name的文件;
-group Name:在某目录下面查找组名为Name的文件;
-nouser :寻找文件的所有者不存在的文件;
-nogroup:查找不属于任何组的文件;
find -name 文件名:查找指定文件名的文件;
-size [+-]SIZE:如果是+,则表示查找比SIZE大的文件;如果是-,则表示查找比SIZE小的文件。
-type TYPE:查找不同类型的文件;
-perm mode:查找文件权限刚好等于mode的文件。
-perm +mode:查找包含任意mode权限的文件。
-perm -mode:查找必须要包含全部mode权限的文件。
find -exec comend
例如;find / -perm +7000 -exec ls -l {} \;
"/":表示在根目录下面查找;
+7000:表示SUID,SGID和Sticky位任意一个存在即可;
-exec 和 \;中间表示comend命令;
{}:表示find的查找结果的存放位置;
13、对目录进行操作的几个常用命令:
cd 切换目录(Change Directory);
pwd 显示当前处于哪个目录下面;
mkdir 创建新目录:
mkdir -m 目录名称 创建目录的时候指定目录的权限;
mkdir -p 目录名称 创建目录的时候连同它的上级目录一同创建,如果它的上级目录已经存在,系统也不会显示错误信息;
rmdir 删除空目录;(注意:一定是空目录。)
14、PATH环境变量:
PATH的特点:
1】不同身份用户默认的PATH不同,默认能够随意执行的命令也不相同。
2】PATH是可以修改的。
3】使用绝对路径或者相对路径直接指定某个命令的文件名来执行,会比查询PATH来的正确。
4】命令应该要放置到正确的目录下,执行才会比较方便。
5】本目录最好不要放到PATH当中。
15、ls命令:
ls -a 列出所在目录所有的文件,连同隐藏文件一起列出来。
-A 列出全部的文件,但不包括.与..这两个目录。;
-d 仅列出目录或者文件本身,而不列出目录下的文件或子目录。
-f 直接列出结果而不进行排序。
-F 增加文件的附加信息,例如:*代表可执行;/代表目录;=代表socket文件;|代表FIFO文件。
-h 将文件大小做单位转换。
-i 列出inode号码。
-l 列出文件的详细信息。
-n 列出UID和GID,而不是属主和属组名。
-r 逆序显示目录及子目录。
-R 显示目录及子目录。
-S 以文件容量大小排序,而不是用文件名排序。
-t 依时间排序,而不是用文件名排序。
-Z 显示文件的安全上下文标签。
--color=never:不要依据文件特性给予颜色显示。
--color=always:显示颜色。
--color=auto:让系统自行依据设置来判断是否给予颜色显示。
--full-time:以完整时间模式输出。
--time={atime,ctime}输出最近一次的访问时间和文件改变的时间。
16、cp命令:
cp -p 连同文件的属性一起复制过去,而非使用默认属性。
-d 若文件为连接文件,则复制连接文件的属性,而非文件本身的属性。
-f 若目标文件已经存在且无法开启,则删除后再尝试一次。
-r 递归复制,复制目录的时候务必要带上。
-a 相当于-pdr。
-i 在目标文件已经存在时,在复制的时候先询问操作的进行。
-u 若目标文件比源文件旧才执行复制操作。
(注意:当我们在备份的时候,某些需要特别注意的特殊权限文件,例如密码文件/etc/shadow以及一些配置文件,就不能直接以cp来复制,而必须要加上-a或者是-p等可以完整复制文件权限的参数才行。)
17、rm命令:
rm -f 当删除一个不存的文件时,不会出现警告信息。
-r 递归删除,要谨慎小心使用。
-i 在删除前会询问用户是否操作。
(注意:一些特殊文件名的删除方法:例如文件名为:--aa-,删除该文件的方法:rm ./--aa- 使用路径来删除。)
18、mv命令:
mv -f 如果目标文件已经存在,不会询问直接覆盖。
-i 如果目标文件已经存在,询问是否覆盖。
-u 如果目标文件已经存在,且原文件比较新,则进行覆盖更新操作。
19、rename命令:批量修改文件名。
rename from to file
例如:rename te la test ,将test重新命名为last。
20、基名和目录名的获取:
获取基名:basename 带路径的文件名
获取目录名:dirname 带路径的文件名
21、文件内容查询命令:
cat命令:
cat -b 列出行号,仅针对非空白行做行号显示,空白行不标行号。
-E 将结尾的$符号显示出来。
-n 连同空白行号一起打印出来。
-T 将tab按键以^I显示出来。
-v 列出一些看不出来的特殊字符。
-A 相当于-vET。
more命令:翻页查看文件内容。
more 文件名
在查看的过程中,可以进行如下操作:
按空格键,向下翻一页。
按Enter键,向下滚动一行。
/String,向下查询String字符串。
:f ,立即显示所在的行号和文件名。
q,退出查看该文件。
b,往文件头部翻页。
less命令:翻页查看文件内容。
在查看的过程中,可以进行如下操作:
按空格键,向下翻一页。
[pagedown],向下翻动一页。
[pageup],向上翻动一页。
/String ,向下查询字符串。
?String,向上查询字符串。
q,退出查看该文件。
22、文件与目录的默认权限:
若用户创建文件,则默认没有x权限,只有r和w权限,即文件权限的最大值为666,-rw-rw-rw-。
若用户创建目录,则目录的最大权限是777,drwxrwxrwx。
而实际用户创建文件的权限和目录的权限则取决于文件或目录的默认权限和umask的值。默认的umask的值为022,即用户创建文件的最终权限为-rw-r--r--,创建目录的最终权限是drwxr-xr-x。
23、权限与命令间的关系:
1】让某个目录成为某个用户的工作目录,则该用户对该目录具有x权限;
2】用户在某个目录读取文件的基本权限,则用户要对该目录具有x权限,对该文件具有r权限。
3】用户可以修改一个文件的基本权限,则用户对该文件所在的目录具有x权限,对文件具有r和w权限。
4】用户可以创建一个文件的基本权限,则用户对该目录具有w和x权限;
5】用户可以进入该目录,并可以执行该目录下的某个命令,则用户对该目录具有x权限,对文件具有x权限。
24、stat命令:查看文件的时间戳:最近一次的访问时间、最近一次的修改时间、最近一次的改变时间。