第七章:Linux文件与目录管理

一、目录与路径

1.1、绝对路径与相对路径

  1. 绝对路径:/
  2. 相对路径:非/开头

2、目录的相关操作

  1. 几个比较特殊的目录
    1、.:当前目录;
    2、..:上一层目录;
    3、-:前一个目录;
    4、~:当前目录所在的主文件夹
    5、~用户:该用户所在的主文件夹
  2. 常见的目录处理命令(要经常使用TAB键补全)
    1、cd:切换命令;change directory
    2、pwd:显示当前目录的绝对路径; print working directioy,-p参数不知道是啥回事
    3、mkdir:新建一个新目录
    1) mkdir test,mkdir test1/test2/test3报错,不能直接创建,加上-p参数可以就能实现递归创建了。755
    2) 设置权限为711的目录:mkdir -m 711 test2,默认创建的目录权限为
    4、rmdir:删除一个新目录,这个目录要是空的;
    1、rmdir -p 可以删除一系列的空目录

1.3、执行文件路径变量$PATH

  1. 在任何位置都能执行命令的理由:会根据环境变量PATH中查询相应目录下的可执行文件;
  2. 可以使用echo $PATH查看定义的PAHT路径(ecoh有显示、打印的意思)
  3. 一般用户的PATH中不包括/sbin目录中的命令,但是可以用绝对路径执行该命令
    1、例如将ls命令拷贝到了/root目录下,再来执行ls命令就行不通了,但是可以采用以下三种方法实现ls的执行
    1)绝对路径执行:/root/ls
    2)相对路径执行:./ls
    3)添加到PATH路径:PATH=”$PATH:/root”

二、文件与目录管理

管理主要包括:显示属性、复制。删除、移动

2.1、查看文件与目录:ls
(蓝色表示目录,白色表示文件)
1. 常用option
1、-a:显示全部文件,连同隐藏文件;
2、-d:仅列出当前文件,而不列出文件内的数据,只显示.
3、-l:列举文件的详细信息:文件属性啊、权限啊,ls -l==ll

2.2、复制、删除、移动:cp/rm、mv

  1. cp复制文件或者目录,还可以创建连接文件,重用option如下
    1、-a:连同文件的属性一同复制,包括建立的时间(有的cp会改变原有文件或者目录的权限或属性),复制文件时要注意权限的问题,是否加上-a命令。
    2、-i:若目标文件存在,则先询问是否覆盖
    3、-r:递归复制
  2. 复制的目标文件可以重命名;
  3. 如果是目录,要加上-r命令才能复制
  4. 创建连接文件-s(软连接、快捷方式,ls显示为:快捷方式—>目标文件),-h硬连接(权限与源文件一样,但是i-node + 1)
  5. 可以复制多个文件到最后一个目录中;
  6. 使用cp应考虑的问题:
    1、是否保留源文件的信息(-a);
    2、是否为软文件:可能复制软文件的连接文件,-d则复制的是连接文件;
    3、源文件是否为目录;
    4、是否为特殊文件(这个还没接触)
  7. rm:移除文件或者目录
    1、常见option
    1) -f:强制删除,即文件若不存在也不会发出警告;
    2) -i:删除前询问(有interact的意思)
    3) -r:递归删除,很危险;
    2、删除以i开头的文件:i*;
    3、root用户在-r中默认添加了-i询问,如果不想询问可以使用\rm命令
  8. mv:移动文件或者更名
    1、常用option:
    1)-f:如果目标文件已存在,则强制覆盖;
    2)-i:如果目标文件已存在,则询问覆盖;
    3)-u:如果mv 源 目标中源更新,则覆盖
    2、重命名即mv 目录 新名字即可
    3、可以将多个文件移动到最后一个目录下
  9. 取得目录名(basename)和文件名(dirname)

三、文件内容查阅

常用的显示文件内容命令:cat、more、less,查看大型文件使用tail或者tac命令

3.1、直接查看文件内容

  1. cat:从第一行开始显示文件内容;
    1、常用option
    1) -n:打印行号,连空白页也会有行号
    2) -b:仅对非空白页有行号;
    2、cat是concatenate,连接的意思,即是将文件的内容连续的显示;如果文件小,可以用,如果文件大,则屏幕不会显示那么多,应该结合more和less使用;

  2. tac:cat的反写,将文件内容从最后一行到第一行显示;

  3. nl:添加行号打印
    1、常用option
    1) -b a:空行也打印行号(类似于 cat -n); -b t:空行不打印行号;
    2) -w number:设置行号的位数

