云计算百科
云计算领域专业知识百科平台

Linux基本指令(一)

目录

  • 1. ls 指令
  • 2. pwd 命令
  • 3. cd 命令
  • 4. touch 指令
  • 5. mkdir 命令
  • 6. rm 指令

1. ls指令

功能:ls 是 list 的缩写,用于列出目录中的内容(文件和子目录)。

基本语法:

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

常用选项:

最核心的选项(必须掌握):

选项英文全称作用
-a all 列出所有文件,包括以 . 开头的隐藏文件(. 代表当前目录,.. 代表上级目录)。
-l long 以长格式显示信息(权限、链接数、所有者、组、大小、时间、文件名)。
-F classify 在每个文件名后附上类型标识符(/ 代表目录,* 代表可执行文件,@ 代表链接)。
-n numeric-uid-gid 类似 -l,但显示数字形式的 UID 和 GID,而不是用户名和组名。
-h human-readable 配合 -l 使用,将文件大小以人类易读的方式显示(如 K, M, G)。

目前Linux中的测试环境:

# 1. 创建一个名为 test_ls 的主测试目录
mkdir test_ls
2. 进入该目录
cd test_ls
3. 创建一个名为 dir1 的子目录
mkdir dir1
4. 创建两个普通文件
touch file1.txt file2.txt
5. 创建一个隐藏文件(以 . 开头)
touch .hidden_file

1.1:基础列表

ls

输出:

默认情况下,ls 只列出非隐藏文件,并按列排序。你看不到 .hidden_file。

1.2:查看隐藏文件 (-a)

ls -a

输出:

-a 让隐藏文件现形。你会看到 . (当前目录) 和 .. (上级目录),以及我们创建的 .hidden_file

1.3: 长格式显示所有文件 (-a -l 或 -al)

ls -al

输出:

解析:

  • total 12:当前目录占用的块总数。

  • 第一列(如 drwxr-xr-x):d 开头表示目录,- 开头表示普通文件。后面是权限。

  • 第三、四列(root root):所有者和所属组。

  • 第五列(4096, 0):文件大小(字节)。目录通常显示 4096。

  • 后面依次是修改时间和文件名。

1.4: 区分文件类型(-F)

ls -aF

输出:

注意观察,目录 dir1 后面多了一个 /,而普通文件后面没有。这能让你一眼看出哪些是目录,哪些是文件。

1.5: 显示数字 UID/GID (-n)

ls -aln

输出:

因为当前是 root 用户,UID 和 GID 都是 0。如果在普通用户下,这里会显示类似 1000 的数字,而不是用户名。

1.6:人类易读的大小 (-h)

ls -lh

输出:

2. pwd 命令

目前Linux中的测试环境:

# 1. 在主目录下创建一个多级测试目录(使用 -p 递归创建)
mkdir -p /root/pwd_test/level1/level2
2. 进入最外层测试目录
cd /root/pwd_test

指令全称:Print Working Directory(打印工作目录)

功能:显示当前用户所在的绝对路径。

pwd [选项]

核心概念补充:

  • 绝对路径:以 / 开头的完整路径,例如 /root/pwd_test/level1。

  • 相对路径:不以 / 开头,相对于当前目录的路径,例如 level1/level2。

  • pwd 永远输出的是绝对路径,这是它最重要的价值。

2.1 进入子目录后查看路径

  • 使用相对路径 cd level1 进入了子目录。

  • pwd 输出随之更新为 /root/pwd_test/level1,准确反映了当前所在层级。

  • 这证明了 pwd 是动态的,会随 cd 操作实时变化。

2.2 继续深入多级目录

  • 每深入一层,pwd 的输出就会追加一层路径。

  • 无论目录嵌套多深,pwd 都能完整地打印出从根 / 到当前目录的完整链路。

2.3 返回上级目录后查看路径

  • cd .. 回到上级目录后,pwd 的输出也相应回退了一层。

  • 这再次验证了 pwd 与当前工作目录的实时同步性。

3. cd命令

目前Linux中的测试环境:

指令全称:Change Directory(切换目录)

功能:切换当前工作目录。

cd [目录路径]

核心用法详解:

命令作用说明
cd 目录名 进入指定目录 可以是绝对路径或相对路径。
cd .. 返回上一级目录 .. 代表父目录,最常用。
cd . 进入当前目录 等于没动,常用于脚本中占位。
cd ~ 回到当前用户的家目录 root 用户的家目录是 /root。
cd 等同于 cd ~ 直接敲 cd 不带参数,也回到 home。
cd – 回到上一次所在的目录 在两个目录之间快速来回切换,非常实用。
cd / 进入根目录 整个文件系统的起点。

核心概念:

  • 绝对路径:以 / 开头,从根目录出发,例如 cd /root/cd_test/level1。

  • 相对路径:不以 / 开头,从当前目录出发,例如 cd level1。

3.1:进入子目录(相对路径)

cd level1
pwd

  • 使用相对路径 level1 进入了当前目录下的子目录。

  • 结合 pwd 确认切换成功。

3.2:继续深入多级目录

cd level2
pwd

  • 在 level1 中继续进入 level2,成功深入到第三层。

