前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【Linux 常用指令 文件和目录操作篇 】—— 成为终端高手的必经之路

【Linux 常用指令 文件和目录操作篇 】—— 成为终端高手的必经之路

作者头像
换一颗红豆
发布2025-01-24 11:10:19
发布2025-01-24 11:10:19
9400
代码可运行
举报
运行总次数:0
代码可运行

1、ls指令

  • ls: 列出当前目录内容
代码语言:javascript
代码运行次数:0
运行
复制
 [root@iZbp1dkpw5hx2lyh7vjopaZ ~]# ls
Lesson
  • ls -l:显示详细信息(权限、大小、修改时间等)。
代码语言:javascript
代码运行次数:0
运行
复制
[root@iZbp1dkpw5hx2lyh7vjopaZ ~]# ls -l
total 4
drwxr-xr-x 3 root root 4096 Jan 14 17:24 Lesson
  • ls -a:显示所有文件,包括隐藏文件(以.开头的文件)。
代码语言:javascript
代码运行次数:0
运行
复制
[root@iZbp1dkpw5hx2lyh7vjopaZ ~]# ls -a
.  ..  .bash_logout  .bash_profile  .bashrc  .cache  .cshrc  Lesson  .pip  .pydistutils.cfg  .ssh  .tcshrc  .viminfo
  • ls -a -l:显示所有文件的详细信息
代码语言:javascript
代码运行次数:0
运行
复制
[root@iZbp1dkpw5hx2lyh7vjopaZ ~]# ls -a -l
total 52
dr-xr-x---.  6 root root 4096 Jan 14 17:25 .
dr-xr-xr-x. 18 root root 4096 Jan 14 16:38 ..
-rw-r--r--.  1 root root   18 Dec 29  2013 .bash_logout
-rw-r--r--.  1 root root  176 Dec 29  2013 .bash_profile
-rw-r--r--.  1 root root  176 Dec 29  2013 .bashrc
drwx------   3 root root 4096 Jun 28  2024 .cache
-rw-r--r--.  1 root root  100 Dec 29  2013 .cshrc
drwxr-xr-x   3 root root 4096 Jan 14 17:24 Lesson
drwxr-xr-x   2 root root 4096 Jun 28  2024 .pip
-rw-r--r--   1 root root  206 Jan 14 16:38 .pydistutils.cfg
drwx------   2 root root 4096 Jun 28  2024 .ssh
-rw-r--r--.  1 root root  129 Dec 29  2013 .tcshrc
-rw-------   1 root root  674 Jan 14 17:25 .viminfo

2、pwd指令

  • pwd :显示当前所处工作目录的绝对路径
代码语言:javascript
代码运行次数:0
运行
复制
 [root@iZbp1dkpw5hx2lyh7vjopaZ ~]# pwd
/root

Linux目录结构

学习cd指令前,我们需要了解Linux下的树状目录结构

一切皆文件
一切皆文件

/ (根目录)下使用 ls 命令,可以看到如下目录

代码语言:javascript
代码运行次数:0
运行
复制
[root@iZbp1dkpw5hx2lyh7vjopaZ /]# ls -a -l
total 68
dr-xr-xr-x. 18 root root  4096 Jan 14 16:38 .
dr-xr-xr-x. 18 root root  4096 Jan 14 16:38 ..
-rw-r--r--   1 root root     0 Jun 28  2024 .autorelabel
lrwxrwxrwx.  1 root root     7 Jun 28  2024 bin -> usr/bin
dr-xr-xr-x.  5 root root  4096 Jun 28  2024 boot
drwxr-xr-x  19 root root  2980 Jan 14 16:40 dev
drwxr-xr-x. 80 root root  4096 Jan 14 16:50 etc
drwxr-xr-x.  2 root root  4096 Apr 11  2018 home
lrwxrwxrwx.  1 root root     7 Jun 28  2024 lib -> usr/lib
lrwxrwxrwx.  1 root root     9 Jun 28  2024 lib64 -> usr/lib64
drwx------.  2 root root 16384 Jun 28  2024 lost+found
drwxr-xr-x.  2 root root  4096 Apr 11  2018 media
drwxr-xr-x.  2 root root  4096 Apr 11  2018 mnt
drwxr-xr-x.  2 root root  4096 Apr 11  2018 opt
dr-xr-xr-x  95 root root     0 Jan 14 16:38 proc
dr-xr-x---.  6 root root  4096 Jan 15 02:22 root
drwxr-xr-x  26 root root   780 Jan 14 16:50 run
lrwxrwxrwx.  1 root root     8 Jun 28  2024 sbin -> usr/sbin
drwxr-xr-x.  2 root root  4096 Apr 11  2018 srv
dr-xr-xr-x  13 root root     0 Jan 17 08:51 sys
drwxrwxrwt.  8 root root  4096 Jan 17 03:20 tmp
drwxr-xr-x. 13 root root  4096 Jun 28  2024 usr
drwxr-xr-x. 19 root root  4096 Jun 28  2024 var

