(七)Linux文件与目录管理


1. 目录的相关操作:

cd (Change Directory)

\

pwd (Print Working Directory)

\

mkdir (make directory)

\

rmdir (remove directory)

\

2. 环境变量 PATH

当我们在运行一个命令的时候,举例来说『ls』好了,系统会依照PATH的配置去每个PATH定义的目录下搜寻档名为ls的可运行档。将/root加入PATH:PATH=”$PATH”:/root。

3. 文件与目录的检视(ls)

默认显示非隐藏档的档名、以档名进行排序及档名代表的颜色显示。

-a:全部的文件,连同隐藏档( 开头为 . 的文件) 一起列出来

-d:仅列出目录本身,而不是列出目录内的文件数据

-l:长数据串列出,包含文件的属性与权限等等数据

4. 复制、删除与移动:cp, rm, mv

cp (复制文件或目录)

-a:相当于 -pdr 的意思,至于 pdr 请参考下列说明

-p:连同文件的属性一起复制过去,而非使用默认属性(备份常用)

-d:若来源档为连结档的属性(link file),则复制连结档属性而非文件本身

-r:递回持续复制,用于目录的复制行为

-i:若目标档(destination)已经存在时,在覆盖时会先询问动作的进行

rm (移除文件或目录)

-f:就是 force 的意思,忽略不存在的文件,不会出现警告信息

-i:互动模式,在删除前会询问使用者是否动作

-r:递回删除啊!最常用在目录的删除了!

mv (移动文件与目录,或更名)

-f:force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖

-i:若目标文件 (destination) 已经存在时,就会询问是否覆盖!

-u:若目标文件已经存在,且 source 比较新,才会升级 (update)

5. 取得路径的文件名称与目录名称:

basename : 取得档名
dirname:取得目录名

6. 文件内容查阅

①cat 由第一行开始显示文件内容

②tac 从最后一行开始显示,可以看出 tac 是cat 的倒著写

③nl 显示的时候,顺道输出行号

④more 一页一页的显示文件内容

⑤less 与 more 类似,但是比 more 更好的是,他可以往前翻页

⑥head 只看头几行

⑦tail 只看尾巴几行

⑧od 以二进位的方式读取文件内容

 

⑴直接检视文件内容

cat (concatenate)

-A:相当於 -vET 的整合选项,可列出一些特殊字符而不是空白而已;

-b:列出行号,仅针对非空白行做行号显示,空白行不标行号!

-E:将结尾的断行字节 $ 显示出来;

-n:列印出行号,连同空白行也会有行号,与 -b 的选项不同;

-T:将 [tab] 按键以 ^I 显示出来;

-v:列出一些看不出来的特殊字符

tac (反向列示)

cat 是由『第一行到最后一行连续显示在萤幕上』,而 tac 则是『 由最后一行到第一行反向在萤幕上显示出来』,其余 相同。

nl (添加行号列印)

-b :指定行号指定的方式,主要有两种:

-ba :表示不论是否为空行,也同样列出行号(类似 cat -n)

-bt :如果有空行,空的那一行不要列出行号(默认值)

-n:列出行号表示的方法,主要有三种:

-n ln :行号在萤幕的最左方显示

-nrn :行号在自己栏位的最右方显示,且不加 0

-nrz :行号在自己栏位的最右方显示,且加 0

-w :行号栏位的占用的位数

 

⑵可翻页检视

more (一页一页翻动)

空白键 (space):代表向下翻一页;

Enter :代表向下翻『一行』;

/字串 :代表在这个显示的内容当中,向下搜寻『字串』这个关键字;

:f :立刻显示出档名以及目前显示的行数;

q :代表立刻离开 more ,不再显示该文件内容。

b或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。

less (一页一页翻动)

空白键 (space):代表向下翻一页;

[pagedown]:向下翻动一页;

[pageup]: 向上翻动一页;

