鸟哥的Linux笔记-----目录

. 代表此层目录

 .. 代表上一层目录

 - 代表前一个工作目录

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

 ~account 代表 account 这个用户的家目录(account是个账号名称)

  • cd Change Directory的缩写,这是用来变换工作目录的指令
  • pwd (显示目前所在的目录) 
  • pw -p (显示出确实的路径,而非使用链接 (link) 路径)
  • mkdir [-mp] 目录名称 选项不参数:

-m :配置文件案的权限!直接设定,不需要看预设权限 (umask)

 -p :帮你直接将所需要的目录(包括上层目录)递归建立起来!

一、PATH---ls为什么任何用户在任何目录下都可以使用

PATH(一定是大写)这个变量的内容是由一堆目录所组成的,每个目录中间用冒号(:)分隔开, 每个目录是有『顺序』之分的。仔细看一下上面的输出,你可以发现到无论是root还是tom都有/bin 这个目录在PATH变量内,所以当然就能够在任何地方执行ls找到/bin/ls执行档

增加PATH路径

[root@www ~]# PATH="$PATH":/root

能够将/root加入到执行文件搜寻路径PATH中了!不相信的话请您自行使用『echo $PATH』去查看吧

如果我有两个ls指令在不同的目录中,例如/usr/local/bin/ls和/bin/ls那么当我下达 ls 的时候,哪个ls会被执行?

答:  PATH 里面哪个目录先被查询,则那个目录的指令就会被先执行了!

二、CP

  •  cp (复制档案和目录)

选项与参数:、

-a :相当于-pdr 的意思;(常用)

-i :若目标文件(destination)已经存在时,在覆盖时会先询问(常用)

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

-p :连同档案癿属性一起复制过去,而非使用默讣属性(备份常用);

-r :递归持续复制,用于目标的复制行为;(常用)

# 也就是说,如果没有加上任何选项时,cp复制的是源文件,而非链接文件的属性!

# 若要复制链接文件的属性,就得要使用 -d 的选项了!

三、RM

  • rm (移除档案或目录)

选项不参数:

-f :就是 force的意忠,忽略不存在的档案,不会出现警告讯息;

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

 -r :递归删除!最常用在目录的删除!这是非常危险的选项!!!

四、mv (移动档案与目录,或更名)

选项不参数:

-f :force 强制的意忠,如果目标档案已经存在,不会询问而直接覆盖;

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

-u :若目标档案已经存在,且source 比较新,才会更新 (update)

[root@www tmp]# mv bashrc1 bashrc2 mvtest2

# 注意到这边,如果有多个来源档案或目录,则最后一个目标文件一定是『目录!』

# 意忠是说,将所有的数据移动到该目录的意思!

五、取得路径与目录名称

basename和dirname的区别

basename  ===>取到最后的文件名

dirname ===>取到目录名

六、文件内容的查看

 cat 由第一行开始显示档案内容
 tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
 nl 显示的时候,顺道输出行号!
 more 一页一页的显示档案内容
 less 不与more 类似,但是比 more 更好的是,他可以往前翻页!
 head 查看头几行
 tail 查看结尾几行
 od 以二进制的方式读取档案内容! 

七、UMASK的使用方法

umask 为 003 ,所以拿掉的权限为 --------wx,     因此:

档案: (-rw-rw-rw-) - (--------wx) = -rw-rw-r--

目录: (drwxrwxrwx) - (--------wx) = drwxrwxr--

档案的默认权限为666,目录的默认权限为777

umask  022      ------------设置umask的值

八、文件执行档的搜索

which

[root@www ~]# which [-a] command

选项或参数:

-a :将所有由 PATH 目录中可以找到的指令均列出,而不止第一个被找到的指令名称

whereis

系统会将系统内的所有档案都记录在一个数据库档案【/var/lib/mlocate/】里面,whereis和local都会以此数据库档案的内容为准

[root@www ~]# whereis [-bmsu] 档案或目录名

选项和参数:

-b :叧找 binary 格式的档案

-m :叧找在说明文件 manual 路径下的档案

-s :叧找 source 来源档案

-u :搜寻不在上述三个项目当中的其他特殊档案

local

[root@www ~]# locate [-ir] keyword

选项和参数:

-i :忽略大小写的差异;

