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

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

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

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

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

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

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

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

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

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

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

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

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

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

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

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

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

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

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

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

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

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

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

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

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

(进入注册为作者充电)

  • 操作系统 - Linux

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

    文件操作

    # 1. 创建文件(touch)

    touch 命令主要用于创建空文件,或者改变现有文件的时间戳(包括访问时间和修改时间)。

    # 1.1 创建空文件

    touch a.txt
    
    1
    • touch a.txt:这条命令在当前目录下创建一个名为 a.txt 的新文件。如果该文件已经存在,则 touch 命令会更新文件的时间戳,将其设置为当前系统时间,而不会更改文件内容。

    # 1.2 修改文件时间戳

    使用 touch 命令还可以修改文件的时间戳,即使文件已存在:

    touch a.txt  # 更新 a.txt 的时间戳为当前系统时间
    
    1
    • 如果指定的文件不存在,touch 将会创建一个新的空文件。

    # 2. 删除文件(rm)

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

    # 2.1 删除单个文件

    rm 文件名
    
    1
    • rm a.txt:删除当前目录下名为 a.txt 的文件。如果文件不存在,rm 会报错。

    # 2.2 强制删除文件

    rm -f 文件名
    
    1
    • rm -f a.txt:强制删除名为 a.txt 的文件,即使文件不存在,也不会报错。-f(force)选项意味着强制执行删除操作,不会询问用户确认。

    注意事项

    • 使用 rm 命令时要特别小心,因为一旦文件被删除,通常无法恢复。特别是使用 -f 选项时,系统不会提示确认就直接删除文件。
    • 在执行批量删除或删除重要文件之前,务必再次确认命令的正确性和当前的工作目录。
    • 对于重要数据,建议在删除前进行备份。

    # 3. 编辑文件(vi、vim)

    在 Linux 系统中,vi 和 vim(Vi IMproved)是两个非常流行的文本编辑器,它们提供了强大的文本编辑功能。

    vi/vim 编辑器在操作界面上有三种基本模式:

    1. 命令模式(Command Mode):默认进入的模式,可以使用快捷键执行删除、复制、粘贴等操作,但不能直接编辑文本。
    2. 插入模式(Insert Mode):在此模式下,可以直接编辑文本,即输入的内容会被加入到文件中。
    3. 底行模式(Last Line Mode):用于执行保存文件、退出编辑器等命令。

    # 3.1 打开和创建文件

    vi 文件名     # 打开指定文件进行编辑,如果文件不存在,则创建该文件
    
    1

    # 3.2 从命令模式到插入模式

    • i:在光标所在字符前插入文本。
    • a:在光标所在字符后插入文本。
    • o:在当前行之下新开一行,并进入插入模式。
    • O:在当前行之上新开一行,并进入插入模式。

    # 3.3 从插入模式返回到命令模式

    按 `ESC` 键:从插入模式返回到命令模式。
    
    1

    # 3.4 命令模式下的操作

    • dd:删除光标所在的整行。
    • ndd:从当前行开始,删除下面的 n 行。
    • yy:复制光标所在行。
    • nyy:从当前行开始,复制下面的 n 行。
    • p:粘贴。
    • u:撤销上一次操作。
    • gg:快速移动到文件开头。
    • G:快速移动到文件末尾。
    • /str:向下搜索字符串 str。

    # 3.5 底行模式下的操作

    • :w:保存文件。
    • :q:退出编辑器,如果文件被修改过,需要加 ! 强制退出,如 :q!。
    • :wq 或 :x 或 Shift+z+z:保存更改并退出编辑器。
    • :set nu:显示行号。
    • :set paste:启用粘贴模式,避免粘贴文本时的格式错乱。
    • :%s/旧文本/新文本/g:全局替换文件中的文本。

    # 3.6 小技巧

    • 在打开文件时直接跳转到指定行:vim +行号 文件名,例如 vim +10 filename.txt 打开文件并跳转到第 10 行。
    • 以只读模式打开文件:vim -R 文件名,例如 vim -R /etc/passwd。

    # 4. 查看文件(cat,less,more)

    在 Linux 系统中,查看文件内容是日常操作之一。cat、less、more 是几个用于在命令行查看文件内容的常用工具,它们各自有不同的特点和用途。

    # 4.1 cat

    cat(concatenate)命令用于显示整个文件的内容。

    cat a.txt  # 查看文件 a.txt 的内容
    
    1
    • 查看文件内容并显示行号:
    cat -n a.txt  # 查看文件 a.txt 的内容,并显示行号
    
    1

    cat 命令将文件的全部内容加载到内存中再显示,因此在查看大型文件时可能会比较慢。

    # 4.2 less

    less 命令提供了一个高效的方法来查看大型文件,因为它不会一次性加载整个文件到内存。

    less a.txt  # 查看文件 a.txt 的内容
    
    1
    • 导航:使用 PgUp 和 PgDn 进行翻页,按 q 退出查看。
    • 特点:less 支持“懒加载”,只加载当前屏幕显示的内容,随着用户翻页,逐步加载新的内容。

    # 4.3 more

    more 命令也用于分页显示文本文件的内容,但它相比于 less 有更多限制。

    more a.txt  # 查看文件 a.txt 的内容
    
    1
    • 导航:使用空格键翻页,按 q 退出查看。
    • 特点:more 在查看之前需要加载整个文件内容,适用于中等大小的文件。

    对比和选择

    • 小文件查看:cat 适合查看小到中等大小的文件。
    • 大文件查看:less 是查看大文件的最佳选择,因为它支持随机访问,不必加载整个文件。
    • 分页查看:more 和 less 都可以实现分页查看,但 less 提供了更多的功能和更好的性能。

    # 5. 查看文件首尾(head,tail)

    # 5.1 head

    head 命令用于查看文件的开头部分,默认显示文件的前 10 行。

    head a.txt  # 查看 a.txt 文件的前 10 行内容
    
    1
    • 查看指定行数的内容:
    head -n 5 a.txt  # 查看 a.txt 文件的前 5 行内容
    
    1

    -n 选项后跟数字,用于指定显示文件开头的行数。

    # 5.2 tail

    tail 命令用于查看文件的尾部内容,默认显示文件的后 10 行。

    tail a.txt  # 查看 a.txt 文件的后 10 行内容
    
    1
    • 查看指定行数的尾部内容:
    tail -n 5 a.txt  # 查看 a.txt 文件的后 5 行内容
    
    1
    • 实时追踪文件更新:
    tail -f a.txt  # 查看 a.txt 文件的最新追加内容,并实时更新显示
    
    1

    -f 选项用于实时监控文件尾部的新增内容,特别适合于查看正在写入的日志文件。

    # 6. 输出内容到控制台(echo)

    echo 命令用于在命令行终端输出文本或命令执行结果。

    echo "Hello World"  # 输出文本 "Hello World"
    
    1
    • 输出环境变量:
    echo $PATH  # 输出环境变量 PATH 的值
    
    1
    • 执行命令并输出结果:
    echo `pwd`  # 执行 pwd 命令并输出当前工作目录的路径
    
    1

    反引号 `(不是单引号)用于执行包围的命令,并将命令的输出作为 echo 命令的输入进行输出。

    # 7. 输出重定向/追加(> / >>)

    重定向和追加是将命令的输出从标准输出(通常是终端)重定向到文件的方法。

    cat 文件1 > 文件2       # 将文件1的内容覆盖到文件2中(若文件2不存在,则创建)
    ls -l /home > info.txt  # 将 /home 下的文件列表重定向写入 info.txt 中
    cal >> /time            # 将当前日历信息追加到 /time 文件中
    
    1
    2
    3
    • > 用于重定向输出,如果目标文件已存在,则覆盖原有内容。
    • >> 用于追加输出,将新内容添加到目标文件的末尾。

    # 8. 查看历史命令(history)

    history 命令显示用户执行过的命令历史列表。

    history             # 查看所有执行过的命令历史
    history 10          # 查看最近执行过的10条命令
    !5                  # 执行历史命令列表中编号为5的命令
    
    1
    2
    3
    • history 命令显示的每个命令前都有一个编号,使用 !编号 可以快速重复执行该命令。

    # 9. 查看命令位置(which,whereis)

    which 命令用于查找并显示给定命令的绝对路径,搜索基于用户的 $PATH 环境变量。

    which bash  # 查看 "bash" 命令的绝对路径
    
    1
    • 作用:确认一个命令的位置和哪个版本将被系统调用。

    whereis 命令用于查找命令的二进制文件、源代码和帮助文件的位置。

    whereis bash  # 查找 "bash" 命令的相关文件位置
    
    1
    • 作用:提供命令相关文件的更全面信息,包括二进制、源代码和帮助文档的路径。

    which和whereis的区别?

    • 搜索范围:which 仅搜索 $PATH 中的目录寻找可执行文件,而 whereis 搜索的范围更广,包括二进制文件、源代码和文档。
    • 结果展示:which 通常只返回第一个找到的命令路径,whereis 则提供命令相关的多个文件位置。
    • 使用场景:
      • 当你需要确认使用的命令的具体位置或版本时,which 是更好的选择。
      • 当你需要找到命令的相关文件,如源代码或帮助文档时,whereis 提供了更全面的信息。

    # 10. 过滤查找(grep)

    grep 命令用于在文件或通过管道传递的数据中搜索与指定模式匹配的行。

    grep "yes" hello.txt  # 在 hello.txt 文件中搜索包含 "yes" 的行
    
    1
    • -n 选项:显示匹配行及其行号。

    结合管道使用:

    cat hello.txt | grep "yes"  # 将 hello.txt 文件的内容传给 grep,搜索包含 "yes" 的行
    cat hello.txt | grep -n "yes"  # 同上,但同时显示行号
    
    1
    2
    • 管道符 |:将左边命令的输出作为右边命令的输入。这在组合多个命令以进行复杂的文本处理时非常有用。

    image-20231211151022294

    # 11. 数量统计(wc)

    wc 命令可以提供一个或多个文件的行数、单词数、字符数等统计信息。

    wc [选项] 文件路径
    
    1
    • -l:统计行数。
    • -w:统计单词数量。
    • -c:统计字节(byte)数量。
    • -m:统计字符数量。
    wc -l a.txt  # 统计文件 a.txt 的行数
    wc -w a.txt  # 统计文件 a.txt 的单词数
    wc -c a.txt  # 统计文件 a.txt 的字节数
    wc -m a.txt  # 统计文件 a.txt 的字符数
    
    1
    2
    3
    4

    # 12. wc 结合管道符的用法

    在 Linux 中,wc 命令经常与管道符(|)结合使用,以实现更为强大和灵活的文本数据统计功能。管道符允许你将一个命令的输出作为另一个命令的输入,当 wc 与管道符结合使用时,你可以对其他命令的输出进行行、单词或字符的统计。

    1. 统计当前目录下文件和目录的数量:
    ls | wc -l
    
    1
    • 这个命令首先列出当前目录下的所有文件和目录,然后 wc -l 统计这个列表的行数,即文件和目录的总数。
    1. 统计当前用户的进程数量:
    ps -u $USER | wc -l
    
    1
    • ps -u $USER 列出当前用户的所有进程,wc -l 统计这些进程的数量。
    1. 统计特定文件中包含特定字符串的行数:
    grep '特定字符串' 文件名 | wc -l
    
    1
    • 这个命令首先使用 grep 查找文件中包含“特定字符串”的行,然后使用 wc -l 统计满足条件的行数。
    1. 统计不重复行的数量:
    cat 文件名 | sort | uniq | wc -l
    
    1
    • 这个命令首先将文件内容排序,然后使用 uniq 命令过滤掉重复的行,最后 wc -l 统计结果中的行数,即不重复行的数量。

    通过灵活地结合使用 wc 命令和管道符,你可以轻松地在 Linux 命令行中进行复杂的文本数据处理和统计。这种方法不仅提高了操作的效率,而且极大地扩展了 Linux 命令行的功能性。

    # 13. 终止操作

    在 Linux 终端中,Ctrl+C 和 Ctrl+Z 是两个非常重要的快捷键,用于控制正在运行的程序。

    • Ctrl+C:发送 SIGINT 信号给当前程序,请求终止程序运行。大多数程序会响应这个信号并进行清理工作后退出。

    • Ctrl+Z:发送 SIGTSTP 信号给当前程序,将其挂起(暂停执行)并放到后台。这使得用户可以在同一终端内执行其他命令。

    管理后台程序:

    • fg 命令:将最近一个被挂起的后台程序恢复到前台继续执行。

      fg  # 将最近挂起的程序恢复到前台
      
      1
    • bg 命令:使被挂起的程序在后台继续执行。

      bg  # 将最近挂起的程序在后台继续执行
      
      1
    • jobs 命令:列出当前会话中所有的任务及其状态。

    编辑此页 (opens new window)
    上次更新: 2024/12/28, 18:32:08
    目录操作
    用户和权限管控

    ← 目录操作 用户和权限管控→

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