3.3:返回上一级 (..)

cd ..
pwd

  • cd .. 是最常用的操作之一,每次回退一层。

  • 你从 level2 回到了 level1。

3.4:一次性返回多级目录

# 从 level1 一次性回到 cd_test
cd ../..
pwd

  • ../.. 表示“上一级的上一级”。

  • 你在 /root/cd_test/level1,往上两级就到了 /root。

  • 技巧:可以连续用 ../../.. 一次性跳回多层,非常高效。

3.5:使用绝对路径切换

cd /root/cd_test/level1/sibling
pwd

  • 以 / 开头的路径是绝对路径,从根目录出发。

  • 无论当前在哪个位置,绝对路径都能准确到达目标目录。

3.6:回到上次所在目录 (cd -)

cd –
pwd

  • 你之前从 root跳到了 sibling,现在用 cd – 直接跳回了 root。

  • 再执行一次 cd -,又会跳回 sibling。

  • 用途:在两个目录之间频繁切换时,比敲完整路径快得多。

3.7 回到用户家目录 (cd ~ )

cd ~
pwd

  • 无论当前在哪个目录,cd ~ 或直接敲 cd 都会回到当前用户的家目录(root 用户是 /root)。

  • 这是最常用的“一键回家”操作。

3.8:回到根目录 (cd /)

cd /
pwd

  • cd / 进入整个文件系统的根目录。

  • 根目录是整个 Linux 文件系统的起点,所有其他目录都在它之下。

4. touch指令

测试环境:

# 1. 创建并进入测试目录
mkdir -p /root/touch_test
cd /root/touch_test
2. 创建一个目录和一个普通文件
mkdir dir
touch file.txt

指令全称:touch(触摸)

