当前位置: 首页 > news >正文

【linux】(1)文件操作及vi

文件和目录的创建

创建文件
  1. touch 命令:创建一个新的空文件。

    touch filename.txt
    
  2. echo 命令:创建一个文件并写入内容。

    echo "Hello, World!" > filename.txt
    
  3. cat 命令:将内容写入文件。

    cat > filename.txt
    

    然后输入内容,按 Ctrl+D 结束。

创建目录
  1. mkdir 命令:创建一个新的目录。

    mkdir mydir
    
  2. mkdir -p 命令:递归创建目录。

    mkdir -p parentdir/childdir
    

文件和目录的查看

  1. ls 命令:列出目录内容。

    ls
    
  2. ls -l 命令:详细列出目录内容。

    ls -l
    
  3. ls -a 命令:显示所有文件,包括隐藏文件。

    ls -a
    
  4. cat 命令:显示文件内容。

    cat filename.txt
    
  5. moreless 命令:分页查看文件内容。

    more filename.txt
    less filename.txt
    
  6. head 命令:查看文件开头部分。

    head filename.txt
    
  7. tail 命令:查看文件结尾部分。

    tail filename.txt
    

文件和目录的复制

  1. cp 命令:复制文件。

    cp sourcefile.txt destinationfile.txt
    
  2. cp -r 命令:递归复制目录。

    cp -r sourcedir destinationdir
    

文件和目录的移动和重命名

  1. mv 命令:移动或重命名文件。
    mv oldname.txt newname.txt
    mv filename.txt /newpath/
    

文件和目录的删除

  1. rm 命令:删除文件。

    rm filename.txt
    
  2. rm -r 命令:递归删除目录。

    rm -r mydir
    
  3. rm -f 命令:强制删除文件。

    rm -f filename.txt
    

文件和目录的权限管理

  1. chmod 命令:更改文件权限。

    chmod 755 filename.txt
    
  2. chown 命令:更改文件所有者。

    chown user:group filename.txt
    

文件搜索

  1. find 命令:在目录中搜索文件。

    find /path -name filename.txt
    
  2. grep 命令:在文件内容中搜索特定字符串。

    grep "search term" filename.txt
    

文件和目录的压缩与解压

  1. tar 命令:打包和解包文件。

    tar -cvf archive.tar directory/
    tar -xvf archive.tar
    
  2. gzipgunzip 命令:压缩和解压文件。

    gzip filename.txt
    gunzip filename.txt.gz
    
  3. zipunzip 命令:压缩和解压文件。

    zip archive.zip file1 file2
    unzip archive.zip
    

磁盘空间查看

  1. df 命令:查看文件系统磁盘空间使用情况。

    df -h
    
  2. du 命令:查看文件和目录磁盘使用情况。

    du -sh filename.txt
    du -sh directory/
    

文件编辑vi

启动和退出 Vi
  1. 启动 Vi

    vi filename
    

    如果 filename 存在,Vi 会打开该文件;如果不存在,Vi 会创建一个新文件。

  2. 退出 Vi

    • 保存并退出:
      :wq
      
    • 仅保存:
      :w
      
    • 退出不保存:
      :q!
      
模式

Vi 有三种主要模式:

  1. 命令模式:这是 Vi 的默认模式,在该模式下可以执行各种命令。
  2. 插入模式:在该模式下可以插入和编辑文本。
  3. 底线命令模式:在该模式下可以输入以冒号 : 开头的命令。
切换模式
  1. 进入插入模式

    • 在光标前插入:按 i
    • 在光标后插入:按 a
    • 在行首插入:按 I
    • 在行尾插入:按 A
    • 在当前行下面插入新行:按 o
    • 在当前行上面插入新行:按 O
  2. 回到命令模式

    • 在插入模式下按 Esc
  3. 进入底线命令模式

    • 在命令模式下按 :
