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

Linux基础(2)基础命令与vim

文件的复制和移动

cp

拷贝文件和目录

cp file file_copy --> file 是目标文件,file_copy 是拷贝出来的文件
cp file one --> 把 file 文件拷贝到 one 目录下,并且文件名依然为 file
cp file one/file_copy --> 把 file 文件拷贝到 one 目录下,文件名为file_copy
cp *.txt folder --> 把当前目录下所有 txt 文件拷贝到 folder 目录下

-递归的拷贝,拷贝整个目录
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

基本语法:

cp [选项] 源文件 目标文件

常用选项包括:
-r–recursive: 递归复制整个目录。
-p–preserve: 保留源文件的属性,包括文件权限、所有者、组、时间戳等。
-f–force: 强制复制,覆盖已存在的目标文件。
-i–interactive: 交互式复制,提示是否覆盖已存在的目标文件。
-v–verbose: 显示详细的复制过程。
-u–update: 仅复制源文件中较新的文件到目标目录。
-l–link: 创建硬链接而不是复制文件。
-s–symbolic-link: 创建符号链接而不是复制文件。
错误情况:
如果源文件不存在,则会显示错误信息并终止复制过程。
如果目标文件已存在且未使用 -f 或 -i 参数,则会显示错误信息并终止复制过程。
如果没有足够的权限进行复制操作,则会显示错误信息并终止复制过程。
注意事项:
1.当复制单个文件时,目标文件可以是一个已经存在的文件或者是一个新的文件名。如果目标文件已经存在,且没有使用 -f 或 -i 参数,那么复制操作将会被终止,并且不会覆盖目标文件。
2.当复制多个文件时,目标文件必须是一个目录。如果目标文件是一个已经存在的目录,那么源文件将会被复制到该目录中。如果目标文件不存在,那么会先创建该目录,然后将源文件复制到该目录中。
3.使用 -r 或 --recursive 参数可以递归复制整个目录及其子目录中的文件。如果不使用该参数,当源文件是一个目录时,cp命令将会报错。
4.使用 -p 或 --preserve 参数可以保留源文件的属性,包括文件权限、所有者、组、时间戳等。如果不使用该参数,复制的文件将会使用默认的属性。
5.使用 -f 或 --force 参数可以强制复制,即使目标文件已经存在。使用该参数时要小心,因为它会覆盖已存在的目标文件。
6.使用 -i 或 --interactive 参数可以进行交互式复制,即在复制过程中提示是否覆盖已存在的目标文件。
7.使用 -v 或 --verbose 参数可以显示详细的复制过程,包括复制的文件名和目标路径。
8.使用 -u 或 --update 参数可以仅复制源文件中较新的文件到目标目录。如果源文件和目标文件的时间戳相同,那么不会进行复制操作。
9.使用 -l 或 --link 参数可以创建硬链接而不是复制文件。硬链接是指多个文件共享同一份数据,如果其中一个文件被修改,其他文件也会受到影响。
10.使用 -s 或 --symbolic-link 参数可以创建符号链接而不是复制文件。符号链接是指一个文件指向另一个文件或目录的快捷方式。
11.在复制过程中,如果没有足够的权限进行复制操作,将会显示错误信息并终止复制过程。

mv

移动(重命名)文件或目录,与cp的用法相同

mv file one --> 将 file 文件移动到 one 目录下
mv new_folder one --> 将 new_folder 文件夹移动到one目录下
mv *.txt folder --> 把当前目录下所有 txt 文件移动到 folder 目录下
mv file new_file --> file 文件重命名为 new_file
  • -i 向用户确认是否删除;
  • -f 文件强制删除;
  • -r 递归删除文件夹,著名的删除操作 rm -rf 。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

语法:
mv [选项] 源文件或目录 目标文件或目录

-i: 交互式移动。在覆盖文件之前提示用户。
-u: 只在源文件比目标文件新,或当目标文件不存在时,才移动或重命名源文件。
-f: 强制移动,即使目标文件存在也不提示。
-b: 在覆盖目标文件之前进行备份。
**–backup[=CONTROL]:**控制备份,其中 CONTROL 可以是 none, off, numbered, t, existing, 或 nil。
-v: 详细模式,显示正在移动的文件的信息。
-n: 不覆盖已存在的文件。
–strip-trailing-slashes: 删除源文件名末尾的斜杠。
–update: 只在源文件和目标文件不同或目标文件不存在时,才进行移动。

