# Linux 基础 2
Linux中一切皆文件
# 查看指令所在的位置
# 查看环境变量
| [root@ecs-39448704 ~] |
| /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 ~] |
| [root@ecs-39448704 /] |
| 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 /] |
| 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 /] |
| 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:没有权限 |
| |
| |
| 0:八进制 |
| 5:文件所有者 r+x |
| 6: 文件所属用户 r + w |
| 7 其他人 r+w+x |
# 修改文件所有者
| sudo chown 新的所有者:新的组名 文件名 |
# 修改文件所属组
只修改 文件所属的组
,普通用户没有这个权限,借助 管理与安全线
# 创建文件
| 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 参数 压缩包名 -c 解压目录 |
| tar xzv 名称 -c 目录 |
使用 zip 压缩目录,必须添加参数 -r
,这样才能将子目录中的文件一并压缩。zi 压缩会 自动生成文件后缀.zip
安装
| 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/unrar x 压缩包名字 |
| |
| rar/unrar x 压缩包姓名 解压目录 |
# xz 文件
创建文件,首先将需要压缩的文件大宝 tar cvf xxx.tar files
然后对大宝文件进行压缩 xz -z xxx.tar
。这样就可以得到一个大包之后的压缩文件
使用 xz
工具压缩文件需要添加参数 -z
| |
| xz -d xxx.tar.xz |
| |
| tar xvf.xxx.tar |
# 文件搜索
# find
主要功能时根据文件的属性,查找对应的磁盘文件 ( 文件名
, 文件类型
, 文件大小
, 文件的目录深度
)。模糊查询必须要使用对应的通配符, *
和 ?
, 其中 *
可以匹配 零
个或者 多
个字符 ?
用于匹配 单
个字符。
文件类型 | 类型的字符描述 |
---|
本地套接字类型 | s |
普通文件类型 | f |
目录类型 | d |
软连接类型 | l |
字符设备类型 | c |
块设备类型 | b |
管道类型 | p |
根据文件大小进行搜搜,需要使用参数 -size
常见的分别有 K (小写),M (大写),G (大写)。
| |
| [root@ecs-39448704 bin] |
| ./cpack |
| ./gdb |
| ./ld.gold |
| ./ctest |
-maxdepth
:最多搜索到第多少层目录
-mindepth
:至少从第几层开始搜索
| sudo find / -maxdepth 5 -name "*.txt" |
exec 是 find 的参数,可以在 exec参数后添加其他需要执行的shell命令 find添加了exec参数之后,命令的
尾 部需要添加一个后缀
{} ; ,注
{} 和
` 中间有 空格
| find 路径 参数 参数值 -exec shell 命令2 {} \; |
可以在 find 命令后直接使用 管道
完成前后命令的 数据传递
| find 路径 参数 参数值 | xargs shell 命令2 |
区别:
-exec
: 将 find 查询的结果逐条传递给后边的 shell 命令
-xargs
:将 find 查询的结果一次性传递给后边的 shell 命令
- -r:如果需要搜索目录中的文件内容,需要进行递归操作,必须指定该参数
- -i:对应要搜索的关键字,忽略字符大小写的差别
- -n:在显示符号样式那一行之前,标示出该行的列数编号
# locate
locate
是一个 简
化版的 find
, 可以根据 文件名
搜索本地的 磁盘文
件,本地数据库 Linux 系统 每天自动
更新一次,为避免的不及时性,在运行之前,先使用 updatedb
命令, 手动更新数据库
| |
| updatedb |
| |
| locate test; |
| |
| locate /home/foryouos/test |
| |
| locate TEST -i |
| |
| 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 中移动光标出了使用箭头方向键,通知也可使用 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 保存进入命令模式
# 查找
# 查看 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 命令之前需要加一个叹号 !