鸟哥的Linux私房菜学习笔记(二)Linux 文件、目录与磁盘格式 —— Linux文件与目录管理

1. 目录与路径

1) 目录的相关操作

比较特殊目录:

    .         代表此层目录

    ..        代表上一层目录

    -         代表前一个工作目录

    ~         代表『目前使用者身份』所在的家目录

    ~account  代表 account 这个使用者的家目录(account是个帐号名称)

cd (变换目录,Change Directory的缩写)

    cd [相对路径或绝对路径]

    例:cd ~vbird    # 代表去到 vbird 这个使用者的家目录,亦即 /home/vbird

pwd (显示目前所在的目录,Print Working Directory的缩写)

    pwd [-P]

    -P  :显示出确实的路径,而非使用连结 (link) 路径。

mkdir (创建新目录)

    mkdir [-mp] 目录名称

    -p :帮助你直接将所需要的目录(包含上一级目录)递回创建起来!

    例:

    mkdir -p test1/test2/test3/test4    # 加了这个 -p 的选项,可以自行帮你创建多层目录!

    mkdir -m 711 test2    范例:创建权限为rwx--x--x的目录

rmdir (删除『空』的目录)

    rmdir [-p] 目录名称

    -p :连同上一级『空的』目录也一起删除

    注:如果要将所有目录下的东西都杀掉呢?! 这个时候就必须使用『 rm -r test 』罗!

2) 关於运行档路径的变量: $PATH

    使用命令『echo $PATH』来看看到底有哪些目录被定义出来了? echo有『显示、印出』的意思,而 PATH 前面加的 $ 表示后面接的是变量,所以会显示出目前的 PATH !PATH(一定是大写)这个变量的内容是由一堆目录所组成的,每个目录中间用冒号(:)来隔开, 每个目录是有『顺序』之分的。

    当我们在运行一个命令的时候,举例来说『ls』好了,系统会依照PATH的配置去每个PATH定义的目录下搜寻档名为ls的可运行档, 如果在PATH定义的目录中含有多个档名为ls的可运行档,那么先搜寻到的同名命令先被运行!

    如果想要让root在任何目录均可运行/root底下的ls,那么就将/root加入PATH当中即可。 加入的方法很简单,就像底下这样: 『PATH="$PATH":/root』

2. 文件与目录管理

1) 文件与目录的检视: ls

鸟哥的Linux私房菜学习笔记(二)Linux 文件、目录与磁盘格式 —— Linux文件与目录管理

只有下达ls时,默认显示的只有:非隐藏档的档名、以档名进行排序及档名代表的颜色显示如此而已。

无论如何, ls最常被使用到的功能还是那个-l的选项,为此,很多distribution在默认的情况中,已经将ll (L的小写)配置成为ls -l的意思了!

2) 复制、删除与移动: cp, rm, mv

cp (复制文件或目录)

鸟哥的Linux私房菜学习笔记(二)Linux 文件、目录与磁盘格式 —— Linux文件与目录管理

在默认的条件中, cp的来源档与目的档的权限是不同的,目的档的拥有者通常会是命令操作者本身。

rm (移除文件或目录)

鸟哥的Linux私房菜学习笔记(二)Linux 文件、目录与磁盘格式 —— Linux文件与目录管理

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

鸟哥的Linux私房菜学习笔记(二)Linux 文件、目录与磁盘格式 —— Linux文件与目录管理

注:另外一个用途就是『变更档名!』

3)取得路径的文件名称与目录名称

basename 与 dirname 取得路径的文件名称与目录名称

    例:

    [[email protected] ~]# basename /etc/sysconfig/network

    network         <== 很简单!就取得最后的档名~

    [[email protected] ~]# dirname /etc/sysconfig/network

    /etc/sysconfig  <== 取得的变成目录名了!

3.文件内容查阅

1) 直接检视文件内容: cat, tac, nl

cat (concatenate)

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

鸟哥的Linux私房菜学习笔记(二)Linux 文件、目录与磁盘格式 —— Linux文件与目录管理

tac (反向列示)

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