用户权限

用户

Linux 是一个多用户的操作系统。在 Linux 中,理论上来说,我们可以创建无数个用户,但是这些用户是被划分到不同的群组里面的,有一个用户,名叫 root ,是一个很特殊的用户,它是超级用户,拥有最高权限。
自己创建的用户是有限权限的用户,这样大大提高了 Linux 系统的安全性,有效防止误操作或是病毒攻击,但是我们执行的某些命令需要更高权限时可以使用 sudo 命令。

sudo

以 root 身份运行命令

sudo ls/date --> 当然查看日期是不需要sudo的这里只是演示,sudo 完之后一般还需要输入用户密码的

在这里插入图片描述

在这里插入图片描述

useradd + passwd

useradd 添加新用户
passwd 修改用户密码
这两个命令需要 root 用户权限

useradd laowine --> 添加一个laowine用户,添加完之后在 /home 路径下可以查看
passwd laowine --> 修改laowine用户的密码

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

su

切换用户,需要root权限

sudo su --> 切换为root用户(exit 命令或 CTRL + D 快捷键都可以使普通用户切换为 root 用户)
su laowine --> 切换为普通用户
su - --> 切换为root用户

在这里插入图片描述

vim

打开 Vim

在终端命令行中输入 vim 回车后 Vim 就会被运行起来,也可以用 Vim 来打开一个文件,只需要
在 vim 后面再加文件名。如 vim file.name ,如果文件不存在,那么会被创建。
在这里插入图片描述

插入

进入文件之后,此时处于交互模式,可以通过输入 i 进入插入模式。
在这里插入图片描述
在这里插入图片描述

移动

在 Vim 的交互模式下,我们可以在文本中移动光标。
h 向左移动一个字符
j 向下移动一个字符
k 向上移动一个字符
i 向右移动一个字符
当然也可以使用四个方向键进行移动,效果是一样的。

跳至行首和行末

行首:在交互模式下,为了将光标定位到一行的开始位置,只需要按下数字键 0 即可,键盘上的
Home 键也有相同效果。
行末:在交互模式下,为了将光标定位到一行的末尾,只需要按下美元符号键 $ 即可,键盘上的
End 键也有相同效果。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

按单词移动

在交互模式下,按字母键 w 可以一个单词一个单词的移动。

退出文件

在交互模式下,按下冒号键 : 进入命令模式,再按下 q 键,就可以退出了。
如果在退出之前又修改了文件,就直接想用 :q 退出 Vim ,那么 Vim 会显示一个红字标明错误信
息。此时我们有两个选择:
保存并退出 :wq 或 :x ;
不保存且退出 :q! 。
在这里插入图片描述
在这里插入图片描述

标准操作

删除字符

在交互模式下,将光标定位到一个你想要删除的字符上,按下字母键 x 你会发现这个字符被删除
了。
也可以一次性删除多个字符,只需要在按 x 键之前输入数字即可。
在这里插入图片描述
在这里插入图片描述

删除(剪切)单词,行

删除一行:连按两次 d 来删除光标所在的那一行。
删除多行:例如先输入数字 2 ,再按下 dd ,就会删除从光标所在行开始的两行。
删除一个单词:将光标置于一个单词的首字母处,然后按下 dw 。
删除多个单词:例如先按数字键 2 再按 dw 就可以删除两个单词了。
从光标所在位置删除至行首: d0 。
从光标所在位置删除至行末: d$ 。

复制单词,行

复制行:按两次 y 会把光标所在行复制到内存中,和 dd 类似, dd 用于“剪切”光标所在行。
复制单词: yw 会复制一个单词。
复制到行末: y$ 是复制从光标所在处到行末的所有字符。
复制到行首: y0 是复制光标所在处到行首的所有字符。
在这里插入图片描述

粘贴