功能:

  • 创建空文件:如果指定的文件不存在,则创建一个大小为 0 的空文件。

  • 修改时间戳:如果文件已存在,则更新该文件的访问时间(atime)和修改时间(mtime)为当前系统时间。

  • touch [选项] 文件名…

    无选项 创建一个空文件;若文件已存在,则同时更新 Access 和 Modify 时间为当前时间。
    -a access 只更改存取时间(Access time)。
    -m modify 只更改变动时间(Modify time)。
    -c no-create 不建立任何文件。如果文件不存在,也不会创建(截图文字有笔误,实际是 no-create 的意思,但一般我们多用 -a 和 -m,-c 知道即可)。

    Linux 文件的三个时间: 在截图中,stat 命令输出了三个时间,这是理解 touch 的关键:

  • Access Time (atime):文件最后一次被读取/访问的时间。

  • Modify Time (mtime):文件内容最后一次被修改的时间。

  • Change Time (ctime):文件元数据(属性)最后一次被改变的时间(例如:权限、所有者、链接数,或者 atime/mtime 被修改时,ctime 也会跟着变)。

  • 4.1 创建普通文件 & 查看完整时间信息

    # 1. 查看当前目录
    ls
    2. 创建新文件
    touch newFile.txt
    3. 查看目录确认创建成功
    ls
    4. 使用 stat 查看文件的详细时间信息
    stat newFile.txt

    • 新建文件时,Access、Modify、Change 三个时间都被初始化为当前时间。

    • Size: 0 证明 touch 创建的是一个空文件

    4.2:修改 Access 时间 (-a)

    # 修改 Access 时间
    touch -a newFile.txt
    再次查看状态
    stat newFile.txt

    • Modify 没变:因为我们用了 -a,只针对 Access 时间。

    • Change 为什么变了? 因为 Change 记录的是文件属性/元数据的变化。虽然文件内容没变,但文件的 Access 时间属性被修改了,这个“修改属性”的动作本身,就会更新 Change 时间。总结:只要你动了 atime 或 mtime,ctime 必定会变成当前时间。

    4.3:修改 Modify 时间 (-m)

    # 修改 Modify 时间
    touch -m newFile.txt
    再次查看状态
    stat newFile.txt

    • 这次 Modify 时间更新为当前时间,而 Access 保持上一次的时间不变。

    • 同样,因为修改了元数据,Change 时间也同步更新为最新。

    4.4: -c

    # 尝试修改一个不存在的文件
    touch -c not_exist.txt
    查看是否创建了该文件
    ls

    (not_exist.txt 并没有被创建)

    解析:

    • -c (–no-create) 的作用是:如果目标文件不存在,就什么都不做,不会创建新文件。这用于防止脚本误创建文件。

    5. mkdir命令

    创建测试环境:

    # 1. 创建并进入测试目录
    mkdir -p /root/mkdir_test
    cd /root/mkdir_test
    2. 创建一个目录和一个普通文件
    mkdir dir
    touch file.txt newFile.txt

    指令全称:make directories(创建目录)

    功能:在当前目录下创建一个名为 “dirname” 的目录。

    mkdir [选项] 目录名…

    选项英文全称作用
    无选项 创建单级空目录。若父目录不存在或目录已存在,会报错。
    -p parents 递归创建。可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录。
    • 单级创建:mkdir dir —— 只能建一层,父目录必须存在。

    • 递归创建:mkdir -p a/b/c/d —— 无论多深,一次性建好所有缺失的父目录。

    • 批量创建:mkdir dir1 dir2 dir3 —— 用空格隔开,建多个同级目录。

    5.1:创建普通空目录

    # 1. 查看当前目录状态
    ls -l
    2. 创建一个名为 mydir 的目录
    mkdir mydir
    3. 再次查看目录状态
    ls -l

    • 观察 ls -l 的输出,mydir 那一行以 d 开头,代表这是一个目录(directory)。

    • 这是 mkdir 最基础的用法:在当前目录下创建一个单级空目录。

    5.2:递归建立多个目录,创建指定路径

    # 递归创建多级目录
    mkdir -p path1/path2/path3/path4
    查看结果
    ls -l

    • 如果不用 -p,直接敲 mkdir path1/path2/path3/path4 会报错,因为 path1 还不存在,系统无法在不存在的基础上创建 path2。

    • 加上 -p 后,系统自动逐级创建了 path1、path2、path3、path4 全部四层目录

    5.3:一次性创建多个同级目录

    mkdir dir1 dir2 dir3
    ls

    • 直接在命令后用空格分隔多个目录名,可以一次性创建多个同级目录。

    • 比敲三次 mkdir 高效得多。

    6. rm 指令

    rm 用于删除文件或目录。为了演示各种删除场景(删文件、删空目录、删非空目录、强制删除等),我们需要搭建一个包含多级目录和文件的测试环境。

    创建测试环境:

    # 1. 创建并进入测试目录
    mkdir -p /root/rm_test
    cd /root/rm_test
    2. 创建测试用的普通文件
    touch file1.txt file2.txt
    3. 创建一个空目录
    mkdir empty_dir
    4. 创建一个非空目录(里面放文件)
    mkdir -p not_empty_dir/sub_dir
    touch not_empty_dir/inner_file.txt
    5. 创建一个用于强制删除的只读文件(模拟权限不足的情况)
    touch read_only.txt
    chmod 444 read_only.txt

    mkdir dir
    touch file.txt newFile.txt

    mkdir -p path1/path2
    touch path1/myfile.txt
    touch path1/path2/myfile.txt

    指令全称:remove(移除/删除)

    功能:删除一个或多个文件或目录。

    rm [选项] 文件或目录…

    选项英文全称作用
    无选项 只能删除普通文件。若目标是目录,会直接报错 Is a directory。
    -r / -R recursive 递归删除。用于删除目录及其内部的所有内容(包括子目录)。
    -f force 强制删除。忽略不存在的文件,不提示确认,直接删除(常配合 -r 使用)。
    -i interactive 交互模式。删除前逐个询问确认(y 确认,n 取消)。

    Linux 没有回收站!rm 删除的文件极难恢复。切忌在根目录 / 下随意执行 rm -rf *。

    6.1:删除普通文件

    # 1. 查看当前文件状态(使用 ll 或 ls -l)
    ls -l
    2. 删除普通文件 file.txt
    rm file.txt
    3. 再次查看,确认删除成功
    ls -l

    • rm file.txt 直接删除了文件,没有任何报错或提示。

    • 这是 rm 最基础的用法。

    6.2:删除目录

    # 尝试直接删除目录 dir
    rm dir

    • 直接 rm 一个目录会报错 Is a directory。

    • 这证明 rm 默认只能删除文件,不能删除目录,必须加 -r 选项。

    6.3:递归删除目录

    # 使用 -r 递归删除 dir 目录
    rm -r dir
    查看结果
    ls -l

    • 加上 -r 后,rm 成功删除了目录 dir。

    • 如果目录内部有文件,-r 也会一并递归删除

    6.4:删除文件前询问 (-i)

    # 使用 -i 删除 newFile.txt
    rm -i newFile.txt

    • -i (interactive) 会在删除前询问 y/n。

    • 输入 y 确认删除,输入 n 则取消。

    • 这是一个非常安全的选项,适合在不熟悉环境时使用。

    6.5:删除多级目录前逐一询问(-ri)

    # 1. 先递归创建一个多级目录 d/d/d/d
    mkdir -p d/d/d/d
    2. 查看结构(使用 tree)
    tree d
    3. 使用 -ri 交互式递归删除
    rm -ri d

    • 使用 -ri 删除多级目录时,系统会一层一层地询问你是否进入该目录、是否删除该目录。

    • 这非常安全,但对于深层目录来说操作很繁琐,适合学习阶段使用。

    6.6:递归强制删除(-f 与 -rf )

    # 尝试只加 -f 删除非空目录 path1
    rm -f path1

    -f 只负责“不提示、强制”,但它不负责递归处理目录。删除目录必须有 -r。

    # 1. 先查看 path1 的内部结构
    tree path1
    2. 使用 -rf 强制递归删除
    rm -rf path1
    3. 查看结果
    ls -l

    • rm -rf path1 是最常用也最危险的组合。

    • 它会无提示、无确认、强制递归删除 path1 及其下的所有文件和子目录。

    • 务必在使用前用 ls 或 pwd 确认当前路径和目标路径是否正确!

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » Linux基本指令(一)
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!