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…

【爬虫介绍】了解爬虫的魅力

爬虫 爬虫(Spider)是一种自动化程序,通过模拟人的行为,在互联网上收集、抓取和提取信息。爬虫通常用于网站数据抓取、搜索引擎索引、数据分析和挖掘等领域。 爬虫可以自动访问网页,按照预定的规则抓取网页上的文本、…

python-0009-django对数据的增删改

shell 在虚拟环境中,可以使用python manage.py shell,打开命令行。在命令行中,所见即所得,相当于执行代码片段 对象 from django.db import models# Create your models here.class BookInfo(models.Model):name models.CharF…

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

一、线性化 从上一篇文章小车倒立摆物理建模与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 等,方便用…

安卓UI面试题 51-55

51. 如何解决 Android手机圆角失效问题? 通过 background-clip:padding-box为失效的元素设置样式 52. 简述下面是属于 GLSurFaceView 特性的是 ? A、管理一个 surface,这个 surface 就是一块特殊的内存,能直接排版到 android 的视图view 上。 B、管理一个 EGL display,它…

Python中的增强现实(AR)技术和应用

增强现实(AR)是一种技术,它允许用户在真实环境中与虚拟物体进行交互。在Python中实现AR应用通常涉及使用专门的AR库和框架,这些库和框架提供了创建和渲染虚拟内容的工具。 一个流行的AR框架是ARKit(对于iOS设备&#…

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

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

Java技术栈 —— RBAC权限模型

什么是RBAC?全称为基于角色的访问控制(Role-Based Access Control),也就是不同角色权限不同。 参考文章或视频链接[1] 【【IT老齐217】简单粗暴讲解RBAC四级角色权限模型】[2] 【【IT老齐217】简单粗暴讲解RBAC四级角色权限模型】

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

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

70后姐妹上海创业,要IPO了

一种能与消费者高效互动的自动贩卖机,不仅于近日将一家上海公司送到港交所的门前,还让一对70后姐妹的身价超过13亿元。 在殷珏辉和妹妹殷珏莲的带领下,中国营销服务提供商趣致集团坐拥7543台自动贩卖机和超过5000万注册用户。通过为品牌方提…

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…

图像分割的定义

图像分割是将数字图像细分为多个图像子区域(像素的集合,也被称作超像素)的过程。这些子区域的形成是基于灰度、颜色、纹理、形状或其他图像特性的相似性准则。分割的最终目标是简化或改变图像的表示形式,使其成为更容易分析的形式…

Git 命令大全

GIT 命令 ### 新建代码库 ######################## # 在当前目录新建一个Git代码库 git init# 新建一个目录,将其初始化为Git代码库 git init [project-name]# 下载一个项目和它的整个代码历史 git clone [url]### 配置 ############################# # 显示当前…

创建和认识Ruby On Rails控制器

创建和认识Ruby On Rails控制器 我们都知道Ruby On Rails是一个MVC结构的框架。必然他的控制器,视图,数据都是分开的,我们将对他们进行分解,逐个了解他们。首先我们使用命令先创建一个控制器: 注意:控制器名…