Linux基础2

Linux中一切皆文件 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的切换

# 打开文件
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+zctrl + 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