/字串 :向下搜寻『字串』的功能;

?字串 :向上搜寻『字串』的功能;

n :重复前一个搜寻 (与 / 或 ? 有关)

N :反向的重复前一个搜寻 (与 / 或 ? 有关)

q :离开 less 这个程序;

 

⑶数据撷取

head (取出前面几行)

-n :后面接数字,代表显示几行

tail (取出后面几行)

-n :后面接数字,代表显示几行的意思

-f :持续侦测后面所接的档名,要等到按下[ctrl]-c才会结束tail的侦测

 

⑷非纯文字档

od

-t :后面可以接各种『类型 (TYPE)』的输出,例如:

a :利用默认的字节来输出;

c :使用 ASCII 字节来输出 d[size] :利用十进位(decimal)来输出数据,每个整数占用 size bytes ;

f[size]:利用浮点数值(floating)来输出数据,每个数占用 size bytes ;

o[size] :利用八进位(octal)来输出数据,每个整数占用 size bytes ;

x[size]:利用十六进位(hexadecimal)来输出数据,每个整数占用 size bytes ;

 

7. 修改文件时间或建置新档: touch

\

 

modification time (mtime)
当该文件的『内容数据』变更时,就会升级这个时间!内容数据指的是文件的内容,而不是文件的属性或权限.。
status time (ctime)
当该文件的『状态 (status)』改变时,就会升级这个时间,举例来说,像是权限与属性被更改了,都会升级这个时间。
access time (atime)
当『该文件的内容被取用』时,就会升级这个读取时间 (access)。举例来说,我们使用 cat 去读取 /etc/man.config , 就会升级该文件的 atime 了。

