Linux基本操作之路径的详解
一、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 ## 查看操作系统的版本位
更多推荐
所有评论(0)