鸟哥的Linux私房菜学习笔记(二)Linux 文件、目录与磁盘格式 —— Linux文件与目录管理

nl (添加行号列印)

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

鸟哥的Linux私房菜学习笔记(二)Linux 文件、目录与磁盘格式 —— Linux文件与目录管理

2) 可翻页检视: more, less

more (一页一页翻动)

鸟哥的Linux私房菜学习笔记(二)Linux 文件、目录与磁盘格式 —— Linux文件与目录管理

在 more 这个程序的运行过程中,你有几个按键可以按的:

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

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

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

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

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

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

less (一页一页翻动)

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

鸟哥的Linux私房菜学习笔记(二)Linux 文件、目录与磁盘格式 —— Linux文件与目录管理

可以输入的命令有:

    空白键    :向下翻动一页;

    [pagedown]:向下翻动一页;

    [pageup]  :向上翻动一页;

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

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

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

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

    q         :离开 less 这个程序;

3) 数据撷取: head, tail

head (取出前面几行)

鸟哥的Linux私房菜学习笔记(二)Linux 文件、目录与磁盘格式 —— Linux文件与目录管理

tail (取出后面几行)

鸟哥的Linux私房菜学习笔记(二)Linux 文件、目录与磁盘格式 —— Linux文件与目录管理

4) 非纯文字档: od

鸟哥的Linux私房菜学习笔记(二)Linux 文件、目录与磁盘格式 —— Linux文件与目录管理

5) 修改文件时间与建置新档: touch

在 ls 这个命令的介绍时,有稍微提到每个文件在linux底下都会记录许多的时间参数, 其实是有三个主要的变动时间,那么三个时间的意义是什么呢?

    modification time (mtime):当该文件的『内容数据』变更时,就会升级这个时间!内容数据指的是文件的内容,而不是文件的属性或权限喔!

    status time (ctime):当该文件的『状态 (status)』改变时,就会升级这个时间,举例来说,像是权限与属性被更改了,都会升级这个时间啊。 

    access time (atime):当『该文件的内容被取用』时,就会升级这个读取时间 (access)。举例来说,我们使用 cat 去读取 /etc/man.config , 就会升级该文件的 atime 了。

在默认的情况下,ls 显示出来的是该文件的 mtime ,也就是这个文件的内容上次被更动的时间。

万一我发现了一个文件来自未来,该如何让该文件的时间变成『现在』的时刻呢? 很简单啊!就用『touch』这个命令即可!

鸟哥的Linux私房菜学习笔记(二)Linux 文件、目录与磁盘格式 —— Linux文件与目录管理

4.文件与目录的默认权限与隐藏权限

1) 文件默认权限:umask

umask 就是查看或指定 『目前使用者在创建文件或目录时候的权限默认值』

[[email protected] ~]# umask

[[email protected] ~]# umask -S

查阅的方式有两种,一种可以直接输入 umask,就可以看到数字型态的权限配置分数, 一种则是加入 -S (Symbolic) 这个选项,就会以符号类型的方式来显示出权限了!

修改默认权限:

umask [权限编号]  

注:权限编号指的是『该默认值需要减掉的权限!』

2) 文件隐藏属性: chattr, lsattr

在Linux的Ext2/Ext3文件系统下,我们还可以配置其他的系统隐藏属性, 这部份可使用 chattr 来配置,而以 lsattr 来查看。

chattr (配置文件隐藏属性)

鸟哥的Linux私房菜学习笔记(二)Linux 文件、目录与磁盘格式 —— Linux文件与目录管理

lsattr (显示文件隐藏属性)

鸟哥的Linux私房菜学习笔记(二)Linux 文件、目录与磁盘格式 —— Linux文件与目录管理

3) 文件特殊权限:SUID, SGID, SBIT, 权限配置

SUID(Set UID)

当 s 这个标志出现在文件拥有者的 x 权限上时,就被称为 Set UID,简称为 SUID 的特殊权限。 基本上SUID有这样的限制与功能:

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

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

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

    运行者将具有该程序拥有者 (owner) 的权限。

SGID(Set GID)

当 s 标志在文件拥有者的 x 项目为 SUID,那 s 在群组的 x 时则称为 Set GID, SGID 罗!

