目录与路径

来源:互联网 发布:csbte源码 编辑:程序博客网 时间:2024/05/18 07:48

目录与路径


相对路径的用途
相对路径与绝对路径由什么了不起阿,喝,那可真是了不起。假设你写了一个软件,这个软件共需要三个目录,分别是etc,bin,man这三个目录,然而由于不同的人喜欢安装在不同的目录之下,假设甲安扎安装的目录是/usr/local/packages/etc,/usr/local/packages/bin以及/usr/local/packages/man,不过乙喜欢安装在/home/packages/etc,/home/packages/bin,/home/packages/man这三个目录,请问如果需要用到绝对路径的话,那么是否很麻烦呢。
绝对路径的用途
但是对于档案名的正确性,却对路径的正确度比较好一点。一般来说,如果是在写程序(shell script)来管理系统的条件下,务必使用绝对路径的写法。因为绝对路径的写法虽然比较麻烦,但可以肯定的是这个写法绝对不会由问题。
目录的相关操作:
我们之前稍微提到切换目录的指令是cd,还有那些可以进行目录操作的相关指令呢。例如建立目录,删除目录之类的。但是,的要先知道,就是由那些比较特殊的目录呢?举例来说,底下就是比较特殊的目录:

这里写图片描述

需要特别注意的是:在所有目录底下都存在两个目录,分别是.和..,分别代表此层目录和上层目录的意思。

底下是我们常见几个处理目录的指令:

cd : 变换目录;
pwd : 显示当前的目录;
mkdir : 建立一个新目录;
rmdir : 删除一个目录;

cd (变换目录)
我们指代web这个用户的家目录是/home/web,而root家目录则是/root,假设我以root在linux系统中,那么简单的说明以下这几个目录的意义:

这里写图片描述

cd是Change Directory的缩写,这个是用来变换工作目录的指令。注意,目录名称与cd之间存在一个空格。一登入linux系统后,root会在root的家目录。那回到上一层目录可以用cd。利用相对路径的写法必须确认你目前的路径才能正确的去你想要去的目录。

其实,我们的提示字符,亦即那个[root@www]#当中,就已经指出了当前的 目录了,刚登陆的时候会到自己的家目录,而家目录还有一个代码,那就是

pwd (显示目前所在的目录)

这里写图片描述
这里写图片描述

pwd是Print Working Directory的缩写,也就是显示目前所在目录的指令。

mkdir (建立新目录)

这里写图片描述
这里写图片描述

rmdir (删除的目录)

这里写图片描述

关于执行文件路径的变量:$PATH

经过第 FHS 的说明后,我们知道查阅文件属性的指令 ls 完整文件名为:/bin/ls(这是绝对路径),那你会不会觉得很奇怪:『为什么我可以在任何地方执行/bin/ls 这个指令呢? 』 为什么我在任何目录下输入 ls 就一定可以显示出一些讯息而不会说找不到该 /bin/ls 指令呢? 这是因为环境变量 PATH 的帮助所致呀!

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

现在,请下达echo $PATH来看看到底由那些目录 被定义出来的。

这里写图片描述

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

例题:
请问你能不能使用一般身份使用者下达 ifconfig eth0 这个指令呢?
答:如上面的范例所示,当你使用 vbird 这个账号执行 ifconfig 时,会出现『-bash: ifconfig:command not found』的字样, 因为 ifconfig 的是放置到/sbin 底下,而由上表的结果中我们可以发现 vbird 的 PATH 并没有设置/sbin, 所以预设无法执行。但是你可以使用『/sbin/ifconfig eth0』来执行这个指令喔!因为一般用户还是可以使用ifconfig 来查询系统 IP 的参数, 既然 PATH 没有规范到/sbin,那么我们使用『绝对路径』也可以执行到该指令的!

而由上面的几个例题我们也可以知道几件事情:

  1. 不同身份使用者预设的PATH不同,默认能够随意执行的指令也不相同;
  2. PATH是可以修改的,所以一般使用者还可以透过修改PATH来执行某些位于/sbin或者/usr/sbin下的指令来查询;
  3. 使用绝对路径或者相对路径直接指定某个指令的文件名来执行,会比搜索PATH来的正确;
  4. 指令应该放在正确的目录下,执行起来才会比较方便;
  5. 本目录(.)最好不要放在PATH当中;

摘自鸟哥linux私房菜

0 0
原创粉丝点击