Linux篇 (3)文件,目录的有关操作

其实对于Linux来说,最重要的就是文件的操作,在Linux的世界中,一切皆文件,而Linux世界中的一切简单而存粹,世界的变动便是这些文件的变动,如果掌握了这些文件,就掌握了世界,而目录的操作,就像是世界的创造和毁灭,虽无法掌握每个世界的变迁,但是却可以直接创造或是毁灭,而既可以掌握世界,又可以创造或者毁灭世界的,便是Linux系统中的上帝,root用户,而root的权柄也来源于此

言归正传,对于我们程序员来说,当前工作目录是极为重要的东西,因为我们最终需要操作的是文件,而工作目录直接影响我们操作的文件对象,有以下几个标识符可以帮助我们快速定位工作目录

标识符含义
.当前目录
. .上一级目录
-之前的工作目录
~当前用户的用户目录
~用户名指定用户的用户目录

如果加上具体的指令,就可以极大方便我们的操作,比如加上cd就可以直接进行一些跳转,比如下面的例子,可以在两个目录中自由的跳转

cd ~用户名
cd -

在这里插入图片描述

下面是几个常见的控制目录的指令

指令效果
cd进入某个指定的文件夹中
pwd显示当前目录路径
mkdir创建目录
rmdir删除空目录

在这里插入图片描述
mkdir还有额外选项,我们可以通过-m -p选项让Linux创建目录时直接指定权限,以及自动创建父目录,就像下图一样,如果在默认情况下,我们想要直接创建嵌套目录,是会报错的,但是如果加上-p选项,就可以创建,因为在这种情况下,Linux会先帮我们创建父目录
在这里插入图片描述
而-m可以让我们在创建目录的同时指定权限,可以和下图一样,和-p一起使用
在这里插入图片描述
rmdir这个命令有些鸡肋,因为他只能对空目录进行操作,如果目录非空,即使里面没有文件,而是有另外一个空目录,也同样无法删除,这样确实可以避免误操作文件,但是局限性太大,虽然可以使用-p参数进行递归删除,但是依然很蠢,还是上面的问题,递归删除是从子目录依次向父目录进行删除,如果其中某个父目录不止一个空目录,那么在删除子目录并进入该该目录准备删除时会报错,并停止删除,还是无法对整个目录和子目录均为空进行删除,读者可以自行尝试一下
在这里插入图片描述

mkdir -p test/test/test
mkdir -p test/test1
rmdir -p test/test/test
cd test
cd test
cd test1

ls命令

对于ls这个命令,其实我们已经很熟悉了,无非是查询当前或是某个指定路径的文件信息,但是对于ls的可用属性还是有必要探讨一下,我看了一圈,就只说最常用的几个吧,其他的说实话确实没啥用╮(╯▽╰)╭,什么不显示颜色,打印精确时间,说实话,没啥用正常的 -l已经可以满足需求

属性效果
-l输出完整信息
-a输出隐藏文件和目录
-d仅输出当前目录的文件或目录(仅一个),不包括子目录下的文件

我们平时使用的常用命令,如,ls -al,其实包含两个意思

  1. 输出完整信息
  2. 输出隐藏文件和目录

ls -ld也是一样,只打印当前目录某个文件或目录的信息,可以帮助我们快速找到当前目录下的某个文件或目录,而避免打印大量相似文件,目录信息
在这里插入图片描述

cp命令

其实我个人觉得cp这个命令其实没啥好说的,参数有很多,但是核心思想就两条

  1. 只复制文件内容
  2. 将文件所有信息完整复制(备份)

所有参数都是围绕这两条进行的,而Linux的开发者估计也知道程序员们到底需要什么东西,所以特意推出了-a这个属性,将文件的所有信息一起复制,如果是文档,则递归复制,同样是复制所有信息,详细参数如下

属性作用
-a相当于-dr --preserve=all
-f强制复制,如果文件已存在,先删除再创建文件
-d若想要复制的文件是一个链接文件(快捷方式),复制快捷方式,而非真正的文件
-i若存在需要覆盖的情况,会先询问
-p将文件信息一同复制,而不使用默认的文件属性
-r递归复制(复制目录)
-s创建链接文件(快捷方式),而非文件本身
-u更新文件
–preserve=all除了-p里的文件信息,还有一些其他信息一起复制

首先让我们来聊一聊-f的原理,因为文件的覆盖本质上是修改文件属性,和内容,如果我们没有写入的权限,是无法对已经存在的文件进行覆盖的,但是如果拥有目录的w权限,就可以使用-f先删除文件,然后直接创建文件,从而跳过写入这一步,完成覆盖操作
在这里插入图片描述
此时如果我们切换root用户,将hh的用户目录权限改为555,并将test.javac重新改为555权限(已被之前的复制操作覆盖权限),查看
在这里插入图片描述
接下来我将-d和-s一起演示,首先使用-s创建一个快捷方式,再尝试复制test.x
在这里插入图片描述
在这里插入图片描述
加上-i和-d继续复制
在这里插入图片描述

rm命令

相对于cp繁杂而臃肿的属性,rm的属性显然要精简的多,仅仅3个属性就可以完成所有常用操作,不过这也正常,对于删除操作来说,也不需要繁杂的操作,无非是删除还是不删除罢了

属性作用
-f即忽略不存在的文件,继续执行删除操作
-i删除之前先询问
-r递归删除(删除目录)

可以看到,对于目录来说,rm是无法删除的,但是可以使用-r递归删除目录
在这里插入图片描述
-f就是很简单的忽略文件不存在错误提示
在这里插入图片描述

mv

虽然这是一个移动操作,类似于Windows中的剪切操作,但是在Linux中也用来进行重命名操作

属性作用
-f强制执行,若已经存在该文件,覆盖
-i覆盖之前先询问
-u更新

如,可以用下面这样的命令来进行重命名操作

mv test test01

将test重命名为test01

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值