3.2、可翻阅查看
上述的ln、cat、tac都只是一次性查看

  1. more:文件内容大于屏幕时,翻页显示,常用option如下
    1、Space:下一页
    2、Enter;下一行
    3、/key:查询key关键字
    4、:f:显示文件名以及当前行数;
    5、q:离开
    6、b或者Ctrl+b:往返查看;
  2. less:一页一页的翻动,一行一行的翻动,比more更灵活
    1、常用按键
    1) Space 或者PageDown:向下翻一页
    2) PageUp
    3)/key +?/key:向下/上查询字符串功能
    4)n/N:与(3)结合,正向或者反向查询。
    5)q:离开

3.3、数据选取

head和tail都是以行开选取数据的
1. head(取出前面几行)
1、显示前面num行:head -n num;
2、后面100行都不打印数据:head -n -100
3、无num默认显示10行
2. tail(取出后面几行)
1、显示后面num行:tail -n num
2、只想列出num行以后的数据:tail -n +num;
3、-f:文件有可能随时会写入数据,你想在实时显示文件数据,可以用-f命令;

3.4、非纯文本文件的查阅:od

  1. od -t TYPE:以Type类型的格式输出文件内容
    1、a:默认字符(??是啥)
    2、c:ASCII码
    3、d/f/o/x:十进制/浮点数/八进制/16进制

3.5、修改文件时间或创建新文件touch

  1. 三个主要的时间参数
    1、mtime(modification):文件的数据内容改变后会修改这个参数;ls默认的显示的时间参数是这个;
    2、ctime(status):文件的状态(属性和权限)发生改变后,修改这个参数
    3、atime(access):文件被读取了,会更新这个时间;
  2. 查看 时间的参数:ls -l –time=mtime
  3. 来自未来的时间如何变成现在时刻(未来指的是有可能时间错误,提前了)
    1、新建一个空的文件夹:touch 文件夹;
    2、查看时间:ll 文件;ll –time=atime;ll –time=ctime 分号表示连续执行;
    3、将日期调整到两天前:touch -d “2 days ago” file(三个时间都会改)
    3、将日期改成2007/07/15 2:02
    touch -t 0709150202 file:但是atime、mtime都修改了,但是ctime不能改

四、文件与目录的默认权限与隐藏权限

前面讲过的:文件权限:rwx + 文件属性:d-l + 属性修改:chgro、chown、chmod
这里讲解设置文件系统的隐藏属性,使用chattr设置,使用lsattr查看
最重要的一个属性是:设置成不可修改的属性

4.1、文件默认权限:umask

  1. umask:指定目前用户新建文件或者目录时的权限默认值
  2. 默认权限的查看(目录与文件的默认权限不一样)
    1、umask命令,显示0022,第一个为特殊权限所使用,与权限相关的仅是后面3个,umask分数指的是该默认值需要减掉的权限
    2.、umask -S :u=rwx,g=rx,o=rx:以符号的形式显示默认权限
  3. Linux目录与文件默认权限的讲解
    1、用户创建文件一般没有x权限,即为-rw-rw-rw-
    2、用户新建目录一般x的权限为可访问(cd)要有。即为drwxrwxrwx
  4. umask分数代表的是“上述默认值要出去的权限”022即为:要出去-ww权限,即实际情况下默认权限为:原始文件(目录)默认权限 - umask除去的权限 ==-rw-r–r–(文件) + drwxr-xr-x(目录)
  5. 如何修改umask可去除的默认权限:umask 002

4.2、文件隐藏属性chattr、lsattr
文件隐藏属性对文件系统的安全性有很大帮助

  1. chattr命令只能在Ext2、Ext3文件系统上才有效;
  2. 设置文件的隐藏属性:chattr
    1、用法:chattr [+-=] [ai] file/dir
    2、+/-:增加(删除)某一隐藏属性、=:仅有后面接的参数???
    3、常用option:
    1) a:只能增加增加数据而不能删除和修改数据;
    2)i:任务用户对该文件啥都不能做
  3. 使用lsattr查看这些吟唱属性

