星恒随风头像
关注
Linux 基础指令入门:从目录结构到 ls、cd、touch、mkdir 和 rm封面图

Linux 基础指令入门:从目录结构到 ls、cd、touch、mkdir 和 rm

Linux 基础指令入门:从目录结构到 ls、cd、touch、mkdir 和 rm

头像

🔥 星恒随风: 个人主页
❄️ 个人专栏: 《指针合集》 《C语言基础》 《数据结构》 《机器学习导论》 《前端基础》 《python基础》 《C++从入门到入土》
✨ 数据即知识,压缩即智能

文章目录

前言

第一次接触 Linux 时,很多人会觉得它不如 Windows 直观。

Windows 中创建文件夹、查看文件和删除目录,通常只需要使用鼠标完成;到了 Linux 服务器上,屏幕里却只剩下一个终端窗口:

[root@xxx ~]#

看起来似乎什么都没有,实际却并不复杂。

Linux 命令行中的大部分操作,都可以归纳为三个问题:

我现在在哪里?
这里有什么?
我要对哪个文件或目录做什么?

对应到命令就是:

pwd:我现在在哪里
ls :这里有什么
cd :切换到其他目录
touch:创建文件或更新时间
mkdir:创建目录
rmdir:删除空目录
rm:删除文件或目录

本文从 Linux 的基本背景出发,逐步讲清目录树、绝对路径、相对路径和常用文件操作命令。


一、Linux 是怎么来的?

1.1 从 UNIX 说起

Linux 并不是凭空出现的,它在设计思想上深受 UNIX 影响。

UNIX 最初诞生于 20 世纪 60 年代末。贝尔实验室的 Ken Thompson、Dennis Ritchie 等人参与了早期 UNIX 的开发。

UNIX 在当时形成了许多影响深远的设计思想,例如:

多用户
多任务
层次化文件系统
小工具组合
文本作为通用接口

后来,UNIX 逐渐发展出不同分支,其中比较有代表性的两条路线是:

AT&T System V
BSD UNIX

不同 UNIX 系统虽然实现不完全相同,但许多命令、目录结构和编程接口具有共同的设计基础。

1.2 Linux 的诞生

1991 年,Linus Torvalds 开始开发一个类 UNIX 操作系统内核,这就是后来的 Linux 内核。

早期 Linux 可以运行 Bash、GCC 等 GNU 工具。随着越来越多开发者参与,Linux 内核不断完善,并在 1994 年发布了 1.0 版本。

Linux 的发展并不是某一家公司单独完成的,而是由大量个人、社区和企业共同推动的。

1.3 Linux 内核不等于完整操作系统

严格来说,Linux 指的是操作系统内核。

内核主要负责管理:

进程
内存
文件系统
硬件设备
网络
系统调用

但一台计算机只有内核还无法直接满足日常使用需求,还需要:

Shell
编译器
系统命令
软件包管理器
桌面环境
应用程序
系统服务

把 Linux 内核和这些用户空间工具组合起来,才形成一个可以安装和使用的 Linux 发行版。

可以简单理解为:

Linux 内核
    +
GNU 工具和系统命令
    +
软件包管理器
    +
系统服务与应用程序
    ↓
Linux 发行版

二、开源和 Linux 发行版

2.1 什么是开源?

开源软件不仅向用户提供可执行程序,还按照许可证的规定提供源代码。

用户通常可以在许可证允许的范围内:

阅读源代码
学习实现原理
修改源代码
重新编译
分发修改后的版本

Linux 内核整体采用 GPLv2 许可证。开源并不简单等于“免费”,更重要的是源代码的使用、修改和分发受到公开许可证约束。

2.2 为什么会有不同发行版?

不同用户对操作系统的需求并不相同。

例如:

桌面用户关心易用性
开发者关心工具链
服务器管理员关心稳定性
企业关心支持周期
嵌入式设备关心体积和可定制性

因此,围绕 Linux 内核逐渐形成了许多发行版。

常见发行版包括:

