您的位置:首页 > 运维架构 > Linux

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

2016-06-22 19:57 393 查看

一、目录与路径

1.1、绝对路径与相对路径

绝对路径:/

相对路径:非/开头

2、目录的相关操作

几个比较特殊的目录

1、.:当前目录;

2、..:上一层目录;

3、-:前一个目录;

4、~:当前目录所在的主文件夹

5、~用户:该用户所在的主文件夹

常见的目录处理命令(要经常使用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

在任何位置都能执行命令的理由:会根据环境变量PATH中查询相应目录下的可执行文件;

可以使用echo $PATH查看定义的PAHT路径(ecoh有显示、打印的意思)

一般用户的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

cp复制文件或者目录,还可以创建连接文件,重用option如下

1、-a:连同文件的属性一同复制,包括建立的时间(有的cp会改变原有文件或者目录的权限或属性),复制文件时要注意权限的问题,是否加上-a命令。

2、-i:若目标文件存在,则先询问是否覆盖

3、-r:递归复制

复制的目标文件可以重命名;

如果是目录,要加上-r命令才能复制

创建连接文件-s(软连接、快捷方式,ls显示为:快捷方式—>目标文件),-h硬连接(权限与源文件一样,但是i-node + 1)

可以复制多个文件到最后一个目录中;

使用cp应考虑的问题:

1、是否保留源文件的信息(-a);

2、是否为软文件:可能复制软文件的连接文件,-d则复制的是连接文件;

3、源文件是否为目录;

4、是否为特殊文件(这个还没接触)

rm:移除文件或者目录

1、常见option

1) -f:强制删除,即文件若不存在也不会发出警告;

2) -i:删除前询问(有interact的意思)

3) -r:递归删除,很危险;

2、删除以i开头的文件:i*;

3、root用户在-r中默认添加了-i询问,如果不想询问可以使用\rm命令

mv:移动文件或者更名

1、常用option:

1)-f:如果目标文件已存在,则强制覆盖;

2)-i:如果目标文件已存在,则询问覆盖;

3)-u:如果mv 源 目标中源更新,则覆盖

2、重命名即mv 目录 新名字即可

3、可以将多个文件移动到最后一个目录下

取得目录名(basename)和文件名(dirname)

三、文件内容查阅

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

3.1、直接查看文件内容

cat:从第一行开始显示文件内容;

1、常用option

1) -n:打印行号,连空白页也会有行号

2) -b:仅对非空白页有行号;

2、cat是concatenate,连接的意思,即是将文件的内容连续的显示;如果文件小,可以用,如果文件大,则屏幕不会显示那么多,应该结合more和less使用;

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

nl:添加行号打印

1、常用option

1) -b a:空行也打印行号(类似于 cat -n); -b t:空行不打印行号;

2) -w number:设置行号的位数

3.2、可翻阅查看

上述的ln、cat、tac都只是一次性查看

more:文件内容大于屏幕时,翻页显示,常用option如下

1、Space:下一页

2、Enter;下一行

3、/key:查询key关键字

4、:f:显示文件名以及当前行数;

5、q:离开

6、b或者Ctrl+b:往返查看;

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

od -t TYPE:以Type类型的格式输出文件内容

1、a:默认字符(??是啥)

2、c:ASCII码

3、d/f/o/x:十进制/浮点数/八进制/16进制

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

三个主要的时间参数

1、mtime(modification):文件的数据内容改变后会修改这个参数;ls默认的显示的时间参数是这个;

2、ctime(status):文件的状态(属性和权限)发生改变后,修改这个参数

3、atime(access):文件被读取了,会更新这个时间;

查看 时间的参数:ls -l –time=mtime

来自未来的时间如何变成现在时刻(未来指的是有可能时间错误,提前了)

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

umask:指定目前用户新建文件或者目录时的权限默认值

默认权限的查看(目录与文件的默认权限不一样)

1、umask命令,显示0022,第一个为特殊权限所使用,与权限相关的仅是后面3个,umask分数指的是该默认值需要减掉的权限

2.、umask -S :u=rwx,g=rx,o=rx:以符号的形式显示默认权限

Linux目录与文件默认权限的讲解

1、用户创建文件一般没有x权限,即为-rw-rw-rw-

2、用户新建目录一般x的权限为可访问(cd)要有。即为drwxrwxrwx

umask分数代表的是“上述默认值要出去的权限”022即为:要出去-ww权限,即实际情况下默认权限为:原始文件(目录)默认权限 - umask除去的权限 ==-rw-r–r–(文件) + drwxr-xr-x(目录)

如何修改umask可去除的默认权限:umask 002

4.2、文件隐藏属性chattr、lsattr

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

chattr命令只能在Ext2、Ext3文件系统上才有效;

设置文件的隐藏属性:chattr

1、用法:chattr [+-=] [ai] file/dir

2、+/-:增加(删除)某一隐藏属性、=:仅有后面接的参数???

3、常用option:

1) a:只能增加增加数据而不能删除和修改数据;

2)i:任务用户对该文件啥都不能做

使用lsattr查看这些吟唱属性

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

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仅适用于二进制文件、且不适用于目录。

SetGID

1、当x出现在文件所在组的x位置时,成为Set GID,SGID既可以针对文件,也适用于目录;

2、SGID作用于二进制文件时:

1)程序执行者对该文件具有x权限

2)执行者在执行过程中会获得程序所在组的执行

3、SGID作用于文件时:???

sticky Bit(SBIT)

1、SBIT只针对目录有效,而对文件无效;

2、作用为:

1)当用户对该目录具有w、x权限,即具有写入的权限;

2)当用户在该目录下创建文件或者目录时,只有自己或者root才能删除该文件

SUID/SGID/SBIT权限的设置

1、在原始rwx三个数字之前又加入新的数字

2、 SUID/SGID/SBIT对应的数字分别为4/2/1;

3、例如-rwsr-xr-x权限为chmod 4755 filename

当这三个权限为大写时,例如-rwSrwSrwT表示用户没有x权限;

4.4、查看文件类型file

五、命令和文件的查询

即可以查询命令和文件所在的目录

5.1、脚本文件名的查询

which:根据path查找命令的位置;

1、不同用户所配置的path不一样,也就是说查询结果不一样;

2、有些命令并没有配置在path中,而是内置的,所以也有可能查不到,可以使用type命令查询;

5.2、文件名的查找

一般先使用whereis或者local查找,再用find查找;

1、Linux系统会将系统内所有文件都记录到一个数据库文件中,whereis和local就是从这个数据库中查找,速度快,而find是从硬盘中查找,慢但是全面。

2、whereis和local找不到的原因是因为:文件数据库的更新是间断性的,例如CentOS5.x是每天更新一次,对于新建的文件,使用这两个命令查找找不到,但是也可以使用updatedb手动更新数据库。updatedb会根据etc/updatedb.config的设置去查找系统硬盘内的文件名,并更新/var/lib/mlocate内的数据库文件

whereis [-bmsu] 文件或目录

1、-b:只查找二进制文件

2、-m:只查找在说明文件manual路径下的文件

3、-s:只查找sorce源文件

4、-u:查找不含上述的其它类型文件;

locate [-ir] keyword

1、-i:忽略大小写

2、-r:接正则表达式

3、包含keyword关键字的文件或者目录都会被查询

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权限都会被列出。

find结合其它命令的使用

1、-exec command:-exec后面接其它命令处理查询到的结果;

2、例如:find / -perm +700 -exec command ls -l {} \;

1) ls -l {}属于额外命令

2) -exec ~\;属于额外命令的开始与结束
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息