基本命令
  1. 光标移动

    • 向上移动:按 k
    • 向下移动:按 j
    • 向左移动:按 h
    • 向右移动:按 l
    • 移动到行首:按 0
    • 移动到行尾:按 $
    • 移动到文件头:按 gg
    • 移动到文件尾:按 G
    • 移动到指定行:按 :n,例如 :10 移动到第10行
    • 移动到当前行的第 n 个字符:按 n|,例如 5| 移动到当前行的第 5 个字符
    • 移动到下一个单词开头:按 w
    • 移动到下一个单词结尾:按 e
    • 移动到上一个单词开头:按 b
  2. 删除文本

    • 删除当前字符:按 x
    • 删除前一个字符:按 X
    • 删除当前行:按 dd
    • 删除光标到行尾的内容:按 D
    • 删除光标到行首的内容:按 d0
    • 删除指定数量的字符:按 ndd,例如 3dd 删除3行
  3. 复制和粘贴

    • 复制当前行:按 yy
    • 复制选定区域:按 y 后跟移动命令(如 yw 复制一个单词)
    • 粘贴复制的内容:按 p(在光标后粘贴)或 P(在光标前粘贴)
    • 复制多行:按 nyy,例如 3yy 复制当前行及以下两行
  4. 替换

    • 替换当前字符:按 r 后跟新字符
    • 替换当前行:按 R 进入替换模式,按 Esc 退出
  5. 查找和替换

    • 查找字符串:按 / 后跟字符串,按 n 查找下一个
    • 向上查找字符串:按 ? 后跟字符串
    • 替换当前行的字符串:按 :s/旧字符串/新字符串/
    • 替换整个文件的字符串:按 :%s/旧字符串/新字符串/g
    • 替换当前行中第一个匹配的字符串:按 :s/旧字符串/新字符串/1
    • 替换当前行中所有匹配的字符串:按 :s/旧字符串/新字符串/g