发行版主要特点
Debian社区维护,强调自由软件与稳定性
Ubuntu基于 Debian,桌面、服务器和云环境中都很常见
Fedora更新较快,经常较早引入新技术
RHELRed Hat 提供的企业级商业发行版
CentOS Stream位于 Fedora 与 RHEL 之间的持续交付发行版
Rocky Linux面向企业服务器场景的社区发行版
AlmaLinux面向企业服务器场景的社区发行版
Kali Linux面向安全测试和取证工具使用场景

旧资料中常把 CentOS 描述为 RHEL 的免费重构版本。这个描述主要适用于早期的 CentOS Linux。现在学习和部署时,应注意区分:

CentOS Linux
CentOS Stream
Rocky Linux
AlmaLinux

2.3 Linux 应用在哪些地方?

Linux 的应用范围很广,常见场景包括:

服务器
云计算平台
容器环境
超级计算机
网络设备
嵌入式设备
智能电视
路由器
Android 设备
开发环境

我们在学习 C、C++、操作系统、计算机网络和后端开发时,通常会频繁接触 Linux。


三、操作系统和 Shell 分别负责什么?

3.1 操作系统位于用户和硬件之间

从整体结构上看,计算机可以分成几层:

用户
 ↓
应用程序与命令
 ↓
操作系统
 ↓
设备驱动
 ↓
硬件

操作系统的核心作用,可以概括为两点:

管理计算机资源
为应用程序提供统一接口

例如,程序想读取文件时,不需要自己研究硬盘扇区,而是通过操作系统提供的接口完成。

操作系统负责把底层硬件细节封装起来,让上层程序更容易使用计算机。

3.2 Shell 是什么?

Shell 是用户与操作系统交互的一层命令解释器。

当我们输入:

[root@xxx ~]# ls

大致会经历下面的过程:

用户输入 ls
    ↓
Shell 解析命令
    ↓
找到对应程序
    ↓
创建进程并运行
    ↓
程序访问操作系统接口
    ↓
结果显示在终端中

Linux 中常见的 Shell 包括:

Bash
Zsh
Fish
Dash

初学阶段接触最多的是 Bash。

3.3 终端和 Shell 不是同一个东西

终端负责显示字符和接收键盘输入。

Shell 负责解释我们输入的命令。

可以把二者简单类比为:

终端:窗口和输入设备
Shell:运行在窗口中的命令解释器

当我们通过 SSH 连接服务器时,看到的是远程 Shell 在本地终端中的交互结果。


四、为什么服务器经常使用命令行?

Linux 也可以安装桌面环境,但服务器上更常见的是纯命令行环境。

主要原因包括:

4.1 节省资源

图形界面需要占用额外的:

内存
CPU
磁盘空间
图形相关服务

服务器更希望把资源留给业务程序。

4.2 便于远程管理

通过 SSH,只需要传输字符数据,就可以在网络另一端管理服务器。

即使网络速度一般,命令行仍然可以保持较好的响应速度。

4.3 便于自动化

图形界面操作通常需要人工点击,而命令可以放入脚本中反复执行。

例如:

mkdir -p project/src
touch project/src/main.cpp

相同命令可以在多台机器上执行,也可以交给自动部署工具执行。

4.4 操作过程容易复现

别人告诉你“点击某个按钮”,可能受到系统版本和界面布局影响。

命令行则可以直接记录:

mkdir -p /root/linux_demo
cd /root/linux_demo
touch test.txt

只要环境一致,操作过程通常就可以复现。


五、通过 SSH 远程登录 Linux

5.1 什么是 SSH?

SSH 是一种安全的远程登录协议。

我们可以在自己的电脑上打开 SSH 客户端,然后连接远程 Linux 主机。

常见客户端包括:

Windows Terminal
PowerShell
XShell
PuTTY
Linux 终端
macOS 终端

具体使用哪一个客户端并不重要,底层连接方式基本一致。

5.2 查看 Linux 主机地址

较新的 Linux 系统中,建议使用:

[root@xxx ~]# ip addr

也可以使用简化形式:

[root@xxx ~]# ip a

只想快速查看本机地址时,也可以尝试:

[root@xxx ~]# hostname -I

一些旧资料使用:

[root@xxx ~]# ifconfig

