Linux学习[7]目录文件深入&路径&改变目录&创建删除目录

前言

这篇博客写的是文件目录的相关操作,相比于这个学习系列的第二篇笔记,这篇博客会更加具体深入。


1. 路径

路径分为绝对路径和相对路径,不同的写法往往在便利性以及实用性上面有很大区别。绝对路径的写法虽然比较麻烦,但是可以肯定这个写法绝对不会有问题。 如果使用相对路径在程序当中,则可能由于你执行的工作环境不同,导致一些问题的发生。

1.1 绝对路径

绝对路径是指从根目录/开始,例如我们常用的/home/user
假如我们在/home/pi目录下,我们想要进入/var/log目录下,我们可以通过cd /var/log

1.2 相对路径

接着上面的例子,如果我们/home/pi目录下,我们使用相对目录的方式进入/var/log目录,就需要先用cd ..返回上一级目录,返回两次到根目录,再进入到目标目录。
相对路径可以在遇到长路径的情况下,使得目录的切换非常便利。

这里综合使用一下绝对路径和相对路径。
举个例子:
先进入/var/edwinwzy/chengche/目录,再进入到/var/edwinwzy/test/目录内,当前所在目录为根目录。

cd /var/edwinwzy/chengche
cd ..
cd test

1.3 PATH

这个PATH其实我们在在下载很多专业软件的时候都要用到,比如一些教程的环境变量,配置PATH路径之类的,这个PATH和linux中PATH其实效果是同一个东西。

PATH的作用
当我们在执行一个指令的时候,举例来说“ls”好了,系统会依照PATH的设置去每个PATH定义的目录下搜寻文件名为ls的可可执行文件, 如果在PATH定义的目录中含有多个文件名为ls的可可执行文件,那么先搜寻到的同名指令先被执行!
查看PATH的值
我们查看PATH的值可以通过echo $PATH,一般会输出如下情况:

/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

PATH这个变量(一定是大写)的内容是由一堆目录所组成的,每个目录中间用冒号:来隔开, 每个目录是有“顺序”之分的。仔细看一下上面的输出,有/bin 或 /usr/bin 这个目录在PATH变量内,所以当然就能够在任何地方执行ls来找到/bin/ls可执行文件。

总结一下就是,当我们使用ls,gcc,gdb这种指令的时候,系统都是通过环境变量里面的路径去找可执行文件,直接调用。

以下是几个注意点:
1.不同身份使用者默认的PATH不同,默认能够随意执行的指令也不同(如管理员root与用户user);
2.PATH是可以修改的;
3.使用绝对路径或相对路径直接指定某个指令的文件名来执行,会比搜寻PATH来的正确;
4.指令应该要放置到正确的目录下,执行才会比较方便;
5.本目录(.)最好不要放到PATH当中。


2. 目录的相关操作

2.1 特殊目录

笔者在linux的目录操作中,其实最常接触到的大概就是cd ..,这里..是一种特殊目录,后来在看书的过程中看到了很多的特殊目录,经过熟练运用,发现在使用时还是非常便利的,这里做个归纳。

目录符号含义
.当前目录
. .上一层目录
-代表前一个工作目录
~代表当前用户的主目录
~account代表account用户所在的主目录

2.2 目录操作指令

2.2.1 cd 改变目录路径

cd即change directory,变换目录。
cd指令平常用的多,这里就不做过多的演示了。
举几个我之前没用过的例子:
例如之前我之前在/home/pi/dirA/dirB/dirC目录中,我想返回pi目录,只有两种方式。一种是直接用绝对路径cd /home/pi,另一种是用几次相对路径cd ..
不管怎么说,这样都相对稍微繁琐了些,知道了特殊目录,我直接一个cd ~,爽歪歪~

再举一个例子:
当我使用cd命令进入一个很长的目录进行A操作,比如/pi/testdirA/testdirB/testdirC,我的当前目录为/root/testdirA/testdirB/testdirC,当我完成A操作之后我需要返回原始的目录,这时候相比于使用相对路径和绝对路径,我使用cd -,直接返回前一个工作目录就非常方便。

cd小技巧
用到cd命令的时候,其实对于文件名称比较长的情况,我们可以输入文件名的前几个首字母,然后按tab进行自动补全。

举个例子:
比如我们想要打开当前目录的aabbxswsdfgafexz文件(乱打的,举个特例),我们使用cd aabb命令,之后用tab键进行补全,再按回车,就会自动补齐后面所有的文件。当然如果存在多个文件开头为aabb这种,tab可能会失灵,你需要再输入几个对应的首字符,
比如把xs也输入进去:cd aabbxs+tab


2.2.2 pwd显示当前目录

pwd是Print Working Directory的缩写,也就是显示目前所在目录的指令。
其实正常情况使用该命令就会把你当前所在的目录打印出来,这里有个选项-P,之前用的时候很少。看书的时候遇到了,所以就做一个记录。

举个例子:我们当前在/home/pi/testA目录下,我们使用pwd指令应该是输出这个对应的目录,但如果testA其实是/root/edwinwzy/testA的一个软链接(也就是快捷方式&不明白软链接可参考这个),那么我们可以通过添加-P方式,即pwd -P,得到这个链接对应的实际目录,而不是链接文件的路径来显示。


2.2.3 mkdir 创建目录

目录的创建最简单最常用的指令在我这个系列的第二节有提到过,这里做一个深入。

mkdir 选项 目录名称
选项与参数:
-m :设置文件的权限喔!直接设置,不需要考虑默认权限(unmask)
-p :帮助你直接将所需要的目录(包含上层目录)递回创建起来

分别举例说明两个参数的情况:
关于-m
我们创建一个testA文件,让这个文件的拥有者,同组用户,其他用户分别拥有:读写执行,读,读权限,那么对应的数值应该为744(至于为什么请参考这个链接

那用指令进行创建即为:mkdir -m 744 testA
我们可以通过ls -al查看testA对应的权限。

关于-p
我们在windows平台下安装软件的时候,有个选择安装目录的情况,这时候比如我们想把文件放到
D:\Tools\Linux\Test\testA下,但是其实D盘的Linux文件下没有Test以及其从目录testA,但是我们选这个路径之后,系统自动给我们创建并且安装。

类比到linux中,如果我们输入mkdir test1/test2/test3/test4,但是目录其实只到test1,那么这里会报错
mkdir: cannot create directory ‘test1/test2/test3/test4’: No such file or directory
但是当我们加上-P选项后这个错误就不存在了。系统会自动创建test4的所有上层目录。


2.2.4 rmdir 删除目录

rmdir即remove directory的缩写。
rmdir 选项 目录名
rmdir的选项也是-P,类似的用法是也mkdir类似,效果是删除所要删除的目录以及上层目录。

假设我们直接删除非空目录testA:rmdir testA,会报错
rmdir: failed to remove ‘testA’: Directory not empty
但如果testA中有空子目录testB,我们可以通过下面的指令把testA删除。
rmdir -p testA/testB
利用 -p 这个选项,立刻就可以将 testA/testB 一次删除~
不过要注意的是,这个 rmdir 仅能“删除空的目录”,就是删完testB之后,testA目录下也没有任何文件了,那么testA目录也为空,也一起被删了。


这篇博客是对前面的文件部分的一个补充,也是自己linux体系的一次完善。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

澄澈i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值