程序员scholar 程序员scholar
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Python 基础

    • Python基础
  • Python 进阶

    • 装饰器与生成器
    • 异常处理
    • 标准库精讲
    • 模块与包
    • pip包管理工具
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
前端 (opens new window)
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Python 基础

    • Python基础
  • Python 进阶

    • 装饰器与生成器
    • 异常处理
    • 标准库精讲
    • 模块与包
    • pip包管理工具
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
前端 (opens new window)
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
npm

(进入注册为作者充电)

  • 操作系统 - Linux

    • 基础操作
    • 目录操作
      • 文件操作
      • 用户和权限管控
      • 打包和解压
      • 定时任务管理
      • 系统管理
      • 网络服务操作
      • 磁盘分区管理
      • 其他常用命令
    • 云服务器
    • 操作系统 - Linux
    scholar
    2024-03-27
    目录

    目录操作

    # 1. 切换目录(cd)

    cd(change directory)命令用于在 Linux 文件系统中切换当前工作目录。

    cd /               # 切换到根目录
    cd /bin            # 切换到根目录下的 bin 目录
    cd ../             # 切换到上一级目录,等同于 cd ..
    cd ~               # 切换到当前用户的 home 目录
    cd -               # 切换回上次所在的目录
    cd xx              # 切换到当前目录下的名为 xx 的子目录,如果目录不存在将报错
    cd /xxx/xx/x       # 使用完整路径切换到指定目录,过程中可以使用 tab 键快速补全路径
    
    1
    2
    3
    4
    5
    6
    7

    # 2. 查看目录(ls,ll)

    ls 命令用于列出目录内容,包括文件和其他目录。

    ls                 # 查看当前目录下的所有文件和目录
    ls -a              # 查看包括隐藏文件在内的所有文件和目录
    ls -l              # 以列表形式查看,显示文件和目录的详细信息
    ls /bin            # 查看 /bin 目录下的所有文件和目录
    
    1
    2
    3
    4
    • ls -a:显示所有文件和目录,包括以点(.)开始的隐藏文件。
    • ls -l:以列表格式显示文件和目录的详细信息,如权限、链接数、所有者、文件大小和最后修改时间等。
    • ls /bin:列出指定目录(如 /bin)中的所有文件和目录。

    在很多 Linux 发行版中,ll 是 ls -l 的别名,用于快速以列表形式查看当前目录内容。 image-20231211161910934

    理解硬链接

    • 硬链接的创建:当创建文件时,文件系统会自动创建一个链接数为 1 的硬链接。使用 ln 源文件 目标文件 命令可以创建额外的硬链接。这不会复制文件内容,而是在文件系统中为同一文件内容创建另一个访问点(即另一个文件名)。
    • 链接数:文件的链接数表示有多少个硬链接指向该文件。每增加一个硬链接,链接数就增加一;每删除一个硬链接,链接数就减少一。
    • 文件的删除:删除硬链接并不会立即删除文件本身,只有当一个文件的链接数减少到 0 时,文件的内容才会被真正删除,因为这意味着没有任何硬链接指向该文件了。

    # 3. 创建目录(mkdir)

    mkdir(make directory)命令用于创建新的目录

    mkdir tools           # 在当前目录下创建一个名为 tools 的目录
    mkdir /bin/tools      # 在指定目录(/bin)下创建一个名为 tools 的目录
    mkdir -p /bin/tools   # 使用 -p 选项创建多级目录,若父目录不存在则会自动创建
    
    1
    2
    3
    • mkdir tools:创建当前工作目录下的一个名为 tools 的新目录。
    • mkdir /bin/tools:尝试在 /bin 目录下创建 tools 目录。这通常需要 root 权限,因为 /bin 目录属于系统目录。
    • mkdir -p /bin/tools:-p(parents)选项允许连续创建多个目录。如果父目录 /bin 存在,就在其下创建 tools;如果不存在,就先创建 /bin,再在其下创建 tools

    # 4. 查看目录结构(tree)

    tree 命令以树状图的形式显示目录和文件结构,便于直观了解目录的构成。

    tree
    
    1
    • 注意:tree 命令可能不是预装在所有 Linux 发行版上的,如果系统提示找不到 tree 命令,需要先安装它。例如,在基于 RPM 的系统中,可以使用 yum install -y tree(或在基于 Debian 的系统中使用 apt-get install tree)来安装。

    # 5. 删除目录与文件(rm)

    rm(remove)命令用于删除文件和目录。

    rm 文件名             # 删除指定的文件
    rm -f 文件名          # 使用 -f (force)选项强制删除文件,不进行询问
    rm -r 文件夹名        # 使用 -r (recursive)选项递归删除指定目录及其中的所有内容
    rm -rf 文件夹名       # 同时使用 -r 和 -f 选项递归且强制删除目录和文件,不进行询问
    rm -rf *             # 删除当前目录下的所有文件和目录
    rm -rf /*            # 【极度危险】删除根目录下的所有文件,相当于系统级的格式化,通常会造成系统不可用
    
    1
    2
    3
    4
    5
    6
    • rm -f 文件名:-f 选项用于强制删除,不会询问用户是否确认删除。
    • rm -r 文件夹名:-r 选项使 rm 命令能递归删除目录及其下的所有文件和子目录。
    • rm -rf 文件夹名:组合 -r 和 -f 选项可以无提示地递归删除文件和目录,这在自动化脚本中非常有用。
    • rm -rf \*:删除当前工作目录下的所有文件和目录,请谨慎使用,确保你在正确的目录下执行此命令。
    • rm -rf /\*:这个命令会尝试删除系统的每个文件和目录,非常危险,可能会导致系统不可恢复的损坏。

    # 6. 移动目录或重命名(mv)

    mv 命令用于移动文件或目录,也可以用来重命名文件或目录。

    # 6.1 重命名文件或目录

    mv 旧文件名 新文件名          # 重命名文件或目录
    
    1
    • mv 旧文件名 新文件名:将文件或目录从旧名称改为新名称。如果新文件名位于不同目录下,则相当于移动文件。

    # 6.2 移动文件或目录

    mv /源目录/目标文件或目录 /目标目录    # 将文件或目录移动到另一个位置
    
    1
    • mv 当前目录名 新目录名:在当前目录内重命名目录。
    • mv /usr/tmp/tool /opt:将 /usr/tmp 目录下的 tool 目录移动到 /opt 目录下。
    • mv /usr/tmp/tool/* /opt/:将 tool 目录下的所有文件和子目录移动到 /opt 目录下。

    # 7. 拷贝目录(cp)

    cp 命令用于复制文件或目录。

    # 7.1 复制文件

    cp 源文件 目标文件或目录    # 复制文件到指定位置
    
    1
    • cp hello.txt a/:将 hello.txt 文件复制到目录 a 下。

    # 7.2 递归复制目录

    cp -r /usr/tmp/tool /opt    # 递归复制目录到指定位置
    
    1
    • cp -r /usr/tmp/tool /opt:递归复制 /usr/tmp/tool 目录及其所有子目录和文件到 /opt 目录下。

    # 7.3 强制覆盖不提示

    cp -rf /home/a /b/          # 强制覆盖,不提示
    \cp -r /home/a /b/          # 使用 \ 来忽略任何别名,强制执行原始的 cp 命令
    
    1
    2
    • cp -r /home/a /b/:将 /home/a 目录递归复制到 /b/ 目录下,如果目标目录存在同名文件或目录,将会提示是否覆盖。
    • 为了强制覆盖而不进行提示,可以在 cp 命令前加 -f 选项或在命令前添加 \ 来忽略别名(如果 cp 被配置为别名,如 alias cp='cp -i'):

    # 8. 搜索目录或文件(find)

    find 命令非常强大,可以从指定的起始路径递归遍历所有子目录,根据给定的搜索条件找到文件或目录。

    # 8.1 基础搜索

    find 起始路径 -name "搜索模式"
    
    1

    查找特定名称的文件或目录:

    find /bin -name 'a*'        # 在 /bin 目录及其子目录下查找所有以 'a' 开头的文件或目录
    
    1

    使用通配符:

    • * 代表任意数量的字符。
    • test* 匹配任何以 "test" 开头的内容。
    • *test 匹配任何以 "test" 结尾的内容。
    • test 匹配任何包含 "test" 的内容。

    # 8.2 根据文件大小搜索

    find 命令还可以根据文件大小来搜索文件,这对于清理磁盘空间或查找大文件非常有用。

    find / -size -10k    # 查找小于 10KB 的文件
    find / -size +100M   # 查找大于 100MB 的文件
    find / -size +1G     # 查找大于 1GB 的文件
    
    1
    2
    3
    • -size -10k:查找小于 10KB 的文件。
    • -size +100M:查找大于 100MB 的文件。
    • -size +1G:查找大于 1GB 的文件。

    # 9. 查看当前目录(pwd)

    pwd(print working directory)命令用于显示当前工作目录的绝对路径。

    pwd   # 显示当前工作目录的绝对路径
    
    1
    • 使用 pwd 命令可以立即知道你当前所在的目录,这在进行多个操作或脚本编写时非常有用,特别是当你在终端中深入多层目录时。
    • 在 Linux 系统中,绝对路径以根目录 / 开头,这与 Windows 系统的盘符概念不同。
    编辑此页 (opens new window)
    上次更新: 2024/12/28, 18:32:08
    基础操作
    文件操作

    ← 基础操作 文件操作→

    Theme by Vdoing | Copyright © 2019-2025 程序员scholar
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式