但不少现代发行版默认不再安装 ifconfig,更推荐使用 ip 命令。

5.3 使用 ssh 登录

基本语法:

ssh 用户名@服务器地址

例如:

ssh root@<服务器IP>

首次连接时,终端可能询问是否信任远程主机指纹。确认地址无误后输入:

yes

随后输入密码或使用 SSH 密钥完成认证。

登录成功后,可能看到:

[root@xxx ~]#

实际服务器通常不建议直接开放 root 密码登录。更常见的方式是先使用普通用户登录,再通过 sudo 执行管理操作。


六、看懂 Linux 命令提示符

一个常见提示符如下:

[root@xxx ~]#

可以拆成:

root:当前用户
xxx :当前主机名
~   :当前目录
#   :超级用户提示符

普通用户通常使用 $

[user@xxx ~]$

超级用户通常使用 #

[root@xxx ~]#

这里的 # 不是需要输入的命令内容,它只是 Shell 显示的提示符。

例如,看到:

[root@xxx ~]# pwd

真正输入的只有:

pwd

七、Linux 中一切从目录树开始

7.1 Linux 没有盘符结构

Windows 中常见:

C:\
D:\
E:\

Linux 不使用这种盘符方式。所有文件和目录统一组织在一棵目录树中。

目录树的起点是:

/

它叫做根目录。

注意区分:

/     根目录
/root root 用户的家目录

二者不是同一个目录。

7.2 一个简化的 Linux 目录结构

/
├── bin
├── boot
├── dev
├── etc
├── home
├── lib
├── root
├── tmp
├── usr
└── var

常见目录可以先简单理解为:

目录常见用途
/整棵目录树的根
/home普通用户的家目录
/rootroot 用户的家目录
/etc系统和服务的配置文件
/usr大量程序、库和共享数据
/var日志、缓存等经常变化的数据
/tmp临时文件
/dev设备文件
/boot启动相关文件

初学阶段不需要一次背完所有目录,只需要先理解:

Linux 中所有文件都能从根目录 / 出发,通过一条路径定位。

7.3 文件和目录都是目录树中的结点

在目录树中:

目录可以继续包含其他文件和目录
普通文件通常位于目录树的叶子位置
空目录也可以是叶子结点

例如:

/
└── root
    └── linux_demo
        ├── notes.txt
        └── project
            └── main.cpp

notes.txt 的位置可以表示为:

/root/linux_demo/notes.txt

八、路径:如何准确找到文件?

8.1 什么是路径?

路径就是从某个起点出发,按照目录层次定位文件或目录的描述。

例如:

/root/linux_demo/project/main.cpp

表示:

从根目录 /
进入 root
进入 linux_demo
进入 project
找到 main.cpp

8.2 绝对路径

从根目录 / 开始的路径叫做绝对路径:

/root/linux_demo
/etc/ssh/sshd_config
/usr/bin/g++

特点是:

以 / 开头
不依赖当前所在目录
位置表达明确

无论当前处于哪个目录:

cd /root/linux_demo

定位到的都是同一个地方。

8.3 相对路径

相对于当前目录书写的路径叫做相对路径。

假设当前位于:

/root/linux_demo

进入 project 目录可以写:

cd project

进入其中的 src 目录可以写:

cd project/src

相对路径不以 / 开头,它的含义依赖当前工作目录。

8.4 几个特殊路径符号

当前目录:.
.

表示当前目录。

例如:

ls .

表示查看当前目录内容。

上级目录:..
..

表示当前目录的父目录。

例如:

cd ..

表示进入上一级目录。

家目录:~
~

表示当前用户的家目录。

对于 root 用户:

~ 等价于 /root
最近一次所在目录:-
cd -

可以在当前目录和上一次所在目录之间切换。


九、ls:查看目录中有什么

9.1 基本语法

ls [选项] [文件或目录]

不提供参数时,ls 查看当前目录:

[root@xxx ~]# ls
linux_demo

查看指定目录:

[root@xxx ~]# ls /root/linux_demo
file.txt  project

9.2 为什么 ls 默认看不到隐藏文件?

