linux 文件与目录管理
一、 目录
1. 目录含义
- .: 此层目录,根目录的上一层目录..与根目录.自己是同一个目录
- ..:上一层目录
- -:前一个工作目录
- ~:当前用户所在的家目录
- ~account:account用户所在的家目录
2. 处理目录的指令
- cd:切换目录

- pwd:显示当前目录,加上参数-P显示真正的路径,而不是连接档的路径位置,如 /var/mail是连接档,连接到/var/spool/mail,所以加上参数-P会不以连接文件的数据显示,而是显示正确的完整路径

- mkdir:建立新目录
- 格式 mkdir [-mp] 目录名
- -m 配置文件的权限,可以直接设定,默认的目录属性是rwxr-xr-x (755)
- -p 直接将所需要的目录包含上层目录的层次建立起来,建立多层目录

- rmdir:删除空目录,需要一层一层的删除,且被删除的目录一定为空目录
- 如果要将该目录下的所有文件删除,需要使用rm -r 强制删除
- -P选项 连同上层空的目录都删除

3. 路径
- 绝对路径:一定要从根目录/写起
- 相对路径:以当前目录为起始点做相对于目前工作目录的路径
- 环境变量$PATH: 由一堆目录组成,每个目录中间用:分开,目录有顺序之分
- 设置环境变量: PATH="${PATH}:目录"
- 为安全起见,不建议将${PATH}搜寻的目录加入本目录.
- 不同身份使用者预设的PATH不同,默认随意执行的指令不同
- 使用绝对路径或相对路径直接指定某个指令的文件名来执行会比搜寻PATH来的正确

二、文件与目录管理
1. 查看
格式: ls [-aAdfFhilnrRSt] 文件名或目录名称
- 默认显示的只有非隐藏档的档名,以档名进行排序即文件名代表显示颜色-a :全部的文件,连同隐藏文件一起列出来
- -A:全部的文件,连同隐藏档,不包括.与..目录
- -d:仅列出目录本身,不列出目录内的文件数据
- -f:直接列出结果,不进行排序,ls预设会以档名排序
- -F:根据文件、目录等信息,给予附加的数据结构,如*表示可执行文件,;/表示目录;=表示socket文件;I表示FIFO 文件
- -h:将文件容量显示处理
- -i:列出inode号码
- -l:长数据串行出,包含文件的属性与权限等数据,列出列表。ll是 ls -l的缩写
- -n: 列出UID与GID而非使用者与群组的名称
- -r:将排序结果反向输出
- -R:连同子目录一起列出来,显示该目录下的所有文件
- -S:以文件容量大小排序
- -t:以时间排序
格式: ls [--color={never,auto,always}] 文件或目录名
- --color=never:不要依据文件特性给予颜色显示
- --color=always:显示颜色
- ---color=auto让系统自行依据设定来判断是否给予颜色
格式:ls [--full-time] 文件或目录名
- --full-time:以完整时间模式输出
- --time=[atime,ctime]:输出access时间或改变权限属性时间ctime, 非内容变更时间






2.拷贝
格式: cp [-adfilprsu] 来源文件source 目标文件destination
格式: cp [options] source1 source2 .... directory
- -a:相当于 -dr --preserve=all 的意思
- -d:若来源文件时连接档,则复制链接文件属性而非文件本身
- -f:若目标文件已存在且无法开启,会进行移除在复制
- -i:若目标文件存在,在拷贝时会询问
- -l:进行硬式链接的连接档,而非复制文件本身
- -p:连同文件属性,包括权限时间用户等一起复制
- -r:用于目录的复制
- -s:复制成为符号链接文件,即快捷方式
- -u:如果目标文件比源文件旧才更新,或者目标文件不存在才复制
- --preserve=all:除了-p的权限相关参数外,还会加入SELinux的属性,links,xattr等也复制,
- 在复制时需要考虑是否需要完整的保留源文件信息;来源文件是否是连接档;是否为特殊文件或目录





dmtsai不能随意修改文件拥有者和群组,所以可以复制wtmp 的相关权限等属性,但是与拥有者和群组相关的都不能改变
3. 删除
格式: rm [-fir] 文件或目录
- -f: 忽略不存在的文件,不会出现警告讯息
- -i:互动模式,删除前会询问是否进行
- -r:用于目录删除,强制删除
- rmdir 删除目录
- 在指令前面加上\,可以会略alias的指定选项


4. 移动
格式: mv [-fiu] source destination
格式: mv [options] source1 source2 ... directory
- -f:如果目标destination已经存在,不会询问直接覆盖
- -i:若目标存在会询问是否覆盖
- -u:目标已经存在,且源文件较新时才会更新
- 更改文件或目录名要用rename
- 如果有多个来源文件或目录,则最后一个目标文件一定是目录


5. 获取路径文件名与目录名称
- basename 文件或目录名 ==》取得最后的档名
- dirname 文件或目录名==》取得目录名

三、文件内容的查看
1. 直接查阅文件内容
- cat [-AbEnTv]
- -A:相当于-vET的功能,可以显示特殊字符而不是空白
- -b:列出行号,仅针对非空白行做行号显示
- -E:将结尾的断行字符$显示
- -n:打印出行号,连同空白行也会有行号
- -T:将tab键显示为^I
- -v:列出一些看不出来的字符


- tac 反向显示

- nl 添加行号打印: nl [-bnw] 文件
- -b:指定行号指定方式显示,如果是-b a 表示不论是否为空行都要列出行号,相当于cat -n;如果是-b t表示如果有空行,不列出行号 cat -b
- -n:-n ln表示行号在屏幕最左方显示;-n rn 行号在字段左方显示; -n rz 行号在字段左方显示,含0行
- -w:统计行号字段的占用的字符数,配合其他选项一起用


