鸟哥的Linux私房菜笔记第六章-文件与目录管理(一)

目录与路径

相对路径与绝对路径

上一章简单的提到绝对路径和相对路径

绝对路径:路径的写法一定是由根目录(/)写起的,例如:/home/user 这个目录
相对路径:路径的写法不是由根目录(/)写起,例如:我当前所在目录 /home/user,我要切换到/home/user2 目录下。那么写法就是 cd ../user2,其实相对路径指的意思是:相对于当前目录的路径。


目录的相关操作

特殊的目录:

1
2
3
4
5
.   //代表当前目录
.. //代表上一次目录
- //代表前一个工作目录(其实就是上一个操作的目录)
~ //代表当前用户的家目录,例如当前用户是user,那么user的家目录就是在/home/user下
~username //代表用户名为username的用户的家目录。

常见的处理目录的指令

1
2
3
4
cd     //切换目录
pwd //显示当前目录
mkdir //创建目录
rmdir //删除空目录,注意是空目录!不空的目录后面再讲

简单指令用法如下

1
2
3
4
cd /home/user //使用绝对路径切换目录
pwd //显示当前所在目录,只会显示绝对路径
mkdir dir //创建一个名为dir的目录(可以理解为文件夹)
rmdir dir //删除一个名为dir的空目录

执行文件路径变量:$PATH

ls为查阅文件属性的指令,起对应完整文件名为:/bin/ls(这是绝对路径),那么为什么我们输入ls就会执行/bin/ls这个指令呢?这是因为环境变量PATH所致的。相当于我们Window下的环境变量path。

1
2
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文件,然后在文件的最下方加入:

1
2
3
export PATH=/home/vagrant:$PATH
///保存后执行
source ~/.bashrc

2.修改/etc/environment文件,直接使用vim命令在后面添加就可以了。

1
2
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 : 列出的文件或目录,一个占一行,并且显示文件的属性、权限等等数据。
使用方式如下:

1
ls -[options]

复制、删除与移动:cp,rm,mv

cp(复制文件或目录)
cp指令也非常重要,因为我们也经常进行文件的复制,所以也会常常用到这个指令。如果要去复制别人的文件,我们必须有read(读)权限。一般来说复制别人的文件后,该文件的拥有者就会变成自己的啦。
常用选项:
-i : 若文件已经存在时,询问是否需要覆盖文件。
-p : 把文件的属性(权限、用户、时间)一起复制过去。
-r :递归复制,例如复制非空的目录,就需要使用这个指令啦。

使用方式如下:

1
2
cp [-options] 源文件 目标文件
cp -i /usr/bin /tmp/bin //例子

**rm(移除文件和目录)** 选项: -f : 忽略不存在的文件,不会出现警告信息 -i : 执行删除动作时会询问你是否真的需要删除 -r : 递归删除,常用在目录的删除上,使用这命令要再三确认啊。危险!

使用方式如下:

1
rm [-options] 文件或目录

**mv(移动/更名 文件或目录)** 相似于window下的剪切和重命名操作。 选项: -f :如果文件已存在,不会询问而只是直接覆盖。 -i :如果文件已存在,则会询问是否需要覆盖。 -u :如果文件已存在,且复制的文件比已存在的文件新,就会覆盖。
1
2
mv -[options] 源文件 目标文件
mv /home/vagrant /tmp/vg //此命令就会把home下vagrant目录移动到tmp目录下,并且改名为vg啦。

扩展:其实更名还有一个命令,叫做rename。需要详细了解的话可以 man rename看一看。

Johnson wechat
这个是我的个人微信公众号,喜欢的我的文章的朋友可以关注一下,谢谢