与 SUID 不同的是,SGID 可以针对文件或目录来配置!如果是对文件来说, SGID 有如下的功能:

SGID 也能够用在目录上,这也是非常常见的一种用途! 当一个目录配置了 SGID 的权限后,他将具有如下的功能:

    SGID 对二进位程序有用;

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

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

SGIT(Sticky Bit)

t 标志。SBIT 目前只针对目录有效,对於文件已经没有效果了。 SBIT 对於目录的作用是:

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

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

SUID/SGID/SBIT 权限配置

chmod [权限数字] [文件名]

在三个数字之前再加上一个数字的话,最前面的那个数字就代表这几个权限了,其中:

注:user, group 以及 others 都没有 x 这个可运行的标志( 因为 666 嘛 ),所以,这个 S, T 代表的就是『空的』啦!

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

4) 观察文件类型:file

想要知道某个文件的基本数据,例如是属於 ASCII 或者是 data 文件,或者是 binary , 且其中有没有使用到动态函式库 (share library) 等等的资讯,就可以利用 file 这个命令来检阅喔! 

file  [文件名]

5.命令与文件的搜寻

命令档名的搜寻

which (寻找『运行档』)

鸟哥的Linux私房菜学习笔记(二)Linux 文件、目录与磁盘格式 —— Linux文件与目录管理

注:bash 内建的命令找不到! which 默认是找 PATH 内所规范的目录!

文件档名的搜寻

通常 find 不很常用的!因为速度慢之外, 也很操硬盘!通常我们都是先使用 whereis 或者是 locate 来检查,如果真的找不到了,才以 find 来搜寻呦! 因为 whereis 与 locate 是利用数据库来搜寻数据,所以相当的快速。

当使用 whereis 或者是底下要说的 locate 时,都会以此数据库文件的内容为准, 因此,有的时后你还会发现使用这两个运行档时,会找到已经被杀掉的文件! 而且也找不到最新的刚刚创建的文件呢!

whereis (寻找特定文件)

鸟哥的Linux私房菜学习笔记(二)Linux 文件、目录与磁盘格式 —— Linux文件与目录管理

locate

locate 的使用更简单,直接在后面输入『文件的部分名称』后,就能够得到结果。 

鸟哥的Linux私房菜学习笔记(二)Linux 文件、目录与磁盘格式 —— Linux文件与目录管理

注:locate寻找的数据是由『已创建的数据库 /var/lib/mlocate/』 里面的数据所搜寻到的<而数据库的创建默认是在每天运行一次。那能否手动升级数据库哪?升级 locate 数据库的方法非常简单,直接输入『 updatedb 』就可以了!当你运行 updatedb 时,可能会等待数分钟的时间喔!

find

鸟哥的Linux私房菜学习笔记(二)Linux 文件、目录与磁盘格式 —— Linux文件与目录管理

鸟哥的Linux私房菜学习笔记(二)Linux 文件、目录与磁盘格式 —— Linux文件与目录管理

鸟哥的Linux私房菜学习笔记(二)Linux 文件、目录与磁盘格式 —— Linux文件与目录管理

鸟哥的Linux私房菜学习笔记(二)Linux 文件、目录与磁盘格式 —— Linux文件与目录管理



参考自:http://cn.linux.vbird.org/linux_basic/linux_basic.php


鸟哥的Linux私房菜学习笔记(二)Linux 文件、目录与磁盘格式 —— Linux文件与目录管理
鸟哥的Linux私房菜学习笔记(二)Linux 文件、目录与磁盘格式 —— Linux文件与目录管理
鸟哥的Linux私房菜学习笔记(二)Linux 文件、目录与磁盘格式 —— Linux文件与目录管理
鸟哥的Linux私房菜学习笔记(二)Linux 文件、目录与磁盘格式 —— Linux文件与目录管理
鸟哥的Linux私房菜学习笔记(二)Linux 文件、目录与磁盘格式 —— Linux文件与目录管理

鸟哥的Linux私房菜学习笔记(二)Linux 文件、目录与磁盘格式 —— Linux文件与目录管理