Linux 中,以 . 开头的名字通常被视为隐藏文件或隐藏目录。

例如:

.bashrc
.ssh
.config

普通 ls 默认不会显示它们。

使用:

[root@xxx ~]# ls -a
.  ..  .bashrc  .ssh  linux_demo

其中:

.  表示当前目录
.. 表示上级目录

9.3 ls -l:查看详细信息

[root@xxx ~]# ls -l
total 4
drwxr-xr-x 3 root root 4096 Jul 31 20:10 linux_demo

这一行可以先粗略拆分为:

drwxr-xr-x:文件类型和权限
3          :链接数量
root       :所有者
root       :所属组
4096       :大小
Jul 31...  :修改时间
linux_demo :名称

权限部分会在后续文章中单独展开。

9.4 常用选项

选项作用
-a显示所有文件,包括隐藏文件
-l使用长格式显示详细信息
-h配合 -l 显示更容易阅读的文件大小
-d显示目录本身,而不是目录中的内容
-F在名称后添加类型标记
-i显示 inode 编号
-n使用数字 UID、GID 显示所有者
-r反向排序
-t按修改时间排序
-R递归查看子目录
-1每行只显示一个名称

选项可以组合:

[root@xxx ~]# ls -alF

也可以写成:

[root@xxx ~]# ls -a -l -F

两者效果相同。

9.5 ls -F 的类型标记

[root@xxx linux_demo]# ls -F
app*  project/  shortcut@  notes.txt

常见标记包括:

/  目录
*  可执行文件
@  符号链接
|  命名管道
=  套接字

普通文件通常不会添加符号。

9.6 ls -d 查看目录本身

直接执行:

ls /root/linux_demo

看到的是目录中的内容。

使用:

[root@xxx ~]# ls -ld /root/linux_demo
drwxr-xr-x 3 root root 4096 Jul 31 20:10 /root/linux_demo

看到的是 linux_demo 目录本身的信息。

9.7 ll 是什么?

一些 Linux 发行版中可以使用:

ll

它通常是:

ls -l

或:

ls -alF

的别名。

不过 ll 并不是所有系统都默认存在。为了保证命令具有更好的通用性,文章中主要使用:

ls -l

十、pwd:确认当前所在目录

10.1 基本语法

pwd

pwd 是:

print working directory

的缩写,用于显示当前工作目录。

例如:

[root@xxx ~]# pwd
/root

进入其他目录后:

[root@xxx ~]# cd /root/linux_demo
[root@xxx linux_demo]# pwd
/root/linux_demo

10.2 为什么经常先执行 pwd?

在图形界面中,我们可以通过窗口地址栏判断当前位置。

在命令行中,如果不确定自己位于哪里,最直接的方法就是:

pwd

特别是在执行删除或批量操作之前,建议先确认:

[root@xxx linux_demo]# pwd
/root/linux_demo

防止因为目录判断错误而操作了错误的文件。


十一、cd:切换工作目录

11.1 基本语法

cd 目录路径

cd 是:

change directory

的缩写。

11.2 进入指定目录

[root@xxx ~]# cd /root/linux_demo
[root@xxx linux_demo]# pwd
/root/linux_demo

这里使用的是绝对路径。

11.3 使用相对路径进入目录

假设当前结构为:

/root/linux_demo
├── project
└── temp

当前位于:

/root/linux_demo/project

切换到同级的 temp

[root@xxx project]# cd ../temp
[root@xxx temp]# pwd
/root/linux_demo/temp

分析这条路径:

..    回到 linux_demo
temp  进入 temp

11.4 返回上级目录

[root@xxx temp]# cd ..
[root@xxx linux_demo]# pwd
/root/linux_demo

连续返回两级:

cd ../..

11.5 返回家目录

下面几种写法都可以回到家目录:

cd
cd ~

对于 root 用户:

[root@xxx linux_demo]# cd ~
[root@xxx ~]# pwd
/root

11.6 回到根目录

[root@xxx ~]# cd /
[root@xxx /]# pwd
/

11.7 在两个目录之间切换

[root@xxx ~]# cd /root/linux_demo
[root@xxx linux_demo]# cd /
[root@xxx /]# cd -
/root/linux_demo
[root@xxx linux_demo]# cd -
/