以下是对这些目录的解释:

Linux树状目录结构
Linux树状目录结构
  • /bin: bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。
  • /boot: 这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。
  • /dev : dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。
  • /etc: etc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。
  • /home: 用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,如上图中的 alice、bob 和 eve。
  • /lib: lib 是 Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。
  • /lost+found: 这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
  • /media: linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。
  • /mnt: 系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了。
  • /opt: opt 是 optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
  • /proc: proc 是 Processes(进程) 的缩写,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。 这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器: echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
  • /root: 该目录为系统管理员,也称作超级权限者的用户主目录。
  • /sbin: s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序。
  • /srv: 该目录存放一些服务启动之后需要提取的数据。
  • /sys:这是 Linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs 。 sysfs 文件系统集成了下面3种文件系统的信息:针对进程信息的 proc 文件系统、针对设备的 devfs 文件系统以及针对伪终端的 devpts 文件系统。该文件系统是内核设备树的一个直观反映。当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。
  • /tmp: tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的。
  • /usr: usr 是 unix system resources(unix 系统资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。
  • /usr/bin: 系统用户使用的应用程序。
  • /usr/sbin: 超级用户使用的比较高级的管理程序和系统守护程序。
  • /usr/src: 内核源代码默认的放置目录。
  • /var: var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
  • /run: 是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run目录,应该让它指向 run。

路径的认识:

  • Linux系统中,磁盘上的文件和目录被组成⼀棵目录树,每个节点都是目录或文件
  • 其中普通文件⼀定是目录树的叶子节点
  • 目录可能是叶子(空目录), 也可能是路上节点
  • 理解路径存在的意义: 树状组织方式,都是为了保证快速定位查找到指定的文件,而定位文件就需要具有唯⼀性的方案来定位文件。其中任何⼀个节点,都只有⼀个父节点,所以,从根目录开始,定位指定文件,路径具有唯⼀性
  • 绝对路径:⼀般从/开始,不依赖其他目录的定位文件的方式
  • 相对路径:相对于当前用户所处目录,定位文件的路径方式
  • 绝对路径⼀般不会随着用户的路径变化而丧失唯⼀性,⼀般在特定服务的配置文件中经常被使用
  • 相对路径因为它的便捷性,⼀般在命令行中使用较多
Linux目录结构
Linux目录结构

3、cd指令

  • cd ~ 返回家目录
代码语言:javascript
代码运行次数:0
运行
复制
 [root@iZbp1dkpw5hx2lyh7vjopaZ Winter]# pwd
/root/Lesson/Practice/Winter
[root@iZbp1dkpw5hx2lyh7vjopaZ Winter]# cd ~
[root@iZbp1dkpw5hx2lyh7vjopaZ ~]# pwd
/root
  • cd /path/to/directory进入指定目录。
代码语言:javascript
代码运行次数:0
运行
复制
 [root@iZbp1dkpw5hx2lyh7vjopaZ ~]# pwd
/root
[root@iZbp1dkpw5hx2lyh7vjopaZ ~]# cd Lesson/Practice/Winter/day1
[root@iZbp1dkpw5hx2lyh7vjopaZ day1]# pwd
/root/Lesson/Practice/Winter/day1
  • cd ..返回上一级目录。
代码语言:javascript
代码运行次数:0
运行
复制
 [root@iZbp1dkpw5hx2lyh7vjopaZ day1]# pwd
/root/Lesson/Practice/Winter/day1
[root@iZbp1dkpw5hx2lyh7vjopaZ day1]# cd ..
[root@iZbp1dkpw5hx2lyh7vjopaZ Winter]# pwd
/root/Lesson/Practice/Winter
[root@iZbp1dkpw5hx2lyh7vjopaZ Winter]# cd ..
[root@iZbp1dkpw5hx2lyh7vjopaZ Practice]# pwd
/root/Lesson/Practice
[root@iZbp1dkpw5hx2lyh7vjopaZ Practice]# cd ..
[root@iZbp1dkpw5hx2lyh7vjopaZ Lesson]# pwd
/root/Lesson

Linux文件概览

在 Linux 系统中,文件是信息存储和管理的核心。Linux 的文件系统具有高度的结构化和层次化,所有的资源(包括硬件、目录、设备等)都被视为文件或文件的形式进行管理。理解 Linux 下的文件,有助于更好地掌握系统操作和管理。概括为一句话就是,Linux下一切皆文件!

一切皆文件
一切皆文件

文件类型:

  • 普通文件 : 最常见的文件类型,用于存储文本、数据或程序代码。 标识:通常以 - 开头 示例:文本文件、图片文件、可执行文件等。
代码语言:javascript
代码运行次数:0
运行
复制
-rw-r--r-- 1 root root 0 Jan 14 17:25 test.c
  • 目录文件: 存储其他文件或目录的文件类型。目录本身不存储数据,而是存储文件的名称和路径信息。 标识:以 d 开头。 示例:
代码语言:javascript
代码运行次数:0
运行
复制
drwxr-xr-x 3 root root 4096 Jan 14 17:24 Lesson

文件权限: Linux 使用文件权限来控制用户对文件的访问。每个文件都有三个级别的访问控制:

  • 拥有者权限(User):文件的创建者或所有者对文件的控制权限。
  • 所属组权限(Group):文件所属组的成员对文件的控制权限。
  • 其他用户权限(Others):系统中所有其他用户对文件的控制权限。

每个级别的权限有三种类型:

  • 读权限(r):允许查看文件内容。
  • 写权限(w):允许修改文件内容。
  • 执行权限(x):允许执行文件(如果是可执行文件)。 例如:
代码语言:javascript
代码运行次数:0
运行
复制
[root@iZbp1dkpw5hx2lyh7vjopaZ day1]# ll
total 16
-rwxr-xr-x 1 root root 8360 Jan 17 10:28 test
-rw-r--r-- 1 root root   76 Jan 17 10:22 test.c

时间戳

时间戳是指某个事件发生的特定时间点的记录,通常以一定的格式表示。它在计算机系统中被广泛用于跟踪文件的修改、访问、创建等操作的时间。

在 Linux 中,时间戳通常与文件相关联,用来表示文件的三个主要时间信息:

  • 访问时间(Access Time, atime) 定义:文件上次被访问的时间。访问可以是读取文件内容、执行文件(如果它是可执行文件)等。 用途:访问时间用于表示文件的“最后读取”时刻。比如,当你查看文件内容时,文件的访问时间会被更新。
  • 修改时间(Modify Time, mtime) 定义:文件内容最后一次被修改的时间。 用途:修改时间记录的是文件内容被改变的时刻。无论是对文件内容的编辑、重写还是替换,都会更新该时间。
  • 状态更改时间(Change Time, ctime) 定义:文件的元数据(如权限、所有者等)最后一次被修改的时间。注意,ctime 记录的是文件的“状态”变化,而不是文件内容的变化。 用途:状态更改时间用于记录文件属性的变化。例如,当你修改文件的权限、所有者或文件名时,ctime 会发生变化。

时间戳在文件中的表现形式: Linux 系统中的文件通常会有三个时间戳(atime、mtime、ctime),可以通过 stat 命令查看这些时间戳。 例如: 使用stat 查看时间戳:

代码语言:javascript
代码运行次数:0
运行
复制
[root@iZbp1dkpw5hx2lyh7vjopaZ day1]# stat test.c
  File: ‘test.c’
  Size: 76        	Blocks: 8          IO Block: 4096   regular file
Device: fd01h/64769d	Inode: 922584      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2025-01-17 10:28:08.614020812 +0800
Modify: 2025-01-17 10:22:13.117799536 +0800
Change: 2025-01-17 10:22:13.119799610 +0800
 Birth: -

时间戳的用途:

  • 文件管理:可以根据时间戳来查看和管理文件的历史版本或修改记录。
  • 备份系统:时间戳用于跟踪文件的修改,帮助自动化备份系统判断文件是否发生变化,从而只备份修改过的文件。
  • 安全审计:通过检查文件的修改时间,可以识别文件是否被非法篡改或访问。
  • 日志文件:系统日志、访问日志等通常会使用时间戳来记录每个事件的发生时间。

时间戳格式: 在计算机中,时间戳通常以数字格式存储,表示从某个基准时间(通常是 Unix 时间戳自 1970 年 1 月 1 日 00:00:00 UTC 到当前时间的秒数)经过的秒数。 例如: Unix 时间戳:这是一个自 1970 年 1 月 1 日(即 Unix 纪元)起的秒数。 比如,Unix 时间戳 1622541300 表示的是 2021 年 6 月 1 日 10:35:00 UTC。

4、touch指令

创建空文件:

  • 如果文件不存在,touch 可以用来创建一个新的空文件
代码语言:javascript
代码运行次数:0
运行
复制
touch log.txt
  • 如果 log.txt 文件不存在,touch 会在当前目录中创建一个空文件。
  • 如果文件已经存在,touch 会更新文件的时间戳(即修改时间和访问时间),但不会修改文件内容。

更新文件的时间戳:

  • 当你执行 touch 命令时,它会更新文件的访问时间(atime)和修改时间(mtime)为当前系统时间
  • 访问时间(atime):文件的最后访问时间。当文件内容被读取时,atime 会更新。
  • 修改时间(mtime):文件的最后修改时间。当文件内容被修改时,mtime 会更新。

设置文件的时间戳:

  • touch 还允许你设置文件的时间戳,而不仅仅是使用当前时间。使用 -t 选项,可以为文件设置特定的时间戳

时间格式为:[[CC]YY]MMDDhhmm[.ss],其中:

  • CC:世纪(可选)
  • YY:年份
  • MM:月份
  • DD:日期
  • hh:小时
  • mm:分钟
  • ss:秒(可选)
代码语言:javascript
代码运行次数:0
运行
复制
touch -t 202301011200.00 log.txt

这条命令会将 log.txt 文件的时间戳设置为 2023 年 1 月 1 日 12:00:00。

创建多个文件:

  • touch也允许一次性创建多个空文件,只需要将多个文件名作为参数传递给 touch
代码语言:javascript
代码运行次数:0
运行
复制
[root@iZbp1dkpw5hx2lyh7vjopaZ day1]# touch log1.txt log2.txt log3.txt
[root@iZbp1dkpw5hx2lyh7vjopaZ day1]# ls -l
total 16
-rw-r--r-- 1 root root    0 Jan 17 12:00 log1.txt
-rw-r--r-- 1 root root    0 Jan 17 12:00 log2.txt
-rw-r--r-- 1 root root    0 Jan 17 12:00 log3.txt
-rwxr-xr-x 1 root root 8360 Jan 17 10:28 test
-rw-r--r-- 1 root root   76 Jan 17 10:22 test.c

5、 mkdir指令

mkdir是 Linux 中用于创建目录的命令。使用 mkdir 可以创建新的目录,从而帮助组织文件。

创建单个目录:

代码语言:javascript
代码运行次数:0
运行
复制
[root@iZbp1dkpw5hx2lyh7vjopaZ day1]# mkdir Lesson1
[root@iZbp1dkpw5hx2lyh7vjopaZ day1]# ls -l
total 4
drwxr-xr-x 2 root root 4096 Jan 17 12:16 Lesson1

创建多层目录(递归创建):

  • 使用 -p 选项,可以一次性创建多层目录,即使父目录不存在,mkdir 也会自动创建它们
代码语言:javascript
代码运行次数:0
运行
复制
[root@iZbp1dkpw5hx2lyh7vjopaZ day1]# mkdir -p  Lesson2/Practice/day1
[root@iZbp1dkpw5hx2lyh7vjopaZ day1]# tree Lesson2
Lesson2
└── Practice
    └── day1

2 directories, 0 files
  • 如果 Lesson/Practice/目录已经存在,则 mkdir 会创建 day1目录。如果某一部分路径不存在,-p 选项会让 mkdir 先创建缺失的父目录

创建多个目录:

  • 你可以一次性创建多个目录,只需在命令中列出多个目录名
代码语言:javascript
代码运行次数:0
运行
复制
[root@iZbp1dkpw5hx2lyh7vjopaZ day1]# mkdir Lesson1 Lesson2 Lesson3 
[root@iZbp1dkpw5hx2lyh7vjopaZ day1]# ls -l
total 12
drwxr-xr-x 2 root root 4096 Jan 17 12:49 Lesson1
drwxr-xr-x 2 root root 4096 Jan 17 12:49 Lesson2
drwxr-xr-x 2 root root 4096 Jan 17 12:49 Lesson3

6、tree指令

tree 命令用于以树形结构展示目录和文件

  • tree: 显示当前目录及其子目录
代码语言:javascript
代码运行次数:0
运行
复制
[root@iZbp1dkpw5hx2lyh7vjopaZ ~]# tree Lesson
Lesson
└── Practice
    └── Winter
        └── day1
            ├── Lesson1
            ├── Lesson2
            └── Lesson3
            
6 directories, 0 files
  • tree -L <level>: 限制显示的目录深度。例如,tree -L 2 只显示最多两层目录
代码语言:javascript
代码运行次数:0
运行
复制
[root@iZbp1dkpw5hx2lyh7vjopaZ ~]# tree -L 2
.
└── Lesson
    └── Practice
    
2 directories, 0 files
  • tree -a: 显示隐藏文件
代码语言:javascript
代码运行次数:0
运行
复制
[root@iZbp1dkpw5hx2lyh7vjopaZ ~]# tree -a
.
├── .bash_history
├── .bash_logout
├── .bash_profile
├── .bashrc
├── .cache
│   └── pip
│       ├── http
│       │   ├── b
│       │   │   └── b
│       │   │       └── 8
│       │   │           └── 7
│       │   │               └── 6
│       │   │                   └── bb876b2e6a22c2739002e9ef3388ae978b7a6192a19fe67d8b0030f2
│       │   └── f
│       │       └── e
│       │           └── d
│       │               └── 0
│       │                   └── e
│       │                       └── fed0ed508030b766d5b0c2792132c8bf197804464765b46b361f93a4
│       └── selfcheck.json
├── .cshrc
├── Lesson
│   └── Practice
│       └── Winter
│           └── day1
│               ├── Lesson1
│               ├── Lesson2
│               └── Lesson3
├── .pip
│   └── pip.conf
├── .pydistutils.cfg
├── .ssh
│   └── authorized_keys
├── .tcshrc
└── .viminfo

22 directories, 13 files
  • tree -d: 只显示目录,不显示文件
代码语言:javascript
代码运行次数:0
运行
复制
[root@iZbp1dkpw5hx2lyh7vjopaZ ~]# tree -d 
.
└── Lesson
    └── Practice
        └── Winter
            └── day1
                ├── Lesson1
                ├── Lesson2
                └── Lesson3

7 directories
  • tree -F: 显示文件类型后缀(如 / 表示目录,* 表示可执行文件)
代码语言:javascript
代码运行次数:0
运行
复制
[root@iZbp1dkpw5hx2lyh7vjopaZ ~]# tree -F
.
└── Lesson/
    └── Practice/
        ├── test.cpp
        └── Winter/
            └── day1/
                ├── Lesson1/
                │   ├── log.txt
                │   ├── test*
                │   └── test.c
                ├── Lesson2/
                └── Lesson3/

7 directories, 4 files

7、rm指令

rm 是 Linux 中用 删除文件和目录 的命令。它是一个非常强大的命令,使用时需要小心,因为一旦删除,文件通常不能恢复。

基本语法:

  • rm [选项] 文件/目录

删除单个文件:

代码语言:javascript
代码运行次数:0
运行
复制
[root@iZbp1dkpw5hx2lyh7vjopaZ Practice]# rm test.cpp
rm: remove regular empty file ‘test.cpp’? y
  • 输入y后该命令会删除 test.cpp 文件

删除多个文件:

代码语言:javascript
代码运行次数:0
运行
复制
[root@iZbp1dkpw5hx2lyh7vjopaZ Lesson1]# rm log.txt test test.c
rm: remove regular empty file ‘log.txt’? y
rm: remove regular file ‘test’? y
rm: remove regular file ‘test.c’? y
  • 这个命令会删除 log.txt、test 和 test.cpp 文件。

递归删除目录及其内容: (-r 或 -R)

  • 如果需要删除目录及其内部内容,可以使用 -r(递归)选项:
代码语言:javascript
代码运行次数:0
运行
复制
[root@iZbp1dkpw5hx2lyh7vjopaZ day1]# cd ..
[root@iZbp1dkpw5hx2lyh7vjopaZ Winter]# rm -r day1
rm: descend into directory ‘day1’? y
rm: remove directory ‘day1/Lesson1’? y
rm: remove directory ‘day1/Lesson3’? y
rm: remove directory ‘day1/Lesson2’? y
rm: remove directory ‘day1’? y
  • 这会删除 day1 目录及其内部的所有文件和子目录。

强制删除文件或目录 (-f) :

  • 使用 -f 选项可以强制删除文件或目录,不会提示确认,且即使文件不存在也不会报错

递归并强制删除 (-rf 或 -fr) :

  • 使用 -rf 选项可以递归并强制删除目录及其中的所有内容:
代码语言:javascript
代码运行次数:0
运行
复制
[root@iZbp1dkpw5hx2lyh7vjopaZ Lesson]# rm -rf Practice

删除空目录 (-d) :

  • 使用 -d 选项可以删除空目录:
  • 只会删除空的目录,如果目录内有文件或其他目录,会提示错误
代码语言:javascript
代码运行次数:0
运行
复制
[root@iZbp1dkpw5hx2lyh7vjopaZ Practice]# rm -d Winter
rm: remove directory ‘Winter’? y

注意:

  • rm 命令是 不可恢复的操作。一旦删除文件或目录,它们不会放入回收站,也无法通过普通方法恢复。
  • 在使用 rm -rf 时要非常小心,因为它会删除目录及其所有内容,没有任何确认步骤。

8、cp指令

cp 命令是 Linux系统中用于复制文件和目录 的命令。它是非常基础且常用的文件管理命令之一,用于复制文件或目录到指定的位置。

基本语法:

  • cp [选项] 源文件 目标文件 源文件/目录:要复制的文件或目录。 目标文件/目录:复制到的位置。

复制单个文件:

代码语言:javascript
代码运行次数:0
运行
复制
cp test.cpp dst
  • 这条命令会将 test.cpp文件复制到 dst,如果目标是一个目录,源文件会被复制到该目录下。

复制多个文件到指定目录:

代码语言:javascript
代码运行次数:0
运行
复制
cp test1.cpp test2.cpp test3.cpp dst
  • 这条命令会将 test1.cpp test2.cpp test3.cpp文件复制到dst目录中。

递归复制目录 (-r ) : 使用 -r(递归)选项,可以复制目录及其内容(包括子目录和文件):

代码语言:javascript
代码运行次数:0
运行
复制
cp -r src dst
  • 这条命令会将 src 目录及其所有内容递归复制到 dst。

交互式复制 (-i) :

  • 使用 -i 选项,当目标文件已存在时,cp 会询问是否覆盖文件,避免不小心覆盖重要文件:
代码语言:javascript
代码运行次数:0
运行
复制
[root@iZbp1dkpw5hx2lyh7vjopaZ Lesson]# cp -i test1.cpp test2.cpp
cp: overwrite ‘test2.cpp’? y
  • 如果 dst 已经存在,系统会提示确认是否覆盖

强制复制 (-f) :

  • 使用 -f 选项可以强制覆盖目标文件,不会询问确认:
代码语言:javascript
代码运行次数:0
运行
复制
cp -f src dst

保留文件属性 (-p) :

  • 使用 -p 选项复制文件时,会保留文件的原有属性,如修改时间、访问时间、权限等:
代码语言:javascript
代码运行次数:0
运行
复制
cp -p src dst

显示复制过程 (-v):

  • 使用 -v(verbose)选项,cp 会显示详细的复制过程,显示正在复制的文件名:
代码语言:javascript
代码运行次数:0
运行
复制
[root@iZbp1dkpw5hx2lyh7vjopaZ Lesson]# cp -v test1.cpp test2.cpp
cp: overwrite ‘test2.cpp’? y
‘test1.cpp’ -> ‘test2.cpp’

9、mv指令

mv(move)命令是 Linux 系统中用于 移动文件或目录 的命令,也可以用于 重命名文件或目录。

基本语法:

代码语言:javascript
代码运行次数:0
运行
复制
mv [选项] 源文件/目录 目标文件/目录

移动文件到指定目录:

代码语言:javascript
代码运行次数:0
运行
复制
mv srcfile  /path/to/destination/
  • 这会将 源文件src 移动到 /path/to/destination/ 指定目录。

重命名文件:

代码语言:javascript
代码运行次数:0
运行
复制
mv old_file_name new_file_name
  • 这会将文件 old_file_name 重命名为 new_file_name。如果目标文件已经存在,它将被覆盖(没有任何提示)

移动多个文件到指定目录:

代码语言:javascript
代码运行次数:0
运行
复制
mv srcfile1 srcfile2 srcfile3 /path/to/destination/

这会将多个文件(如srcfile1 srcfile2 和 srcfile3 )移动到指定目录。

递归移动目录 (-r 选项) :

  • mv 命令本身可以移动目录,但在某些情况下,你可能需要递归操作,尤其是在移动子目录时。虽然 mv 默认支持递归,但如果需要,你可以加上 -r选项
代码语言:javascript
代码运行次数:0
运行
复制
mv -r src_directory /path/to/destination/
  • 这会将 src_directory 及其内容移动到目标路径

交互式移动 (-i 选项) :

  • 使用 -i 选项可以在目标文件已存在时,提示用户确认是否覆盖文件。防止意外覆盖重要文件:
代码语言:javascript
代码运行次数:0
运行
复制
mv -i file1.txt file2.txt
  • 如果 file2.txt 已存在,mv 会提示你是否确认覆盖。

强制移动 (-f 选项):

  • 使用 -f 选项可以强制移动文件或目录,即使目标位置已有同名文件也不会提示确认,直接覆盖
代码语言:javascript
代码运行次数:0
运行
复制
mv -f file1.txt file2.txt

本文指令小结

命令

描述

常见选项

ls

列出当前目录下的文件和目录

-l: 详细列表-a: 显示所有文件(包括隐藏文件)

pwd

显示当前工作目录

无选项

cd

改变当前工作目录

无选项

touch

创建一个空文件或更新文件的时间戳

-t: 按时间排序-p: 保留文件属性-i: 交互模式

mkdir

创建一个新的目录

-p: 创建父级目录-v: 显示详细过程

tree

以树形结构显示目录内容

-L: 设置最大层级显示-a: 显示隐藏文件-v: 显示详细过程

rm

删除文件或目录

-r: 递归删除-f: 强制删除-i: 交互模式

cp

复制文件或目录

-r: 递归复制-i: 交互模式-v: 显示详细过程-f: 强制覆盖

mv

移动或重命名文件或目录

-i: 交互模式-f: 强制移动-v: 显示详细过程

写在最后

如果你觉得这篇文章对你有所帮助,请为我的博客 点赞👍收藏⭐️ 评论💬或 分享🔗 支持一下!你的每一个支持都是我继续创作的动力✨!🙏 如果你有任何问题或想法,也欢迎 留言💬 交流,一起进步📚!❤️ 感谢你的阅读和支持🌟!🎉 祝各位大佬吃得饱🍖,睡得好🛌,日有所得📈,逐梦扬帆⛵!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-01-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、ls指令
  • 2、pwd指令
  • Linux目录结构
  • 3、cd指令
  • Linux文件概览
  • 时间戳
  • 4、touch指令
  • 5、 mkdir指令
  • 6、tree指令
  • 7、rm指令
  • 8、cp指令
  • 9、mv指令
  • 本文指令小结
  • 写在最后
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档