Linux基础2
Linux中一切皆文件
查看指令所在的位置
which pwd查看环境变量
[root@ecs-39448704 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin命令行补充
| 快捷键 | 功能 | 备注 |
|---|---|---|
| Ctrl+p | 显示输入的上一个历史命令 |
从输入的最后一个命令往前倒,也可以使用 ↑键 |
| Ctrl+n | 显示输入的下一个历史命令 | 也可以使用 ↓键 |
| Ctrl+a | 光标移动命命令行首 |
也可以使用 Home 键 |
| Ctrl+e | 光标移动命命令行尾 | 也可以使用 End 键 |
| Ctrl+u | 删除光标前的部分字符串 |
|
| Ctrl+k | 删除光标后的部分字符串 | |
| Backspace/Delete | 删除光标前 / 后的一个字符 |
双目录
[root@ecs-39448704 ~]# cd ../../
[root@ecs-39448704 /]# ls
bin boot dev etc home lib lib64 lost+found media mnt opt patch proc root run sbin srv sys titan tmp usr var www输出文件
//ll输出文件信息, -F是否还有子目录加/,h文件以文件大小形式输出,a总大小
[root@ecs-39448704 /]# ll -Fha
total 84K文件类型
- -: 普通的文件,在 Linux 终端中
没有执行权限的为白色,压缩包为红色,可执行程序为绿色字体 - d:
目录(directory), 在 Linux 终端中为蓝色字体,如果目录的所有权限都是开放的,有绿色的背景色 - l:
软链接文件 (link), 相当于 windows 中的快捷方式,在 Linux 终端中为淡蓝色(青色) 字体 - c:
字符设备(char), 在 Linux 终端中为黄色字体 - b:
块设备 (block), 在 Linux 终端中为黄色体 - p:
管道文件 (pipe), 在 Linux 终端中为棕黄色字体 - s: 本地
套接字文件(socket), 在 Linux 终端中为粉色字体
用户类型
文件类型包含:
文件所有者,文件所属组用户,其他人r读w写x执行-execute
没有权限-
- 第
一个字母为文件类型 - 第
一个文件所有者,第二个为文件所属组用户,第三为其他人
[root@ecs-39448704 /]# ll
total 72
别名个数 所有权用户 目录磁盘空间大小(不代表内部)
lrwxrwxrwx. 1 root root 7 Dec 18 2018 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 Jun 28 2022 boot
drwxr-xr-x 20 root root 3140 Apr 11 07:45 dev删除
rm:可以直接删除文件
rm -r删除目录,参数-r是递归(recursion)-i删除时给提示
-f删除时没有任何提示
拷贝
cp对
文件可以直接拷贝
目录拷贝要加参数-r
修改文件权限
代码法
chmod
chmod who [+|-|=] mod 文件名
who:
- u :user ->文件所有者
- g :group ->文件所属组用户
- o: other ->其他
- a: all,以上三类人 u+g+o
mod:权限
r: 读
w: 写
x:执行
- : 没有权限
对权限的操作
+:添加权限
-:去除权限
=:覆盖权限数字法
chmod [+|-|=] mod 文件名
- mod 权限描述 所有权限都放开时 7
- 4 read ,r
- 2 write,w
- 1 execute ,x
- 0:没有权限
#分解:chmod 0567 a.txt
0:八进制
5:文件所有者 r+x
6: 文件所属用户 r + w
7 其他人 r+w+x修改文件所有者
sudo chown 新的所有者:新的组名 文件名修改文件所属组
只修改
文件所属的组,普通用户没有这个权限,借助管理与安全线
sudo chgrp 新的组 文件名创建文件
mkdir 创建目录
touch 文件 //创建文件,存在更新时间,不存在创建
cat 文件 //查看文件内容
which //查看命令所在位置重定向
将内容快速叠加到文件当中,修改输出数据的文字
>将文件内容写入到指定文件中,如果文件中已有数据,则会使用新数据覆盖原数据
>>将输出的内容追加到指定的文件尾部
添加新用户
//第一种
sudo adduser 用户名
//第二种
//cenos
sudo useradd 用户名
//ubuntu
sudo useradd -m -s /bin/bash 用户名删除用户
使用
userdel命令删除系统中用户ID和所属组ID等相关信息,但是在某些Linux版本中虽然被删除了,但是家目录却没有被删除,需要手动将其删除
//-r 一并把用户的家目录页删除,不加不删除
sudo userdel 用户名 -r添加删除用户组
使用groupadd添加用户组,使用groupdel删除用户组
验证成功,查看/etc/group文件,里面用户相关信息以及用户组ID
修改密码
passwd :修改当前用户
//修改非当前用户密码
sudo passwd 用户名压缩命令
压缩tar
x:释放压缩文件内容,解压
c:创建压缩文件
z:使用gzip方式进行文件压缩.tar.gz
j:使用bzip2的方式进行文件压缩.tar.bz2
v:压缩过程中显示压缩信息,可以省略不写
f:指定压缩包的名字
# 语法
tar 参数 生成压缩包的名字 要压缩的文件(文件或目录)
# 压缩名字
- 压缩使用gzip方式,标准后缀为.tar.gz
- 压缩使用bzip2方式,标准后缀为.tar.bz2
- - tar 解压
tar 参数 压缩包名 -c 解压目录
tar xzv 名称 -c 目录 - zip 解压
使用zip压缩目录,必须添加参数
-r,这样才能将子目录中的文件一并压缩。zi压缩会 自动生成文件后缀.zip
zip [-r] 压缩包名 要压缩的文件- rar
安装
wget https://www.rarlab.com/rar/rarlinux-x64-6.0.0.tar.gz
tar -zxvf rarlinux-x64-6.0.0.tar.gz
mv ./rar /opt
ln -s /opt/rar/rar /usr/local/bin/rar
ln -s /opt/rar/unrar /usr/local/bin/unrar使用,文件压缩,需要使用参数a ,压缩包会自动添加后缀.rar
如果压缩了目录,需要加参数-r
rar a 压缩包名 要压缩的文件 [-r]解压缩
#解压参数x,默认加压到当前目录中
rar/unrar x 压缩包名字
# 解压到指定目录
rar/unrar x 压缩包姓名 解压目录xz文件
- 压缩
创建文件,首先将需要压缩的文件大宝
tar cvf xxx.tar files然后对大宝文件进行压缩xz -z xxx.tar。这样就可以得到一个大包之后的压缩文件
使用xz工具压缩文件需要添加参数-z
- 解压缩
# 压缩包解压缩,得到xxx.tar
xz -d xxx.tar.xz
# 第二步,将xxx.tar中的文件释放到当前目录
tar xvf.xxx.tar文件搜索
find
主要功能时根据文件的属性,查找对应的磁盘文件(
文件名,文件类型,文件大小,文件的目录深度)。模糊查询必须要使用对应的通配符,*和?,其中*可以匹配零个或者多个字符?用于匹配单个字符。
-name
# 语法格式:根据文件名搜搜
find 搜索的路径 -name 要搜索的文件名-type
| 文件类型 | 类型的字符描述 |
|---|---|
| 本地套接字类型 | s |
| 普通文件类型 | f |
| 目录类型 | d |
| 软连接类型 | l |
| 字符设备类型 | c |
| 块设备类型 | b |
| 管道类型 | p |
#语法格式:
find 搜索的路径 -type 文件类型-size
根据文件大小进行搜搜,需要使用参数
-size常见的分别有K(小写),M(大写),G(大写)。
#找到大约4M的
[root@ecs-39448704 bin]# find ./ -size +4M
./cpack
./gdb
./ld.gold
./ctest- 基于目录层级
-maxdepth:最多搜索到第多少层目录
-mindepth:至少从第几层开始搜索
sudo find / -maxdepth 5 -name "*.txt"- exec (
ok与此相同)
exec是find的参数,可以在
exec参数后添加其他需要执行的shell命令 find添加了exec参数之后,命令的尾部需要添加一个后缀{} ;,注{}和`中间有空格
find 路径 参数 参数值 -exec shell 命令2 {} \;xargs
可以在find命令后直接使用
管道完成前后命令的数据传递
find 路径 参数 参数值 | xargs shell 命令2区别:
-exec-xargs:将find查询的结果一次性传递给后边的shell命令
grap
- -r:如果需要搜索目录中的文件内容,需要进行递归操作,必须指定该参数
- -i:对应要搜索的关键字,忽略字符大小写的差别
- -n:在显示符号样式那一行之前,标示出该行的列数编号
grep "搜索的内容" 搜索的路径/文件 参数locate
locate是一个简化版的find,可以根据文件名搜索本地的磁盘文件,本地数据库Linux系统每天自动更新一次,为避免的不及时性,在运行之前,先使用updatedb命令,手动更新数据库
# 更新本地数据库磁盘文件
updatedb
# 搜索所有目录下以test开头的文件
locate test;
# 搜索指定目录下以某个关键字test开头的文件
locate /home/foryouos/test
# 搜索文件,忽略文件名的大小写使用参数-i
locate TEST -i
# 列出前N个匹配的文件名称或路径名称,使用参数-n
locate test -n 5
# 基于正则表达式
locate -r "\.cpp$"正则表达式:
1,在正则表达式中.可以匹配任何一个非\n的单字符
2,上边的命令中使用转译字符\对特殊字符.转译,就得到了普通的字符.
3,在正则表达式中$放到字符尾部,表示字符串必须以这个字符结尾,上边的命令中修饰的是字符p
4,正则表达式中的字符c和后边的字符p需要进行字节匹配,没有特殊含义
vim
vim帮助文档
vimtutor安装
sudo apt install vim sudo yum install vim vim --version
vim的模式
命令模式:查看文件内容,修改文件,关键的搜索末行模式:在该模式下主要对文件内容进行修改和内容添加编辑模式:执行Linux命令,保存文件,跳转,窗口分屏
注
vim的切换
# 打开文件
vim 文件名命令模式
代码格式化
//若没有对齐,通过该命令进行对齐
gg=G光标移动
在vim中移动光标出了使用箭头方向键,通知也可使用h左,j下,k上,L右
| 快捷键 | 功能 | 备注 |
|---|---|---|
| 0 | 光标移动到行首 | 无 |
| $ | 光标移动到行尾部 | 选按两个键: shift + 4 |
| gg | 光标移动到文件头 | 第一行的开始 |
| G | 光标移动到文件尾部 | 最后一行的开始 |
| nG | 行跳转 | n 代表要跳转到哪一行 |
| n+回车 | 相对跳转 n 行 | 从光标所在当前行往下跳 n 行,n 对应的是一个整数 |
删除命令
| 快捷键 | 功能 | 备注 |
|---|---|---|
| x(小写) | 删除光标后边的字符 | vim中的光标比较宽会盖住后边的字符 |
| X(大写) | 删除光标前边的字符 | |
| dw | 删除单词 | 要先把光标移动到单词的第一个字母上再删除,否则单词只能被删除一部分 |
| d0 | 删除光标前的字符串 | 从字符串开头到光标当前位置的字符串被删除了 |
| d$(D) | 删除光标后的字符串 | 从光标当前位置到字符串尾部的字符串被删除了,使用D也行 |
| dd | 删除光标所在行 | |
| ndd | 删除n行 | 从光标所在行开始删除n行,n对应的是一个整数 |
撤销与反撤销
撤销豫反侧小对应windows中的
ctrl+z和ctrl + y
| 快捷键 | 功能 | 备注相当于window |
|---|---|---|
| u | 撤销 | ctrl+z |
| ctrl+r | 反撤销 | ctrl+y |
复制与粘贴
| 快捷键 | 功能 | 备注 |
|---|---|---|
| p | 粘贴到光标所在行的下边 | 小写p |
| P | 粘贴到光标所在行的上边 | 大写P |
| yy | 复制光标所在行 | |
| nyy | 从光标所在行向下复制n行 | n是要复制的行数,代表 一个整数 |
可视模式
在编辑文件中需要删除或者辅助数据不是一整行,而是一行某一部分,可以使用可视模式,使用快捷键对所选中的数据进行复制或者删除操作
v: 文本选择以字符为单位V:文本选择以行为单位ctrl-v: 选择一个矩形内的文本
| 快捷键 | 功能 | 备注 |
|---|---|---|
| h | 光标向左移动 | 移动光标用于可视模式下的数据块选择 |
| j | 光标向下移动 | 移动光标用于可视模式下的数据块选择 |
| k | 光标向上移动 | 移动光标用于可视模式下的数据块选择 |
| l | 光标向右移动 | 移动光标用于可视模式下的数据块选择 |
| d | 删除 (剪切) | 删除可视模式下选中的数据块 |
| y | 复制 | 复制可视模式下选中的数据块 |
| p (小写) | 数据粘贴到光标的后边 | 粘贴在可视模式下复制或者剪切的数据块 |
| P (大写) | 数据粘贴到光标的前边 | 粘贴在可视模式下复制或者剪切的数据块 |
代码注释
ctrl+v进入可视模式- 通过光标
上移k或者下移j选中多个代码行的开头 - 按
大写的I 键输入要插入的注释符 - 按ESC 保存进入命令模式
查找
(图片 image-20230421151523902.png 未随仓库迁移,原引用路径已失效)
查看man文档
- 找到要查看的函数,然后将
光标放到该函数上 - 在键盘上依次输入:
章节号(可选)+K``(shift+k)(大写的K),就会自动调整到man文档中
编辑模式
| 快捷键 | 功能 |
|---|---|
| i | 从标签前边开始输入 |
| a | 从光标的后边开始输入 |
| o | 在光标下边创建新行,在新行中输入 |
| s | 删除光标后边的字符(盖住的字符),从删除的字符位置开始输入 |
| I(大写的i) | 从当前行行首开始输入 |
| A | 从当前行行尾开始输入 |
| O | 在光标上创建新行,在新行中输入 |
| S | 删除当前行,在当前行开始输入 |
末行模式
从命令模式切换到末行模式只需要在键盘上输入一个
:,同时这个符号也会出现在窗口的最下端,这时候我们就可以在最后一行输入我们执行的命令
保存退出
| 末行模式输入命令 | 功能 |
|---|---|
| q | 退出,如果退出的时候没有保存,vim会提示是否要保存 |
| q! | 直接退出不保存 |
| w | 保存不退出 |
| wq | 保存退出 |
| x | 保存退出 |
替换
末行模式的替换强大,指定将什么样的内容替换为什么样的内容,可以
指定替换某一行或者某几行或者全文替换。替换对应的命令是s并且可以给定指定参数,默认情况下只替换相关行的第一个满足条件的关键字,如果需要整行替换需要加参数/g.
| 末行模式下的替换命令 | 说明 |
|---|---|
| s / 被替换的关键字 / 新的关键字 /g | 只对光标所在行进行替换 |
| 行号1,行号2s / 被替换的关键字 / 新的关键字 /g | [行号1,行号2]是一个从小到大的范围,对这个范围替换 |
| %s /被替换的关键字 / 新的关键字 /g | %代表对所有行进行替换 |
分屏
分屏可将当前屏幕中的窗口以水平或垂直方式拆成几个
| 末行模式快捷键 | 说明 | 备注 |
|---|---|---|
| sp | 水平分屏,多个窗口垂直排列 | 多个窗口中显示同一个文件里的内容 |
| vsp | 垂直分屏,多个窗口水平排列 | 多个窗口中显示同一个文件里的内容 |
| ctrl+w+w | 光标在打开的屏幕之间切换 | 快捷键操作(按住ctrl 然后按两次w) |
| qall | 同时退出多个屏幕 | |
| wqall | 同时保存退出多个屏幕 | |
| sp 文件名 | 分屏的同时指定打开的文件的名字 | 在新窗口中指定的文件的内容 |
| vsp 文件名 | 分屏的同时指定打开的文件的名字 | 在新窗口中显示指定的文件内容 |
行跳转
不仅可以在命令模式下进行跳转,也可以在末行模式下进行跳转
:行号 # 输入完行号之后回车执行shell命令
在使用
vim中可以在末行模式下执行需要的shell命令,在执行shell命令之前需要加一个叹号!
:!shell命令
# 举例
:!ls