cd - 很适合在两个常用目录之间往返。

11.8 带空格的目录名

如果目录名中包含空格,需要使用引号:

cd "my project"

或者使用反斜杠转义:

cd my\ project

在 Linux 项目目录中,一般更推荐使用:

my_project
my-project

避免使用空格,能够减少命令书写中的麻烦。


十二、touch:创建空文件或更新时间

12.1 基本语法

touch [选项] 文件...

touch 最常见的用途是创建空文件:

[root@xxx ~]# mkdir -p /root/linux_demo
[root@xxx ~]# cd /root/linux_demo
[root@xxx linux_demo]# touch newFile.txt
[root@xxx linux_demo]# ls
newFile.txt

此时创建了一个大小为 0 的普通文件。

12.2 touch 不只是创建文件

touch 的本质是更新文件时间戳。

如果文件不存在:

touch newFile.txt

默认会创建文件。

如果文件已经存在:

touch newFile.txt

通常不会清空原有内容,而是更新它的访问时间和修改时间。

12.3 使用 stat 查看文件信息

[root@xxx linux_demo]# stat newFile.txt
  File: newFile.txt
  Size: 0
  Access: 2026-07-31 20:20:00
  Modify: 2026-07-31 20:20:00
  Change: 2026-07-31 20:20:00

常见时间包括:

Access:最后访问时间,简称 atime
Modify:文件内容最后修改时间,简称 mtime
Change:inode 状态最后变化时间,简称 ctime

ctime 不是文件的创建时间,而是文件元数据发生变化的时间。

12.4 只更新访问时间

[root@xxx linux_demo]# touch -a newFile.txt

-a 主要更新文件的访问时间。

12.5 只更新修改时间

[root@xxx linux_demo]# touch -m newFile.txt

-m 主要更新文件内容修改时间。

需要注意:

-a:access time
-m:modification time

不要把 -c 误认为修改时间选项。

12.6 文件不存在时不要创建

[root@xxx linux_demo]# touch -c not_exist.txt
[root@xxx linux_demo]# ls
newFile.txt

-c--no-create 表示:

如果目标文件不存在,不要创建新文件。

12.7 一次创建多个文件

[root@xxx linux_demo]# touch main.cpp test.cpp README.md
[root@xxx linux_demo]# ls
README.md  main.cpp  newFile.txt  test.cpp

Shell 会把多个文件名依次作为参数传递给 touch


十三、mkdir:创建目录

13.1 基本语法

mkdir [选项] 目录...

创建一个目录:

[root@xxx linux_demo]# mkdir project
[root@xxx linux_demo]# ls -F
project/

13.2 一次创建多个目录

[root@xxx linux_demo]# mkdir src include build
[root@xxx linux_demo]# ls -F
build/  include/  project/  src/

13.3 创建多级目录时的问题

假设 lesson01 还不存在,直接执行:

[root@xxx linux_demo]# mkdir lesson01/code/src
mkdir: cannot create directory 'lesson01/code/src': No such file or directory

mkdir 默认只能在父目录已经存在时创建下一层目录。

13.4 使用 mkdir -p 创建完整路径

[root@xxx linux_demo]# mkdir -p lesson01/code/src

-p--parents 会自动创建路径中缺失的父目录。

创建后结构为:

lesson01
└── code
    └── src

可以使用:

[root@xxx linux_demo]# tree lesson01
lesson01
└── code
    └── src

如果系统没有安装 tree,也可以使用:

find lesson01

或者:

ls -R lesson01

13.5 重复执行 mkdir -p

mkdir -p lesson01/code/src

即使目录已经存在,通常也不会报错。

因此,mkdir -p 经常出现在:

Shell 脚本
项目初始化脚本
自动部署脚本
构建脚本

中。


十四、rmdir:删除空目录

14.1 基本语法

rmdir [选项] 目录...

rmdir 专门用于删除空目录。

例如:

[root@xxx linux_demo]# mkdir empty_dir
[root@xxx linux_demo]# rmdir empty_dir
[root@xxx linux_demo]# ls