2. 翻页查看 more / less
- more:不能向上翻页


-
- less :可以使用pageup /pagedown实现翻页


3. 资料选择
- head 取前面几行: head [-n number] 文件
- -n 数字:表示显示几行,默认显示前面10行
- 如果是负数表示文件最后的n行不打印

- tail 取后面几行: tail [-n number] 文件
- -n 数字: 显示几行。默认显示10行
- -n +数字:表示显示数字后的所有数据
- -f:表示持续检测后面所链接的档名,按ctrl+c才会结束


4. 非纯文本档: od
- od [-t TYPE] 文件
- -t 后面可以接各种类型输出
- a:默认字符输出
- c:ASCII码输出
- d[size]:十进制输出,每个整数占用size bytes
- f[size]:浮点数输出
- o[size]:八进制
- x[size]:十六进制

5. 修改文件时间或建立新档:touch

默认情况下,ls显示的是文件的mtime,即上次内容变更的时间
- touch [-acdmt] 文件
- -a:仅修改access time
- -c:仅修改文件时间,若该文件不存在则不建立新文件
- -d:后面可以接预修订的日期,也可以使用--date="日期或时间"
- -m:仅修改mtime
- -t: 后面可以接预修订的时间,格式为YYYYMMDDhhmm
- 常用于建立一个空文件,或者修改某个文件日期


四、文件与目录的隐藏权限与默认权限
1. 文件预设权限 umask

- umask指定目前用户在建立文件或目录时候的权限默认值
- umask的分数指的是该默认值需要减掉的权限,022 表示用户可以rwx, 群组拿掉了w权限,others 拿走了w权限,所以文件变成了-rw-r--r--;目录变成了drwxr-xr-x



- root 默认umask=022,一般用户umask=002
2. 配置文件隐藏属性 chattr
- 只能在ext2/3/4的Linux文件系统上完整生效


3. 显示文件隐藏属性lsattr

4.文件特殊权限
- 当s出现在文件拥有者的x权限上时,表明是SUID的特殊权限
- SUID权限仅对二进制程序有效,不能够用于shell scripts上
- 执行者可以执行该程序,具备x的可执行权限
- 本权限在执行该程序的过程中有效
- 执行者将具有该程序拥有者owner权限
当s出现在group的x权限上,表明是SGID的权限
- SGID 针对文件或目录来设定
- SGUID 对二进制程序由于
- 程序执行者对于该程序来说需具备x权限
- 执行者在执行过程中会得到群组的支持
- 当一个目录设置了SGID时,用户若对次目录具有rx权限,用户可以进入目录,用户在该目录下的有效群组也会变成该目录群组,若用户具有w权限还可以共享使用者建立的新文件与群组
- 当t出现others的x位置时,SBIT只针对目录有效,当用户对该目录具有wx权限时,用户在该目录下建立文件或目录时只有root和用户自己可以删除,其所在群组下或其他人都不可以删除他建立的文件,同理该用户也不可以删除其他人的文件
- 设定SUID,SGID,SBIT,各自的数字分别为421。如果要修改权限,需要在原来的文件权限上加上相应的数字,
- 还可能会出现大S,大T,出现的情况是加载的目录或文件权限原本就没有x权限
- SBIT 只能加在目录权限上

5. file 观察文件类型

五、指令与文件的搜寻
1. 脚本文件的搜寻
- which [-a] command
- -a; 将所有由PATH目录中可以找到的指令均列出,而不止第一个被找到的指令
2. 文件档名的搜寻
- whereis [-bmsu] 文件或目录名
- -l:列出whereis 会查询的几个主要目录
- -b:只能找binary格式的文件
- -s:只找source来源文件
- -m:只能在说明文件manual路径下
- -u:搜寻不在上述三个项目中的其他特殊文件
- locate [-ir] keyword
- -i:忽略大小写
- -c:不输出档名,只计算找到的文件数量
- -l:进输出几行,后接数字
- -S:输出locate所使用的数据库文件的相关信息,包括该数据库记录的文件/目录数量,默认寻找的数据时由已建立的数据库/var/lib/mlocate找,数据库的建立默认每天执行一次,所以新建立的文件需更新数据库才能找到,使用updatedb 更新
- -r:接正规表示法的显示方式
- updatedb 根据/etc/updatedb.conf的设定去搜寻系统硬盘内的文件名,并更新/var/lib/mlocate的数据库文件
- find [PATH] [option] [action]
- 与时间有关的选项:atime,ctime, mtime
- -mtime n:n天之前的一天之内被修改过内容的文件
- -mtime +n:n天之前,不包含n天本身
- -mtime -n:n天之前,包含本身
- -newer file:file为一个存在的文件,列出比file还要新的文件档名
- 与使用者或组名有关参数:
- -uid n:UID账号为n的
- -gid n:GID账号为n的
- -user name: 使用者账号名称
- -group name:群组名称
- -nouser:文件拥有者不在/etc/passwd内的文件
- -nogroup:群组不在/etc/group 内的
- 与文件权限及名称有关的参数
- -name filename:搜寻文件名为filename的文件
- -size [+-]SIZE:搜寻比size还要大或小的文件,size的规格由c==byte ,k==1024byte
- -type TYPE:搜寻文件类型,主要有一般正规文件f 装置文件b,c 目录d 连接档l sockets s,FIFO p
- -perm mode:搜寻文件权限刚好等于mode
- -perm -mode:搜寻文件权限必须要全部涵盖mode的文件
- -perm /mode:搜寻文件权限包含任一mode的文件
- 额外参数
- -exec command:将其他指令执行到搜寻到的结果上
- -print:打印到屏幕
- 与时间有关的选项:atime,ctime, mtime
浙公网安备 33010602011771号