高级操作
  1. 显示行号

    :set number
    
  2. 取消显示行号

    :set nonumber
    
  3. 撤销和重做

    • 撤销:按 u
    • 重做:按 Ctrl+r
  4. 宏录制

    • 开始录制:按 q 后跟寄存器(如 qa 开始录制到寄存器 a
    • 停止录制:按 q
    • 播放宏:按 @ 后跟寄存器(如 @a 播放寄存器 a 中的宏)
  5. 可视模式

  • 进入可视模式:按 v
  • 进入行可视模式:按 V
  • 进入块可视模式:按 Ctrl+v
  • 在可视模式中选择文本后,可以使用 d 删除,y 复制,~ 切换大小写
底线命令
  1. 保存文件

    :w
    
  2. 退出 Vi

    :q
    
  3. 保存并退出

    :wq
    
  4. 强制退出

    :q!
    
  5. 读取另一个文件的内容

    :r filename
    
  6. 保存到另一个文件

    :w newfilename
    
  7. 打开另一个文件

    :e anotherfile
    
  8. 查看当前文件名和状态

    :f
    
设置选项
  1. 设置自动缩进

    :set autoindent
    
  2. 设置制表符宽度

    :set tabstop=4
    
  3. 设置扩展名自动补全

    :set wildmenu
    
  4. 高亮搜索结果

    :set hlsearch
    
  5. 取消高亮搜索结果

    :set nohlsearch
    
  6. 显示匹配的括号

    :set showmatch
    
  7. 忽略大小写搜索

    :set ignorecase
    
  8. 大小写敏感搜索

    :set noignorecase
    
文件分割与多窗口
  1. 水平分割窗口

    :split filename
    

    快捷键:按 Ctrl-w 后按 s

  2. 垂直分割窗口

    :vsplit filename
    

    快捷键:按 Ctrl-w 后按 v

  3. 切换窗口
    快捷键:按 Ctrl-w 后按 w

  4. 关闭当前窗口

    :close
    

    快捷键:按 Ctrl-w 后按 c

  5. 调整窗口大小
    快捷键:按 Ctrl-w 后按 +- 进行垂直调整,按 >< 进行水平调整

标签页管理
  1. 新建标签页

    :tabnew filename
    
  2. 切换到下一个标签页
    快捷键:按 gt

  3. 切换到上一个标签页
    快捷键:按 gT

  4. 关闭当前标签页

    :tabclose
    
  5. 列出所有标签页

    :tabs
    
其他有用的命令
  1. 删除多行
    快捷键:按 :<start>,<end>d,例如 :1,10d 删除第 1 到第 10 行

  2. 缩进多行
    快捷键:按 :<start>,<end>><count>:<start>,<end><count>,例如 :1,10>> 向右缩进第 1 到第 10 行

  3. 撤销缩进
    快捷键:按 :<start>,<end><<count>:<start>,<end><count>,例如 :1,10<< 向左缩进第 1 到第 10 行

  4. 转换大小写
    快捷键:按 ~ 切换选中文本的大小写

  5. 插入当前日期和时间
    在插入模式下按 Ctrl-r =strftime("%Y-%m-%d %H:%M:%S")

相关文章:

【linux】(1)文件操作及vi

文件和目录的创建 创建文件 touch 命令&#xff1a;创建一个新的空文件。 touch filename.txtecho 命令&#xff1a;创建一个文件并写入内容。 echo "Hello, World!" > filename.txtcat 命令&#xff1a;将内容写入文件。 cat > filename.txt然后输入内容&…...

【5】MySQL数据库备份-XtraBackup - 全量备份

MySQL数据库备份-XtraBackup-全量备份 前言环境版本 安装部署下载RPM 包二进制包 安装卸载 场景分析全量备份 | 恢复备份恢复综合 增量备份 | 恢复部分备份 | 恢复 前言 关于数据库备份的一些常见术语、工具等&#xff0c;可见《MySQL数据库-备份》章节&#xff0c;当前不再重…...

数据治理-数据标准演示

数据字典 数据标准-数据字典 词根 数据标准-词根 业务字典映射 数据标准-业务字典映射 标准文档 数据标准-标准文档...

基于Chisel的FPGA流水灯设计

Chisel流水灯 一、Chisel&#xff08;一&#xff09;什么是Chisel&#xff08;二&#xff09;Chisel能做什么&#xff08;三&#xff09;Chisel的使用&#xff08;四&#xff09;Chisel的优缺点1.优点2.缺点 二、流水灯设计 一、Chisel &#xff08;一&#xff09;什么是Chise…...

LabVIEW齿轮调制故障检测系统

LabVIEW齿轮调制故障检测系统 概述 开发了一种基于LabVIEW平台的齿轮调制故障检测系统&#xff0c;实现齿轮在恶劣工作条件下的故障振动信号的实时在线检测。系统利用LabVIEW的强大图形编程能力&#xff0c;结合Hilbert包络解调技术&#xff0c;对齿轮的振动信号进行精确分析…...

AI帮写:探索国内AI写作工具的创新与实用性

随着AI技术的快速发展&#xff0c;AI写作正成为创作的新风口。但是面对GPT-4这样的国际巨头&#xff0c;国内很多小伙伴往往望而却步&#xff0c;究其原因&#xff0c;就是它的使用门槛高&#xff0c;还有成本的考量。 不过&#xff0c;随着GPT技术的火热&#xff0c;国内也涌…...

n后问题 回溯笔记

问题描述 在nn格的棋盘上放置彼此不受攻击的n个皇后。 按照国际象棋的规则&#xff0c;皇后可以攻击与之处在同 一行或同一列或同一斜线上的棋子。n后问题等价于在nn格的棋盘上放置n个皇后&#xff0c;任何2个皇后不放在同一行或同一列或同一斜线上。 代码 import java.uti…...

简述Java中实现Socket通信的步骤

在Java中&#xff0c;实现Socket通信通常涉及客户端和服务器端两个角色。以下是它们各自的基本步骤&#xff1a; 服务器端&#xff08;Server&#xff09; 创建ServerSocket对象&#xff1a; 在服务器端&#xff0c;首先需要创建一个ServerSocket对象。这个对象会监听来自客户…...

Asp.Net Core 实现分片下载的最简单方式

技术群里的朋友遇到了这个问题&#xff0c;起初的原因是他对文件增加了一个属性配置 fileResult.EnableRangeProcessing true;这个属性我从未遇到过&#xff0c;然后&#xff0c;去F1查看这个属性的描述信息也依然少的可怜&#xff0c;只有简单的描述为(获取或设置为 启用范围…...

[Mac软件]Leech for Mac v3.2 - 轻量级mac下载工具

黑果魏叔推荐Leech是由Many Tricks开发的适用于Mac OS X的轻量级且功能强大的下载管理器。 Leech让您完全控制下载&#xff0c;并与浏览器完全集成。您可以将下载排队&#xff0c;暂停和恢复&#xff0c;从受密码保护的服务器下载&#xff0c;并将密码存储在系统范围的安全钥匙…...

留给“端侧大模型”的时间不多了

端侧大模型&#xff08;Edge AI models&#xff09;&#xff0c;也就是只在设备本地&#xff08;如智能手机、IoT设备、嵌入式系统等&#xff09;运行的大模型&#xff0c;过去一两年来非常流行。 具体表现在&#xff0c;终端设备厂商&#xff0c;如苹果、荣耀、小米、OV等&…...

Pytest框架中的Setup和Teardown功能

在 pytest 测试框架中&#xff0c;setup 和 teardown是用于在每个测试函数之前和之后执行设置和清理的动作&#xff0c;而pytest 实际上并没有内置的 setup 和 teardown 函数&#xff0c;而是使用了一些装饰器或钩子函数来实现类似的功能。 学习目录 钩子函数&#xff08;Hook…...

yolov10/v8 loss详解

v10出了就想看看它的loss设计有什么不同&#xff0c;看下来由于v8和v10的loss部分基本一致就放一起了。 v10的论文笔记&#xff0c;还没看的可以看看&#xff0c;初步尝试耗时确实有提升 好记性不如烂笔头&#xff0c;还是得记录一下&#xff0c;以免忘了&#xff0c;废话结束…...

Typescript高级: 深入理解infer关键字

概述 在 TS 中&#xff0c;infer 是一个高级类型操作&#xff0c;特别是条件类型和映射类型中非常有用的关键字它在泛型中使用也会是一个强大工具&#xff0c;增强了类型推断的能力&#xff0c;让开发者更灵活地处理和操作类型它允许在泛型类型推导过程中捕获一个具体的类型&a…...

JQC-3FF-S-Z 继电器模块使用(arduino)

前言 继电器模块可以控制电流的接通和非接通状态&#xff0c;和开关一样。实际上是用小电流去控制大电流运作的一种“自动开关” 本文只是简单使用继电器模块做一个 led 点亮和熄灭的案例&#xff0c;结合案例可以和 nodemcu 等板子结合做出远程控制开关。 材料准备 杜邦线…...

黑马一站制造数仓实战2

问题 DG连接问题 原理&#xff1a;JDBC&#xff1a;用Java代码连接数据库 Hive/SparkSQL&#xff1a;端口有区别 可以为同一个端口&#xff0c;只要不在同一台机器 项目&#xff1a;一台机器 HiveServer&#xff1a;10000 hiveserver.port 10000 SparkSQL&#xff1a;10001…...

网络I/O模型

网络I/O模型 同步I/O阻塞I/O非阻塞I/OI/O多路复用select函数接口示例 poll函数接口示例 poll 和 select 的区别epoll原理&#xff1a;示例 异步I/O 同步I/O 阻塞I/O 一个基本的C/S模型如下图所图&#xff1a;其中 listen()、connect()、write()、read() 都是阻塞I/O&#xff0…...

Docker 简介和安装

目录 Docker 是什么 跟普通虚拟机的对比 打包、分发、部署 Docker 部署的优势 Docker 通常用来做什么 重要概念&#xff1a;镜像、容器 安装 镜像加速源 Docker 是什么 Docker 是一个应用打包、分发、部署的工具 你也可以把它理解为一个轻量的虚拟机&#xff0c;它只虚…...

【源码】Spring Data JPA原理解析之Repository自定义方法命名规则执行原理(二)

Spring Data JPA系列 1、SpringBoot集成JPA及基本使用 2、Spring Data JPA Criteria查询、部分字段查询 3、Spring Data JPA数据批量插入、批量更新真的用对了吗 4、Spring Data JPA的一对一、LazyInitializationException异常、一对多、多对多操作 5、Spring Data JPA自定…...

Vue前端中从后端获取图片验证码

前端发送请求 <template><el-form :model"user" :rules"rules" ref"userForm" class"login" label-width"auto" style"max-width: 600px"><el-form-item label"用户名" prop"name…...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 &#xff08;忘了有没有这步了 估计有&#xff09; 刷机程序 和 镜像 就不提供了。要刷的时…...

12.找到字符串中所有字母异位词

&#x1f9e0; 题目解析 题目描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义&#xff1a; 若两个字符串包含的字符种类和出现次数完全相同&#xff0c;顺序无所谓&#xff0c;则互为…...

c#开发AI模型对话

AI模型 前面已经介绍了一般AI模型本地部署&#xff0c;直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型&#xff0c;但是目前国内可能使用不多&#xff0c;至少实践例子很少看见。开发训练模型就不介绍了&am…...

分布式增量爬虫实现方案

之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面&#xff0c;避免重复抓取&#xff0c;以节省资源和时间。 在分布式环境下&#xff0c;增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路&#xff1a;将增量判…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码&#xff0c;实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

JVM虚拟机:内存结构、垃圾回收、性能优化

1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合

在汽车智能化的汹涌浪潮中&#xff0c;车辆不再仅仅是传统的交通工具&#xff0c;而是逐步演变为高度智能的移动终端。这一转变的核心支撑&#xff0c;来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒&#xff08;T-Box&#xff09;方案&#xff1a;NXP S32K146 与…...

云原生安全实战:API网关Kong的鉴权与限流详解

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关&#xff08;API Gateway&#xff09; API网关是微服务架构中的核心组件&#xff0c;负责统一管理所有API的流量入口。它像一座…...

LLMs 系列实操科普(1)

写在前面&#xff1a; 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容&#xff0c;原视频时长 ~130 分钟&#xff0c;以实操演示主流的一些 LLMs 的使用&#xff0c;由于涉及到实操&#xff0c;实际上并不适合以文字整理&#xff0c;但还是决定尽量整理一份笔…...

scikit-learn机器学习

# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...