Linux基础命令(上)
编辑模式
- i 当前字符的前一个字符
- I 进入到首个字符进行编辑
- a 当前字符的后一个字符进行编辑
- A 进入当前的行尾进行编辑
末行模式
命令 | 英文 | 功能 |
---|---|---|
:w | write | 保存 |
:q | quit | 退出,如果没有保存是不允许退出的 |
:q! | quit | 强制退出 |
:wq | write&quit | 保存并退出 |
:x | 保存并退出 |
重复次数
- 先输入一个数字在输入复制的命令也可以是其他命令,表示重复执行这个命令多少次
移动和选择
- h 左边移动
- j 向下移动
- k 向上移动
- l 向右移动
行内移动
- w 向右边移动一个单词
- b 向左边移动一个单词
- 0 表示移动到行首
- ^ 移动到第一个不是空白字符的位置
- $ 移动到行尾
- 举一反三:向后移动三个单词 3w
行数的移动
命令 | 英文 | 功能 |
---|---|---|
gg | go | 文件顶部 |
G | go | 文件末尾 |
数字gg | go | 移动到对应数字的行 |
数字G | go | 移动对应数字的行数 |
:数字 | 移动到对应数字的行数 |
屏幕移动
命令 | 英文 | 功能 |
---|---|---|
Ctrl+b | back | 向上翻页 |
Ctrl+f | forward | 向下翻页 |
H | Head | 屏幕顶部 |
M | Middle | 屏幕中间 |
L | Low | 屏幕底部 |
段落的移动
命令 | 功能 |
---|---|
{ | 上一段落 |
} | 下一段落 |
括号切换
命令 | 功能 |
---|---|
% | 匹配成对的[] {} () |
标记
- 在开发的时候,某一块代码可能需要稍后处理,例如编辑查看
- 此时使用m增加一个标记,这样就会快速的找到指定的位置
- 标记名称可以使az或者AZ中的任意一个字母
- 添加了标记行的代码被删除后,标记也会被删除
- 如果在其他行添加了相同的标记,之前添加的标记就会被替换掉
标记
命令 | 英文 | 功能 |
---|---|---|
mX | mark | 添加标记x,x是az或者AZ之间的任意一个字母 |
'X | 直接定位到X标记所在的位置 |
选中文本
命令 | 英文 | 功能 |
---|---|---|
v | 可视模式 | 从光标位置开始按照正常的模式选择文本 |
V | 可视模式 | 选中光标经过的完整行 |
Ctrl+v | 可视化模块 | 垂直方向选中文本 |
撤销和恢复撤销
命令 | 英文 | 功能 |
---|---|---|
u | undo | 撤销上次命令 |
Ctrl+r | redo | 恢复撤销命令 |
删除文本
命令 | 英文 | 功能 |
---|---|---|
x | cut | 删除光标所在字符,或选中文字 |
d(移动命令) | delete | 删除移动命令对应的内容 |
dd | delete | 删除光标所在的行 |
D | delete | 删除至行尾 |
举一反三:
dw #从光标的位置向后删除一个单词
d0 #从光标的位置删除到行首
d} #删除这一段到段尾
ndd # 从光标的位置向下连续删n行
d代码行G # 从光标所在的行删除到指定的代码行
d'a # 从光标所在位置删除至标记a之间所有的代码
替换
r replace 替换当前这个字符
R replace 替换光标后面的字符
查找
/python 查找所有Python的字符串
n: 查找下一个
N:查找上一个
替换
全局替换
:%s/旧文本/新文本/g
可视区块替换
?/旧文本/新文本/g
确认替换
:%s/旧文本/新文本/gc
//执行命令的时候会提示是否需要替换这个旧文本
- y yes
- n no
- a all
- q quit
- l last 最后一个,并把光标移动到行首
- ^E 向下滚屏
- ^Y 向上滚屏
插入命令
在vi的操作中有6种编辑模式需要我们来掌握
命令 | 英文 | 功能 | 常用 |
---|---|---|---|
i | insert | 在当前字符的前插入文本 | |
I | insert | 在行首插入文本 | |
a | append | 在当前字符后添加文本 | |
A | append | 在行末添加文本信息 | |
o | 在当前行后面插入空白行 | ||
O | 在当前行的上面添加空白行 |
编辑命令和数字的连用
例如在开发中需要输入100个*号,如果一个个输入,那就太麻烦了
- 输入100,表示需要重复输入10次
- 输入i进入编辑模式
- 输入*也就是重复的文字
- 按下Esc返回到吗吗,命令模式,返回后vi就会把之前2,3步的操作执行99遍
这也就提示我们在编辑之前千万不要按数字
对多行代码添加注释
在python中如果要注释代码需要在行首添加一个#
在开发过程中,我们经常需要给多行进行注释步骤如下:
- 在命令模式下使用0进入行首
- 按住Ctrl+V进入可视化模块
- 使用HJKL左下上右进行选择需要注释的行
- 使用I 注意是大写的进入编辑模式
- 给其中一行添加注释
- 使用Esc命令返回命令模式,就会自动注释选中的行了
末行命令扩展
命令 | 英文 | 功能 |
---|---|---|
:e . | edit | 打开内置的文件浏览器,浏览当前目录下的文件 |
:n 文件名 | new | 新建文件 |
:w 文件名 | write | 另存为,但是任然编辑的是当前文件 |
拷贝和移动文件
序号|命令|对应的英文|作用
01|tree[目录名]|tree|以树状图列出目录结构
02|cp 源文件 目标文件|copy 复制文件或者目录
mv|mv 源文件 目标文件|move|移动文件或者目录
cp 是复制文件的命令,是将文件或者目录复制到另外一个目录中去
选项|含义
-f|已经存在的目标文件直接覆盖
-i|覆盖文件前会提示
-r|若给出的源文件是目录文件,则cp将递归复制该目录下的所有子目录和文件,目标文件必须是一个目录名
rm 命令
使用rm删除文件不能恢复
rm -f 强制 忽略不存在的文件,无需提示
rm -r 递归删除目录下的文件删除文件夹时必须添加此参数
查看命令
- cat命令 查看内容比较少的文件,会一次性展示所有的内容
- -b 对非空行输出编号
- -n 对所有的行输出编号
- more more命令可以用于显示内容,每次只显示一页的内容
- 空格 显示下一屏
- Enter 一次滚动手册页的一行
- b 回滚一屏
- f 前滚一屏
- q 退出
- /word 搜索相关的字符串
grep命令
使用grep对文件进行搜索,模式查找
hb
u
b
u
n
t
u
:
g
r
e
p
−
n
b
i
a
o
g
e
h
e
l
l
o
.
p
y
/
/
显
示
包
含
b
i
a
o
g
e
的
行
,
显
示
行
号
h
b
ubuntu~: grep -n biaoge hello.py //显示包含biaoge的行,显示行号 hb
ubuntu :grep−nbiaogehello.py//显示包含biaoge的行,显示行号hbubuntu~: grep -i biaoge hello.py //显示包含biaoge的行,忽略大小写
hb$ubuntu~: grep -v biaoge hello.py //显示不包含biaoge的行
两种独特的模式查找
^a 行首,搜索以a开头的行
ke$ 行尾以ke结束的行
重定向文件操作 > 和 >>
- echo hello python > a.txt 将hello python文件写入到a.txt这个文件中
也就是将需要输入到控制台中的信息重定向到文本信息中,这类的命令还有ll cat - echo hello world >> a.txt # 这个表示在a.txt这个文件中追加相应的内容
管道|
在 linux中可以理解为管道是一个命令的输出通过管道作为另一个命令的输入
常用的管道命令有 more grep
hbKaTeX parse error: Expected 'EOF', got '#' at position 35: …| grep Desktop #̲ 这里表示查找桌面目录列表下面…ubuntu~: ls -lha ~ | more 分屏显示查询列表信息
关机选项
shutdown [选项] [时间]
# shutdown -r now 重新启动 表示现在立刻重启
# shutdown now 立刻关机
# shutdown 默认一分钟后自动关机
# shutdown 20:25 今天晚上8点25分钟关机
# shutdown +10十分钟后关机
# shutdown -c 取消之前的关机计划
SSH客户端的简单实用
ssh [-p port] user@remote
ssh -p 22 hb@222.187.219.82
scp 命令
scp就是secure copy 是一个在linux下来进行远程拷贝文件的命令
# 把本地当前目录下的 01.py 文件复制到远程 家目录下 Desktop/01.py
scp -P port 01.py hb@192.168.60.10:Desktop/01.py
# 把远程家目录下的 Desktop/01.py 文件 复制到本地当前目录下的 01.py文件
scp -P port hb@192.168.60.26:Desktop/01.py 01.py
# 加上 -r 选项可以传送文件夹
# 把当前目录下的demo 文件件 复制到远程家目录下
scp -r demo user@192.168.60.29:Desktop
# 把远程 家目录下的Desktop复制到当前目录下的demo文件夹
scp -r user@192.168.60.29:Desktop demo
设置服务器免密码登录
在命令行里面输入 ssh-keygen 三次回车后就生成了加密文件
ssh-copy-id -p port user@remote 可以远程服务器记住我们的公钥
配置别名
ssh 每次登录都需要输入 ssh -p port user@remote 时间久了就会很麻烦
- 在 .ssh文件夹中创建一个config文件
2.在config文件中添加一下内容
Host mac
HostName ip地址 # 远程的ip
User hongbiao # 远程的用户名
Port 22
3 下次我们登录的时候就只用 ssh mac 就可以了
ls 扩展
- ls -l 可以查看文件夹下的详细信息 从左到右依次为:
- 权限 第一个字符如果是d 表示的是目录
- 硬链接数 通俗的讲就是有多少种方式可以访问当前的目录或者文件
- 拥有者 家目录下文件/目录 的拥有者通常都是当前用户
- 组 在linux中很多时候 会出现组名和用户名相同的情况
- 大小
- 时间
- 名称
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)