8. 文件默认权限:umask(User's MASK)

umask 就是指定 『目前使用者在创建文件或目录时候的权限默认值』,-S以符号类型的方式来显示出权限。若要修改默认权限,umask后空格再加数字即可。

\

 

在默认权限的属性上,目录与文件是不一样的。创建文件时,默认没有x。默认权限为-rw-rw-rw-。创建目录时,默认权限为drwxrwxrwx。

注意:umask 的分数指的是『该默认值需要减掉的权限』。例如当umask为022时:

创建文件时:(-rw-rw-rw-) -(-----w--w-) ==> -rw-r--r--

创建目录时:(drwxrwxrwx) -(d----w--w-) ==> drwxr-xr-x

 

9. 文件隐藏属性

chattr (配置文件隐藏属性)

该命令只能在Ext2/Ext3的文件系统上面生效

\

 

lsattr (显示文件隐藏属性)

\

10. 文件特殊权限: SUID, SGID, SBIT

\

 

Set UID

s 这个标志出现在User的 x 权限上时,就被称为 Set UID,简称为 SUID 的特殊权限。限制和功能如下:

SUID 权限仅对二进位程序(binary program)有效

运行者对于该程序需要具有 x 的可运行权限

本权限仅在运行该程序的过程中有效 (run-time)

运行者将具有该程序Uesr 的权限

例如:/etc/shadow 这个文件存储着所有的账号密码,它的权限为:『-r-------- 1 root root』,即这个文件仅有root可读且仅有root可以强制写入。但是一般使用者也可以修改自己的密码,即修改修改这个文件。这就是 SUID 的功能的体现,passwd的User是root,,所以一般用户运行 passwd 修改密码的过程中,会暂时获得root权限。但是一般用户不能用cat去读取/etc/shadow.

\

 

Set GID

s 这个标志出现在Group的 x 权限上时,就被称为 Set UID,简称为 SUID 的特殊权限,限制和功能如下:

SGID 对二进位程序有用

程序运行者对于该程序来说,需具备 x 的权限

运行者在运行的过程中将会获得该程序Group的支持

除了 binary program 之外,事实上 SGID 也能够用在目录上,这也是非常常见的一种用途。当一个目录配置了 SGID 的权限后,他将具有如下的功能:

使用者若对于此目录具有 r 与 x 的权限时,该使用者能够进入此目录

使用者在此目录下的有效群组(effective group)将会变成该目录的群组

用途:若使用者在此目录下具有 w 的权限(可以新建文件),则使用者所创建的新文件,该新文件的群组与此目录的群组相同。

Sticky Bit

Sticky Bit, SBIT 目前只针对目录有效,其作用如下:

当使用者对于此目录具有 w, x 权限,亦即具有写入的权限时

当使用者在该目录下创建文件或目录时,仅有自己与 root 才有权力删除该文件

SUID/SGID/SBIT 权限配置

数字型态更改权限的方式为『三个数字』的组合,在这三个数字之前再加上一个数字的话,最前面的那个数字就代表这几个权限。

4 为 SUID 2 为 SGID 1 为 SBIT

例如要将一个文件权限改为『-rwsr-xr-x』时,由于 s 在使用者权限中,所以是 SUID ,因此, 在原先的 755 之前还要加上 4 ,也就是:『chmod 4755 filename 』来配置。

注意:文件权限会出现S 和 T 的情况,原因是s 和 t 都是取代 x 权限的,但是当没有 x 存在的时候,若在设置成 SUID , SGID , SBIT ,就会用 S 和 T 来表示 空。

除了数字法之外,你也可以透过符号法来处理。其中 SUID 为 u+s ,而 SGID 为 g+s ,SBIT 则是 o+t 。

 

\

11. 观察文件类型:file

\

12. 命令档名的搜寻:which (寻找『运行档』)

which 用于搜寻命令的完整档名的位置,根据『PATH』这个环境变量所规范的路径,去搜寻『运行档』的档名。

\

 

13. 文件档名的搜寻:whereis ,locate,find

通常find不常用,速度慢且直接搜寻硬盘,whereis和locate是利用数据库来搜寻数据,所以相当的快速,而且并没有实际的搜寻硬盘,比较省时间。

whereis (寻找特定文件)

\

locate(文件部分名称)

\

locate寻找数据是由已创建的数据库 /var/lib/mlocate/』 里面的数据所搜寻到的,不用直接在去硬盘当中存取数据。

手动更新数据库的方式:直接输入『 updatedb 』。

updatedb:根据 /etc/updatedb.conf 的配置去搜寻系统硬盘内的档名,并升级/var/lib/mlocate内的数据库文件;

locate:依据 /var/lib/mlocate 内的数据库记载,找出使用者输入的关键字档名。

find

\

\

\

\

 

 

 

13. 命令与权限之间的关系

一、让使用者能进入某目录成为『可工作目录』的基本权限为何:

· 可使用的命令:例如 cd 等变换工作目录的命令;

· 目录所需权限:使用者对这个目录至少需要具有 x 的权限

· 额外需求:如果使用者想要在这个目录内利用 ls 查阅档名,则使用者对此目录还需要 r 的权限。

二、使用者在某个目录内读取一个文件的基本权限为何?

· 可使用的命令:例如本章谈到的 cat, more, less等等

· 目录所需权限:使用者对这个目录至少需要具有 x 权限;

· 文件所需权限:使用者对文件至少需要具有 r 的权限才行!

三、让使用者可以修改一个文件的基本权限为何?

· 可使用的命令:例如 nano 或未来要介绍的 vi 编辑器等;

· 目录所需权限:使用者在该文件所在的目录至少要有 x 权限;

· 文件所需权限:使用者对该文件至少要有 r, w 权限

四、让一个使用者可以创建一个文件的基本权限为何?

· 目录所需权限:使用者在该目录要具有 w,x 的权限,重点在 w 啦!

五、让使用者进入某目录并运行该目录下的某个命令之基本权限为何?

· 目录所需权限:使用者在该目录至少要有 x 的权限;

· 文件所需权限:使用者在该文件至少需要有 x 的权限

相关内容