14.2 非空目录不能使用 rmdir 删除

[root@xxx linux_demo]# mkdir data
[root@xxx linux_demo]# touch data/file.txt
[root@xxx linux_demo]# rmdir data
rmdir: failed to remove 'data': Directory not empty

因为 data 中存在文件,所以删除失败。

这也是 rmdir 相对安全的地方:

它不会直接递归删除目录中的内容。

14.3 使用 rmdir -p 删除空路径

创建多级空目录:

[root@xxx linux_demo]# mkdir -p path1/path2/path3

删除最深层目录,并向上删除已经变空的父目录:

[root@xxx linux_demo]# rmdir -p path1/path2/path3

如果整个路径都为空,那么:

path3 被删除
path2 变空后被删除
path1 变空后被删除

14.4 父目录中有其他文件时会停止

[root@xxx linux_demo]# mkdir -p path1/path2/path3
[root@xxx linux_demo]# touch path1/keep.txt
[root@xxx linux_demo]# rmdir -p path1/path2/path3
rmdir: failed to remove directory 'path1': Directory not empty

此时:

path3 被删除
path2 被删除
path1 中还有 keep.txt,因此保留

十五、rm:删除文件或目录

15.1 基本语法

rm [选项] 文件或目录...

rm 是:

remove

的缩写。

它可以删除文件,配合选项后也可以删除目录。

15.2 删除普通文件

[root@xxx linux_demo]# touch file.txt
[root@xxx linux_demo]# ls
file.txt
[root@xxx linux_demo]# rm file.txt
[root@xxx linux_demo]# ls

删除后,file.txt 不再存在。

Linux 命令行中的 rm 通常不会把文件移动到桌面环境的回收站。删除完成后,普通用户很难直接恢复。

因此,执行删除操作前要认真检查路径。

15.3 一次删除多个文件

[root@xxx linux_demo]# touch a.txt b.txt c.txt
[root@xxx linux_demo]# rm a.txt b.txt c.txt

也可以使用通配符:

rm *.txt

这表示删除当前目录下所有以 .txt 结尾的匹配项。

使用通配符前,建议先查看匹配结果:

ls *.txt

确认无误后再执行:

rm *.txt

15.4 rm 默认不能删除目录

[root@xxx linux_demo]# mkdir project
[root@xxx linux_demo]# rm project
rm: cannot remove 'project': Is a directory

默认情况下,rm 只删除文件。

15.5 使用 rm -r 递归删除目录

[root@xxx linux_demo]# mkdir -p project/src
[root@xxx linux_demo]# touch project/src/main.cpp
[root@xxx linux_demo]# rm -r project

-r 表示递归删除:

先处理目录中的文件和子目录
再删除目录本身

它可以删除非空目录,所以风险明显高于 rmdir

15.6 使用 rm -i 逐项确认

[root@xxx linux_demo]# touch important.txt
[root@xxx linux_demo]# rm -i important.txt
rm: remove regular empty file 'important.txt'? y

输入:

y

确认删除。

输入:

n

取消删除。

删除目录时也可以组合:

rm -ri project

系统会逐层询问是否进入和删除目录。

15.7 使用 rm -f 强制处理

rm -f file.txt

-f 表示:

忽略不存在的文件
尽量不进行交互询问

例如:

[root@xxx linux_demo]# rm -f not_exist.txt

文件不存在时通常也不会报错。

15.8 rm -rf 为什么危险?

rm -rf 目录

组合了:

-r:递归进入所有子目录
-f:不进行常规询问

例如:

[root@xxx linux_demo]# rm -rf project

可以直接删除整个 project 目录及其全部内容。

这条命令本身并不是错误命令,项目清理和自动化脚本中经常会用到。危险之处在于:

一旦路径写错,删除范围可能远大于预期。

尤其是在 root 用户下执行时,能够删除大量系统文件。

15.9 执行 rm 前的安全检查

第一步:确认当前目录
pwd
第二步:查看目标内容
ls -al target
第三步:先使用交互模式
rm -ri target
第四步:确认变量不为空

Shell 脚本中不要直接写:

rm -rf "$TARGET_DIR"

