目录与路径
相对路径与绝对路径
上一章简单的提到绝对路径和相对路径
绝对路径:路径的写法一定是由根目录(/)写起的,例如:/home/user 这个目录
相对路径:路径的写法不是由根目录(/)写起,例如:我当前所在目录 /home/user,我要切换到/home/user2 目录下。那么写法就是 cd ../user2,其实相对路径指的意思是:相对于当前目录的路径。
## 目录的相关操作 ###特殊的目录: ``` . //代表当前目录 .. //代表上一次目录 - //代表前一个工作目录(其实就是上一个操作的目录) ~ //代表当前用户的家目录,例如当前用户是user,那么user的家目录就是在/home/user下 ~username //代表用户名为username的用户的家目录。 ```
###常见的处理目录的指令 ``` cd //切换目录 pwd //显示当前目录 mkdir //创建目录 rmdir //删除空目录,注意是空目录!不空的目录后面再讲 ``` 简单指令用法如下 ``` cd /home/user //使用绝对路径切换目录 pwd //显示当前所在目录,只会显示绝对路径 mkdir dir //创建一个名为dir的目录(可以理解为文件夹) rmdir dir //删除一个名为dir的空目录 ```
##执行文件路径变量:$PATH ls为查阅文件属性的指令,起对应完整文件名为:/bin/ls(这是绝对路径),那么为什么我们输入ls就会执行/bin/ls这个指令呢?这是因为环境变量PATH所致的。相当于我们Window下的环境变量path。 ``` echo $PATH //打印PATH变量,$号后面接的是变量。 /home/vagrant/bin:/home/vagrant/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin ``` 可以看到每个目录中间用冒号(:)来隔开,每个目录都会有顺序之分。我们之所以可以执行ls命令,那是因为ls指令存在/bin目录下,我们可以看到$PATH有/bin这个目录,所以ls指令就可以直接执行啦。 例举常用添加环境变量的两种方式,需要把/home/vagrant添加到环境变量: 1.只对当前用户生效: 修改家目录下的 .bashrc文件,然后在文件的最下方加入: ``` export PATH=/home/vagrant:$PATH ///保存后执行 source ~/.bashrc ```
2.修改/etc/environment文件,直接使用vim命令在后面添加就可以了。
cat /etc/environment //查看该文件
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
# 文件与目录管理 文件与目录的管理,其实主要就是显示属性、复制、删除、移动等操作。 选项: ## 文件与目录的查看:ls `ls`可以说是最常用的指令了,而`ls`指令一些常用的选项如下: -a : 列出全部文件,包括隐藏文件(开头为 . 的文件) -d : 仅列出目录本身,而不列出目录内的文件数据 -l : 列出的文件或目录,一个占一行,并且显示文件的属性、权限等等数据。 使用方式如下: ``` ls -[options] ```
##复制、删除与移动:cp,rm,mv **cp(复制文件或目录)** `cp`指令也非常重要,因为我们也经常进行文件的复制,所以也会常常用到这个指令。如果要去复制别人的文件,我们必须有read(读)权限。一般来说复制别人的文件后,该文件的拥有者就会变成自己的啦。 常用选项: -i : 若文件已经存在时,询问是否需要覆盖文件。 -p : 把文件的属性(权限、用户、时间)一起复制过去。 -r :递归复制,例如复制非空的目录,就需要使用这个指令啦。
使用方式如下:
cp [-options] 源文件 目标文件
cp -i /usr/bin /tmp/bin //例子
**rm(移除文件和目录)** 选项: -f : 忽略不存在的文件,不会出现警告信息 -i : 执行删除动作时会询问你是否真的需要删除 -r : 递归删除,常用在目录的删除上,使用这命令要再三确认啊。危险!
使用方式如下:
rm [-options] 文件或目录
**mv(移动/更名 文件或目录)** 相似于window下的剪切和重命名操作。 选项: -f :如果文件已存在,不会询问而只是直接覆盖。 -i :如果文件已存在,则会询问是否需要覆盖。 -u :如果文件已存在,且复制的文件比已存在的文件新,就会覆盖。 ``` mv -[options] 源文件 目标文件 mv /home/vagrant /tmp/vg //此命令就会把home下vagrant目录移动到tmp目录下,并且改名为vg啦。 ``` 扩展:其实更名还有一个命令,叫做rename。需要详细了解的话可以 man rename看一看。