-r :后面可接正则表达式;

  •  updatedb:根据 /etc/updatedb.conf 的设定去搜寻系统硬盘内的文件名,并更新 /var/lib/mlocate 内的数据库档案;
  •  locate:依据 /var/lib/mlocate 内的数据库记载,找出用户输入的关键词文件名

find

find 是很强大的搜寻指令,但时间花用的很大,因为 find 是直接搜寻硬盘

[root@www ~]# find [PATH] [option] [action]

选项和参数:

1. 和时间有关的选项:

共有 -atime, -ctime 和 -mtime ,以 -mtime 说明

-mtime n :n 为数字,意义为在 n 天之前的『一天之内』被变更过内容的文件;

-mtime +n :列出在 n 天之前(不含 n 天本身)被变更过内容的文件名;

-mtime -n :列出在 n 天之内(含 n 天本身)被变更过内容的文件名。

-newer file :file 为一个存在的档案,列出比 file 还要新的文件名

2. 和使用者或组名有关的参数:

-uid n :n 为数字,这个数字是用户癿账号 ID,亦即 UID ,这个 UID 是记录在 /etc/passwd 里面账号名称对应的数字。

-gid n :n 为数字,这个数字是组名的ID,亦卲 GID,这个 GID 记录在 /etc/group。

 -user name :name 为使用者账号名称喔!例如 tom 

-group name:name 为组名,例如 users ;

-nouser :寻找档案的拥有者不存在 /etc/passwd 的人

-nogroup :寻找档案的拥有群组不存在于 /etc/group 的档案! 当你自行安装软件时,很可能该软件的属性当中幵没有档案拥有者, 这是可能的!在这个时候,就可以使用 -nouser 和 -nogroup 搜寻。

3. 和档案权限及名称有关的参数:

-name filename:搜寻文件名为 filename 的档案;

-size [+-]SIZE:搜寻比 SIZE 还要大(+)或小(-)的档案。这个 SIZE 的规格有:

                   c: 代表 byte, k: 代表 1024bytes。所以,要找比 50KB 还要大的档案,就是『 -size +50k 』 -type TYPE :搜寻档案的类型为 TYPE 的,类型主要有:一般正规档案 (f), 装置档案 (b, c), 目录(d), 连结档 (l), socket (s), 及 FIFO (p) 等属性。

-perm mode :搜寻档案权限『刚好等于』 mode 的档案,这个 mode 为类似 chmod 的属性值,

举例来说, -rwsr-xr-x 的属性为 4755 !

         -perm -mode :搜寻档案权限『必须要全部囊括 mode 的权限』的档案,举例来说, 我们要搜寻 -rwxr--r-- ,亦即0744 的档案,使用 -perm -0744, 当一个档案的权限为 -rwsr-xr-x ,亦即 4755 时,也会被列出来, 因为 -rwsr-xr-x 的属性已经囊括了 -rwxr--r-- 的属性了。

         -perm +mode :搜寻档案权限『包含任一 mode 的权限』的档案,举例来说,我们搜寻 -rwxr-xr-x ,亦即 -perm +755 时,但一个文件属性为 -rw------- 也会被列出来,因为他有 -rw.... 的属性存在!

4. 额外可进行的动作:

-exec command :command 为其他指令,-exec 后面可再接额外的指令来处理搜寻到的结果。

-print :将结果打印到屏幕上,这个动作是预设动作!

               

  •  {} 代表癿是『由 find 找到的内容』,如上图所示,find 的结果会被放置到 {} 位置中;
  •  -exec 一直到 \; 是关键词,代表 find 额外动作的开始 (-exec) 到结束 (\;) ,在这中间癿就是 find 指令内的额外动作。 在本例中就是『 ls -l {} 』啰!
  • 因为『 ; 』在 bash 环境下是有特殊意义的,因此利用反斜杠来跳脱。

补充:

一个档案记录的时间参数有三种,分别是 access time(atime), status time (ctime), modification time(mtime),ls 默认显示的是 mtime。

  • 档案具有SUID的特殊权限时,代表当用户执行此一binary程序时,在执行过程中用户会暂时具有程序拥有者的权限
  •  目录具有SGID的特殊权限时,代表用户在这个目录底下新建的档案的群组都会与该目录的组名相同。
  • 目录具有SBIT的特殊权限时,代表在该目录下用户建立的档案叧有自己不root能够删除!

猜你喜欢

转载自my.oschina.net/liubaizi/blog/1634702