如果之前用 dd 或者 yy 剪切复制过来的,可以使用 p 来粘贴。同样也可以使用 数字+p 来表示复制多次。

替换一个字符

在交互模式下,将光标置于想要替换的字符上。按下 r 键,接着输入你要替换的字符即可。
在这里插入图片描述
在这里插入图片描述

撤销操作

如果要撤销最近的修改,只需要按下 u 键,如果想要撤销最近四次修改,可以按下4,再按下u 。
在这里插入图片描述

重做

取消撤销,也就是重做之前的修改使用 ctrl + r 。

跳转到指定行

Vim 编辑的文件中,每一行都有一个行号,行号从1开始,逐一递增。
行号默认是不显示,如果需要它显示的话,可以进入命令模式,然后输入 set nu ,如果要隐藏行
号的话,使用 set nonu 。
跳转到指定行: 数字+gg ,例如 7gg ,表示跳转到第7行。
要跳转到最后一行,按下 G 。
要跳转到第一行,按下 gg 。

高级操作

查找

处于交互模式下,按下 / 键,那么就进入查找模式,输入你要查找的字符串,然后按下回车。光
标就会跳转到文件中下一个查找到的匹配处。如果字符串不存在,那么会显示 “pattern not found” 。
n 跳转到下一个匹配项;
N 跳转到上一个匹配项。
注意: 用斜杠来进行的查找是从当前光标处开始向文件尾搜索,如果你要从当前光标处开始,向
文件头搜索则使用 ? ,当然也可以先按下 gg 跳转到第一行在进行全文搜索。
在这里插入图片描述

vim 设置行号与去除行号

设置行号:set num
在这里插入图片描述

去除行号:set num!
在这里插入图片描述

相关文章:

  • C# WPF入门学习主线篇(十一)—— 布局管理
  • C++和C语言到底有什么区别?
  • Vue2后台管理:项目开发全流程(一)
  • 37、matlab矩阵运算
  • 【Unity】RPG2D龙城纷争(二)关卡、地块
  • 一个简单的R语言数据分析案例
  • centos7.6使用飞鱼FlyFish的docker镜像
  • 【GeoTransformer系列】——数据部分梳理(1)
  • 【源码】Spring Data JPA原理解析之事务注册原理
  • SHELL脚本学习(六) 呈现数据
  • 联想测开一面(电话面试)笔试60%
  • WPS JSA 宏脚本入门和样例
  • 【AI应用探讨】— GPT-4o模型应用场景
  • Synchronized 用过吗,其原理是什么???
  • 理解数学概念——线性(线性性)
  • (三)从jvm层面了解线程的启动和停止
  • 《Java编程思想》读书笔记-对象导论
  • 【Leetcode】104. 二叉树的最大深度
  • Babel配置的不完全指南
  • classpath对获取配置文件的影响
  • IDEA常用插件整理
  • JavaScript创建对象的四种方式
  • JSONP原理
  • Magento 1.x 中文订单打印乱码
  • nfs客户端进程变D,延伸linux的lock
  • PAT A1120
  • Python语法速览与机器学习开发环境搭建
  • Sublime Text 2/3 绑定Eclipse快捷键
  • Zsh 开发指南(第十四篇 文件读写)
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 给初学者:JavaScript 中数组操作注意点
  • 基于遗传算法的优化问题求解
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 如何在 Tornado 中实现 Middleware
  • 探索 JS 中的模块化
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 项目实战-Api的解决方案
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • 容器镜像
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • # 飞书APP集成平台-数字化落地
  • #Datawhale AI夏令营第4期#多模态大模型复盘
  • #HarmonyOS:基础语法
  • #大学#套接字
  • #数据结构 笔记三
  • (2024,RWKV-5/6,RNN,矩阵值注意力状态,数据依赖线性插值,LoRA,多语言分词器)Eagle 和 Finch
  • (23)Linux的软硬连接
  • (4) PIVOT 和 UPIVOT 的使用
  • (ZT)出版业改革:该死的死,该生的生
  • (二)Linux——Linux常用指令
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (原創) 未来三学期想要修的课 (日記)
  • .NET 4.0中使用内存映射文件实现进程通讯
  • .Net Core中Quartz的使用方法