4.3、文件特殊权限:SUID/SGID/SBIT

  1. SUID:setUID
    1、除了rwx权限,例如文件bin/passwd权限为drwxrwxrwt,/tmp的权限为-rwsr-xr-x,存在s、t这种特殊的权限
    2、s、t两个权限分别跟系统的账号以及系统的进程有关;
    3、SUID权限指的是s权限在文件所有者的执行x位置上出现;其限制于功能如下:
    1)仅对二进制程序有效;
    2)执行者对该文件具有x可执行权限;
    3)这种权限只在run-time的时候有效;
    4)执行者具有该文件所有者的权限
    4、例如,etc/shadow文件用于记录所有账号和密码,root对该文件的权限为-r——–1表示可读且能强制写入;但是一般用户也可以实现自己修改密码,原因是SUID特殊权限的功能
    1)一般用户对于/usr/bin/passwd具有x权限,表示一般用户可以执行passwd
    2)passwd文件的所有者是root账号;
    3)一般用户由于有SUID权限可暂时获得root权限,即可修改passwd文件
    5、此外,SUID仅适用于二进制文件、且不适用于目录。
  2. SetGID
    1、当x出现在文件所在组的x位置时,成为Set GID,SGID既可以针对文件,也适用于目录;
    2、SGID作用于二进制文件时:
    1)程序执行者对该文件具有x权限
    2)执行者在执行过程中会获得程序所在组的执行
    3、SGID作用于文件时:???

    1. sticky Bit(SBIT)
      1、SBIT只针对目录有效,而对文件无效;
      2、作用为:
      1)当用户对该目录具有w、x权限,即具有写入的权限;
      2)当用户在该目录下创建文件或者目录时,只有自己或者root才能删除该文件
  3. SUID/SGID/SBIT权限的设置
    1、在原始rwx三个数字之前又加入新的数字
    2、 SUID/SGID/SBIT对应的数字分别为4/2/1;
    3、例如-rwsr-xr-x权限为chmod 4755 filename
  4. 当这三个权限为大写时,例如-rwSrwSrwT表示用户没有x权限;

4.4、查看文件类型file

五、命令和文件的查询

即可以查询命令和文件所在的目录
5.1、脚本文件名的查询

  1. which:根据path查找命令的位置;
    1、不同用户所配置的path不一样,也就是说查询结果不一样;
    2、有些命令并没有配置在path中,而是内置的,所以也有可能查不到,可以使用type命令查询;

5.2、文件名的查找

  1. 一般先使用whereis或者local查找,再用find查找;
    1、Linux系统会将系统内所有文件都记录到一个数据库文件中,whereis和local就是从这个数据库中查找,速度快,而find是从硬盘中查找,慢但是全面。
    2、whereis和local找不到的原因是因为:文件数据库的更新是间断性的,例如CentOS5.x是每天更新一次,对于新建的文件,使用这两个命令查找找不到,但是也可以使用updatedb手动更新数据库。updatedb会根据etc/updatedb.config的设置去查找系统硬盘内的文件名,并更新/var/lib/mlocate内的数据库文件
  2. whereis [-bmsu] 文件或目录
    1、-b:只查找二进制文件
    2、-m:只查找在说明文件manual路径下的文件
    3、-s:只查找sorce源文件
    4、-u:查找不含上述的其它类型文件;
  3. locate [-ir] keyword
    1、-i:忽略大小写
    2、-r:接正则表达式
    3、包含keyword关键字的文件或者目录都会被查询
  4. find:
    1、用法:find PATH OPTION ACTION
    2、与时间相关的参数有-atime、ctime、mtime,例如:
    1) -mtime n:查找n+1~n天这一天之内修改过的文件;
    2) -mtime +n:查找n天之前( 不包括n)被修改的文件;
    3) -mtime -n:查找n天之内,包括n天本身被修改过的文件;
    3、与用户或用户组名有关的参数
    1)-user name,例如,找出/home目录下属于dengqi用户的文件:find /home -user dengqi,-group name也是类似;
    2)-nouser:找出系统中不属于任何人的文件,-nogroup也类似;
    3)-uid和-gid后面再介绍
    4、与文件权限及名称有关的参数
    1) -name filename:查找文件名为filename的文件
    2)-type TYPE:查找文件类型为TYPE(f/b/c/d/l/s/p)的文件
    3)-perm mode:文件权限刚好等于mode的文件;-perm -mode:文件权限包括mode的文件,例如4744文件权限包括了0744mode,所以查询-perm -0744文件时会猎取4744权限的文件;-perm +mode:文件只要包含了mode权限都会被列出。
  5. find结合其它命令的使用
    1、-exec command:-exec后面接其它命令处理查询到的结果;
    2、例如:find / -perm +700 -exec command ls -l {} \;
    1) ls -l {}属于额外命令
    2) -exec ~\;属于额外命令的开始与结束

你可能感兴趣的:(鸟哥Linux私房菜)