至少应先检查:

if [ -n "$TARGET_DIR" ] && [ "$TARGET_DIR" != "/" ]; then
    rm -rf -- "$TARGET_DIR"
fi
第五步:使用 -- 分隔选项和文件名

假设有一个文件名为:

-f

直接执行:

rm -f

会被解释成选项。

可以写成:

rm -- -f

-- 表示后面的内容全部按照普通参数处理,不再解析成命令选项。

15.10 rmdir 和 rm 如何选择?

场景推荐命令
删除普通文件rm file
删除空目录rmdir dir
删除非空目录rm -r dir
删除前需要确认rm -i file
递归删除并逐项确认rm -ri dir
自动化中忽略不存在文件rm -f file
强制递归删除目录rm -rf dir,必须谨慎

初学阶段可以形成一个习惯:

能够使用 rmdir 时,优先使用 rmdir
需要递归删除时,先使用 rm -ri
确认目标完全正确后,再考虑 rm -rf

十六、把这些命令串起来

前面看起来讲了很多命令,实际可以串成一条完整的文件操作流程。

16.1 创建练习环境

[root@xxx ~]# mkdir -p /root/linux_demo/project/src

目录结构变成:

/root/linux_demo
└── project
    └── src

16.2 进入项目目录

[root@xxx ~]# cd /root/linux_demo/project
[root@xxx project]# pwd
/root/linux_demo/project

16.3 创建文件

[root@xxx project]# touch README.md
[root@xxx project]# touch src/main.cpp src/test.cpp

16.4 查看目录

[root@xxx project]# ls -alF

递归查看:

[root@xxx project]# ls -R
.:
README.md  src

./src:
main.cpp  test.cpp

16.5 删除一个文件

[root@xxx project]# rm -i src/test.cpp
rm: remove regular empty file 'src/test.cpp'? y

16.6 删除整个练习目录

先返回上级目录:

[root@xxx project]# cd ..
[root@xxx linux_demo]# pwd
/root/linux_demo

确认目标:

[root@xxx linux_demo]# ls -al project

再删除:

[root@xxx linux_demo]# rm -ri project

完整过程可以概括为:

mkdir 创建目录
    ↓
cd 进入目录
    ↓
pwd 确认位置
    ↓
touch 创建文件
    ↓
ls 查看结果
    ↓
rm 或 rmdir 删除

十七、常见错误整理

17.1 混淆 //root

/     是根目录
/root 是 root 用户的家目录

执行:

cd /

进入的是整棵文件系统的根。

执行:

cd /root

进入的是 root 用户家目录。

17.2 认为 ~ 永远表示 /root

~ 表示当前用户的家目录。

对于 root:

~ -> /root

对于普通用户 student

~ -> /home/student

17.3 把相对路径当成绝对路径

cd root/linux_demo

这是相对路径,表示从当前目录寻找 root/linux_demo

绝对路径应写成:

cd /root/linux_demo

前面的 / 不能省略。

17.4 使用 ls 看不到隐藏文件

普通:

ls

不会显示以 . 开头的文件。

需要使用:

ls -a

17.5 把 ll 当成所有系统都有的命令

ll 通常只是 Shell 别名,不是所有环境都存在。

更通用的写法是:

ls -l

17.6 认为 touch 会清空文件

对已经存在的文件执行:

touch file.txt

通常只是更新时间,不会删除原有内容。

17.7 混淆 touch 的 -m-c

正确含义:

touch -m:更新修改时间
touch -c:文件不存在时不要创建

17.8 mkdir 创建多级目录失败

错误:

mkdir a/b/c

如果 ab 不存在,就会失败。

正确:

mkdir -p a/b/c

17.9 使用 rmdir 删除非空目录

rmdir data

只能删除空目录。

非空目录需要:

rm -r data

但执行前必须确认目录内容。

17.10 在错误目录执行 rm

执行删除前,建议养成下面的顺序:

pwd
ls -al
rm -i 目标

不要在不清楚当前位置时直接执行递归删除。


转载自 CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/Face_FeaR/article/details/163375322

文章来源crawl

评论

赞0

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--