一、linux下的路径

Linux中的路径可以分为绝对路径相对路径,因为根据档名写法的不同,也可以将所谓的路径(path)定义为绝对路径(absolute)和相对路径(relative)。这两种文件名/路径的写法根据是这样的:

  •   绝对路径:由跟目录(/)开始起的文件或者目录名称,例如 /home/dmtais/.bashrc:   (绝对路径的写法一定是由 / 目录写起的
  •   相对路径:相对于目前路径的文件名写法。例如 ./home/dmtsai  或  ../ ../home/dmtsai  等。反正开头不是 / 属于相对路径的写法。(相对路径的写法不是由 / 目录写起的).
  •  .   :代表当前的目录,也可以使用  ./  来表示;
  •  ..   :代表上一层目录,也可以 ../ 来表示;

这个 . 与 .. 目录的概念是很重要的,你经常看到  cd .. 或  ./command 之类的指令下达方式,就是代表上一层与目前所在目录的工作状态,

例如:如何先进入到/var/spool/mail/目录,在进入到/var/spool/lpd/目录内?

$ cd /var/spool/mail/            ##进入到/var/spool/mail/下
$ cd ../lpd/                     ##返回上一层目录并进入lpd目录
$ cd ../..                       ##返回上边的两级目录回到/var目录下

 

 

 

二、目录的相关操作 

 

1、目录下的各种操作如下:

.            ##代表此层目录
..           ##代表上一层目录 
-            ##代表前一个工作目录
~            ##代表[目前用户身份]所在的加目录 
~redhat         ##代表redhat这个用户的加目录(redhat是个账号的名称)

需要注意到额是:在所有的 目录下都会存在的两个目录,分别是[  . ] 与 [ .. ] 分别代表此层和上层目录的意思。但是用  $ls  -al 去查询的时候可以看到两个目录确实是存在的,经过对目录权限的查看可以发现这两个目录的权限和属性是一样的,这代表着根目录的上一层(..)与自己的目录(.)是同一个目录

2、几个常见处理目录的指令:

  • cd :     变换目录
  • pwd :  显示当前的目录
  • mikdir :创建一个目录
  • rmdir   : 删除一个空目录 

 

3、pwd的使用方法 

$ pwd                  ##列出当前的目录(显示的是连结的方式)
$ pwd  -P              ##显示文件的真实路径

 

 

4、mkdir的使用方法 

$ mkdir westos                 ##创建westos
$ mkdir  -p test/redhat/yang   ##以递归的方式创建目录
$ mkdir  -m  752  bin          ##创建给新创建的目录添加权限   

 

5、rmdir删除空目录只有只能删除空目录

$ rmdir  test        ##删除单个目录
$ rmdir  -p   test/westos/redhat    ##如果存在多级目录只能用-p来进行删除

注:如果目录中有已经建立好的文件是不能用此命令去删除的

 

 

三、相关的执行文件的路径的变量:$PATH

1、当我们在执行一个命令的时候,举例来说 [ ls ] 好了,系统会依照PATH的设定去每个PATH定义的目录下搜寻文件名为 ls 的可执行文件,如果在PATH定义的目录中含有多个文件名为 ls 可执行文件,那么先搜寻到的同名指令被执行!

现在,请下达 [ echo $PATH ] 来看看到底哪些目录被定义出来? echo有 [显示、印出] 的意思,而PATH 前面的 $ 表示后面接的变量,所以会显示当前的 PATH !

$ echo $PATH                    ##查看当前路径的环境

PATH(一定是大写)这个变量的内容是由一推目录所组成的,每个目录中间用冒号来隔开,每个目录是有[顺序] 之分的,仔细看一下上面的输出,就可以发现无论是root还是dmtsai都有 /bin  或 /usr/bin 这个目录,这个目录在PATH 变量内,所以当然就能够在任何地方执行ls来找到/bin/ls 执行档,因为 /bin 在CentOS7 当中,就是连结到 /usr/bin 去的 !  所以这两个目录的内容一摸一样。

需要执行的命令必须放置在/usr/bin  或者 /usr/sbin  这两个目录下,不然正常的情况下是无法执行的,只有设置了。相应的环境变量之后才命令才能够生效,如果换成其他的目录。

实验的步骤 :

 

 

 

PATH用途总结:

  • 不同身份使用者预设的PATH不同,默认能够随意执行的指令也不同(root 与 dmtsai;
  • PATH是可以修改的;
  • 使用绝对路径或相对路径指定的文件名来执行,会比搜寻PATH来的正确。
  • 指令应该要放置到正确的目录下,执行才会比较方便。
  • 本目录(.)最好不要到PATH当中。

 

 

2、一般处理目录文件时常用到的一些命令,复制、删除与移动: cp 、rm、mv

  • cp 复制命令 

相关的参数选择:

-a     :相当于  -dr --preserve=all 的意思,至于 dr 请参考下列说明: (常用)

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

-f      :为强制 (force)的意思,若目标文件已存在且无法开启,则移除后再尝试一下。

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

-l      :进行硬式连结(hard link)的连结档建立,而非复制文件本身 

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

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

-s      :复制成为符号链接文件(symbolic link)

-u      :当源文件和现文件存在差异时才使用,一般做备份用。


 

  • rm 移除文件或目录 或更名
  • 选项参数:
  • -f  :就是 force的意思,忽略不存在的文件,不会出现警告讯息。
  • -i  : 互动模式,在删除前会询问使用者是否动作。
  • -r  :递归删除,最常见用在目录的删除,这里非常危险的选项。

 

3、获取路径的文件名与目录名称

每个文件的完整档名包括了前面的目录与最终的文件名,而每个档名的长度都可以达到255个字符,那么我们我hi如何知道那个式档名哪个是目录名?

 $ basename /usr/bin/sort       输出"sort"。

 $ basename ./include/stdio.h .h  输出"stdio"。

 为basename指定一个路径,basename命令会删掉所有的前缀包括最后一个slash(‘/’)字符,然后将字符串显示出来。

$ dirname /etc/sysconfig/network       输出为/etc/sysconfig
/etc/sysconfig

 

四、文件内容的查阅

如果我们要查阅一个文件的内容时,这里有相当多的指令可以使用,最常用的显示文件内容的指令是cat 与 more  以及less。相关的命令如下图所示。

  • cat   由第一开始显示文件内容。
  • tac   从最后一行开始显示,可以看出 tac 是 cat 的倒着写。
  • nl     显示的时候,顺道输出行号。
  • more  一页一页的显示文件的内容
  • less    与more类似,但是比more更好的是,他可以往前翻页。
  • head   只看几行
  • tail      只看文件后边的几行
  • od      以二进制的方式读取文件内容 
  • cat
$ cat  -A                 ##列出一些特殊的字符而不是空白而已

详细分析查看 cat  --help  

 

  • tac (反向示例)
  •  

 

  • nl (添加行号打印)
  • -b   : 指定行号的方式,主要有两种;

           -b   a :表示无论是否为空行,也同样列出行号(类似 cat -n);

           -b   t  : 如果空行,空的那一行要列出行号(默认值);

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

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

           -n   rn  : 行号在自己字段的最有方显示,且不加 0;

           -n   rz  :行号在自己字段的最右方显示,且加0;

 

 

五、可翻页检视

上述提到的nl 与 cat tac 等,都是一次性的将数据一口气显示到屏幕上面,如果想要一页页的翻,可以使用more,less命令。

在进行more命令的使用时下边是命令的使用方法:

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

Enter                       :代表向下翻 [ 一行 ]

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

:f                           :立刻显示出文件名以及目前显示的行数

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

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

例子:显示passwd文件中11到20行的内容,并显示行号。

$ head -n 20  /etc/passwd | tail  -n 20  | nl    ##先提取passwd的前20行的内容,再显示提取到的20行中后20行的内容,并显示行号。

 

  • od  (非纯文本文档)

上边所所述的是纯文本文档的内容,但是如果要查阅的是非文本文件,举例来说,例如/usr/bin/passwd 这个执行文档的内容时,又该如何去读出信息呢,由于执行档通常是binary file  使用上边提到的指令来读取其他的内容时,确实会产生类似乱码数据。

选项参数

-t    : 后边可以接各种 [类型 (TYPE)] 的输出,例如;

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

            c        : 使用 ASCII 字符来输出 

 

 

六、which和whereis查找命令所在的位置以及文件和目录所在的位置 

1、which命令的使用方法 

which   [指令]    ##查找与该指令完整的文件名

 

2、whereis命令的使用方法 

$ whereis  [-bmsu]   文件或目录名

选项与参数:

-l     :可以列出 whereis  回去查询的几个主要的目录而已

-b    :只找binary 格式的文件

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

-s     :只找 source 来源的文件 

-u     :搜寻不在上述三个目录当中的其他特殊文件 

$  whereis   ifconfig               ##查找ifconfig文件所在的路径 
$  whereis   passwd                 ##查找passwd文件所在的目录

whereis命令主要是针对/bin/sbin 底下的执行文档,以及 /usr/share/man 底下的 man page  文件,跟几个比较特特定的目录来处理而已,

 

3、locate / updatedb

选项与参数

-i    : 忽略大小写的差异

-c   :不输出档名,仅计算占到的文件的数量 

-l     : 仅输出几行的意思,例如输出五行 则是 -l  5

-S   : 输出 locate所使用的数据库文件的相关信息,包括该数据库记录的文件 / 目录量等

-r     :后面可接正规的显示方式 

(1)、让用户能进入成为[可工作目录]  的基本权限为何:

可使用的指令: 例如cd  等变换工作的指令。

目录所需权限:用户对于这个目录至少需要具有x权限

额外需求:如果用户想要在这个目录内利用 ls 查询文件名,则用户对此目录还需要 r 权限。

 

(2)、用户在某个目录内读取的基本权限为何?

可使用的指令:例如 cat  more  less 等等。

目录所需权限:用户对这个目录至少需要具有 x 权限等等。

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

该文件的存取模式(read/write/excute);

该文件的拥有者与群组(owner/group);

该文件的容量;

  • 该文件建立或状态改变的时间(ctime);
  • 最近一次读取的时间(atime);
  • 最近一次修改的时间(mtime);
  • 定义文特性的旗帜(flag);
  • 该文件真正内容的指向;

每日一学: 

$  uname   -r                    ## 查看系统的核心版本

$  uname   -m                  ## 查看操作系统的版本位  

 

 

 

 

 

 

 

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