2 Linux相关知识
2.1 Ubuntu软件管理
2.1.1 软件介绍
Windows:Windows上常用管理工具,或者直接去官网上下载软件。
Linux:在大多数的Linux中,都有给自的软件管理工具,比如Ubuntu常用的是apt,通过软件管理包来安装和更新软件等。
Ubuntu下载软件:
下载系统相关的(插件):使用apt命令
下载python相关的库、插件、模块:使用pip命令(更多的是使用pip)
2.2.2 apt使用(不常用)
软件更新:
sudo apt -y update #更新源
sudo dpkg --configure -a
sudo apt -y upgrade #更新已安装的包
sudo apt -y dist-upgrade #升级系统
以上安装过程中出现的安装选项,直接回车或者选择yes即可。
2.2.3 pip使用
下载安装:pip+install+库名
卸载:pip+uninstall+库名 (pip uninstall requests)
查看安装的库:pip list
pip下载的库是默认去下载安装的是国外的资源,所以比较慢,我们可以进行换源,更换为国内源(百度:pip 国内源
pip install +库名+ -i + https://...(网址
2.3.4 MobaXterm
远程连接工具,实际开发中多用远程连接工具。
作用:服务器与本机文件互传:使用MobaXterm,远程连接服务器(服务器需要购买,我们学习用的是虚拟的服务器,因此MobaXterm连接的是ubantu)。
步骤:点击session—SSH—输入服务器地址(127.0.0.1代表的本机ip),用户bd,端口1234—输入密码qwe123
文件互传:直接将文件拖入MobaXterm,保存的话,直接从MobaXterm拖到桌面。
2.2 用户与权限管理
每个人也有自己的家目录,自己的个人文件别人是不能修改的,如何进行控制呢?可以给每个人创建一个用户,各自的文件就在各自的用户家目录下。
在一个开发组当中,有文件是大家都可以更改的,怎样方便的管理这些权限呢?让同一个开发组的人在一个用户组,给这个组的人增加权限,就可以避免重复添加权限。
2.2.1 用户和用户组
(1)添加用户:useradd -m 用户名
-m:自动建立用户的登入目录
-u UID:指定 UID,这个 UID 必须是大于等于500,并没有其他用户占用的 UID
-g GID/GROUPNAME:指定默认组,可以是 GID 或者 GROUPNAME,同样也必须真实存在
-G GROUPS:指定额外组
-c COMMENT:指定用户的注释信息
-d PATH:指定用户的家目录
步骤:1.添加用户
su root—sudo passwd #提权密码 (没有跟用户名,默认修改root)
su root:#切换用户—useradd -m lala #添加用户
passwd lala #设置密码,如果没有跟用户名,默认设置root —直接从当前步骤使用
su lala #出现乱码,因为配置信息没有修改
2.修改配置信息:su root
cd / #回到根目录—cd etc—vim passwd
vim编辑器:按i编辑,修改用户的配置:把sh改为bash,按esc退出,再输入:wq—保存并退出,w是保存,q是退出。
删除用户:su root
cd home
userdel -r lala #加-r删除的彻底一些
(2)用户组
groups 查看当前登录用户的组内成员。
1.创建用户组:groupadd 组名
3.切换用户组:sudo newgrp 组名
例:su root—groupadd python #把yige用户加到python组
—su yige—sodu newgrp python #切换到python组
—groups #就能看到python组
普通用户创建组,再把普通用户加到组里面才能看到新建的组。
每个用户都有属于自己的家目录,不能看到对方的目录。切换用户不会切换路径。
3.删除用户组:sudo groupdel python
sodu newgrp python #查看组的时候就不存在了,需要重新创建
(3)修改用户组:usermod [options] username
修改时如果没有权限,导致终端出现黑屏的屏幕时,输入“:q”即可退出
-c <备注>:修改用户帐号的备注文字 | -l <帐号名称>:修改用户帐号名称 |
-d <登入目录>:修改用户登入时的目录 | -L:锁定用户密码,使密码无效 |
-g <群组>:修改用户所属的群组 | -s <shell>:修改用户登入后所使用的shell |
-G <群组>;修改用户所属的附加群组 | -u <uid>:修改用户ID |
2.2.2 文件权限
查看用户:在home下看
cd home
ls -l
例:drwxr - xr - x 20 bd bd 4096 11月13 22:29 bd
第1列:文件的权限
第2列:硬连接数,指包含文件夹在内的文件个数
第3列:文件所有者,指文件属于那个用户
第4列:文件所属的组
第5列:表示文件大小
第6列:表示文件的修改时间
第7列:表示文件名或目录名权限详解
-rwxr-xr-x 确定了文件类型和用户对文件的权限
权限详解:
第1个字符代表文件类型:-表示普通文件,d表示文件夹
rwx:读(r),写(w),执行(x)
第1组是u所有者的权限:rwx代表文件的所有者root用户有读、写和执行的权限;
第2组是g所属组的权限:r-x 代表与文件所有者在同一组的用户有读和执行的权限;
第3组是o其他人的权限:x 代表其他的用户只有执行的权限。
在Linux中,文件有3种属性:可读、可写和可执行。每个文件都有自己的属主,每个用户有自己的用户组,这样文件权限就有属主权限、同组用户权限和不同组用户权限。
Linux中通过符号表示权限之外,也可以通过数字来表示权限:
r—4, w—2,x—1 。那么rwx 就是数字7,0表示没有任何权限。
2.2.3 更改文件权限chmod
改变文件权限:先通过ls -l查看相关权限 | |
sudo chmod u+x py.txt | 对所有者用户增加执行权限 |
sudo chmod u-x py.txt | 对所有者用户去除执行权限 |
chmod 640 py.txt | 直接用数字来指定权限 -rw-r- |
改变用户组:sudo chgrp +更换到目标用户组的组名+文件名 | |
改变属主:sudo chown -r bd:bd test # 将test文件夹更改成bd用户和bd组 |
2.3 文件编辑:Vim
vim是是一个编辑器,在安装ubantu时执行的bash configure.sh就是在搭建环境下载vim。
2.3.1 VIM的三种模式
(1)命令模式
使用VIM打开文件之后,就会进入命令模式;在其他模式下,按ESC回到命令模式。
基本命令:h j k l 左 下 上 右
gg 移动至行首
G 移动至行尾
(2)插入模式
进入插入模式后,类似于记事本一样可以直接编辑文本内容。
基本命令:i 当前插入 I 行首插入
a 后面插入 A 行尾插入
o 下行插入 O 上行插入
(3)末行模式
在命令模式下输入英文的冒号(:)就会进入末行模式。
基本命令: :wq 保存退出 :q! 强制退出不保存 :q退出不保存
(4)步骤:vim+文件名——>命令模式——>输入i进入插入模式,开始编辑——>esc退出,进入末行模式——>:q
2.3.2 VIM的增删改查
(1)增:
yy | 复制当前行 | p | 粘贴 |
nyy | 复制n行 从光标的位置往下数n行 | yw | 复制一个单词 |
(2)删:
dd | 删除当前行 | dw | 删除一个单词 |
ndd | 删除n行 | x | 删除当前字符 |
u | 撤销 | ctrl+r | 返回 |
2.3.3 寄存器
Vim有多个寄存器:这个寄存器就相当于多个粘贴板, Vim提供了a-z 26个命名寄存器, 0-9 10个数字寄存器,还有一些特殊寄存器。
:reg #查看寄存器内容
使用寄存器:
(1)复制:"+寄存器+yy
“{register}yy #复制内容到寄存器{register}中
例: 3”ayy #复制3行到寄存器 a 中
(2)粘贴:"+寄存器+p
“{register}p #粘贴寄存器{register}中的内容
例:”ap
特殊寄存器:
匿名寄存器: ”” 使用复制删除等命令时,都会放入匿名寄存器
编号寄存器: “0-”9 “0保存复制的字符串, “1-”9保存着删掉的内容
2.3.4 末行模式下的替换
Vim中提供了非常强大的替换功能:
语法规则: :[range]s/{pattern}/{string}/[flags]
range 表示范围 : | |||
1 表示文件第一行 | . 表示光标所在行 | $ 表示文件最后一行 | % 整个文件(:1,$ 的简写) |
flags 标识: | |||
g 表示全局范围 | |||
c 表示选择替换(y 替换、n 不替换、q 退出替换过程、l 替换此处后退出、a 替换此处和之后所有的地方) | |||
n 不会替换,只返回替换的次数 | |||
例::%s/^/#/g 快速全文注释 所有的文件在开头的地方加上#,全局 :%s/$/;/g 每行末加上 ; |
2.3.5 Vim设置
:set all | 显示所有选项的值 | :set nu | 显示行号 |
:set option? | 显示一个选项的值,例: :set fileencoding | :set ai | 自动缩进 |
:set list | 显示非打印字符,如tab、空格、行尾 |
|
|
2.4 命令查找
2.4.1 命令搜索
whereis #搜索命令的位置和帮助文档的位置
which #搜索位置和命令的别名
2.4.2 find命令(匹配文件)
命令格式:find [-path] -options
——find+要查找的目录+模式(-name)+'正则'
path : 要查找的目录,默认是当前目录 ./
option:-name 按文件名的某种规则的查找
-type 按文件类型查找 f 普通文件 l 符号连接 d 目录
-size 按文件大小查找
-exec<执行指令>:假设find指令的回传值为True,就执行该指令;
-print 假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为每列一个名称,每个名称前皆有“./”字符串
通配符:* 匹配任意内容
? 匹配任意一个字符
[] 匹配任意一个中括号内的字符
例:find ./ -name '*.py' # ./表示当前目录,名字模式,匹配任意内容,结尾为.py的文件
find ./ -size -6k #查找文件大小为6k以下的文件 #+6k 表示6k以上
2.4.3 xargs 命令
find 命令可以把匹配到的文件传递给xargs命令执行
find ./ -type f -name ‘*.txt’ –print | xargs rm
例:find ./ -name '?.py' |xargs rm #匹配到文件名为单个字符的文件,传递给xargs执行删除
2.4.4 grep命令(匹配文件内容)
命令格式:grep –options file
-c | 计算符合范本样式的列数 | -i | 忽略字符大小写的差别 |
-w | 只显示全字符合的列 | -s | 不显示错误信息 |
-o | 只输出文件中匹配到的部分 | -x | 只显示全列符合的列 |
-n | 在显示符合范本样式的那一列之前,标示出该列的编号 | -v | 反转查找 |
-E | 将范本样式为延伸的普通表示法来使用,意味着使用能使用扩展正则表达式 |
例:grep -nw '1' test.py #显示带1的列及该列的编号
附:
Vim使用——命令模式-扩展
命令模式下还有很多其他的命令简单了解下:
^ 非空格行首 0 $ 行首 行尾
w e b 下个单词词首 下个单词词尾 上个单词词首
( ) 句子移动 M 屏幕中间
{ } 段落移动 L 屏幕底部
H 屏幕顶部 % 跳转到匹配的括号
^f ^b 向下移动一屏 向上移动一屏 (^代表 ctrl 键)
^d ^u 向下移动半屏 向上移动半屏
. 执行上一条命令
Vim使用——增删改查
增:基本命令:
yy 复制当前行 y$ 复制当前到行尾
nyy 复制n行 从光标的位置往下数N行 y0 复制当前到行首
p 粘贴 :x,ycoz
yw 复制一个单词 :x,ymz
x,y,z都是行号。x到y被复制或移动,插入到z行的下面
:m删除源行 :co不删除原始行
删:基本命令:
dd 删除当前行 X 删除前一个字符
ndd 删除n行 D 删除当前到行尾
dw 删除一个单词 J 删除换行符
x 删除当前字符
改:基本命令:
r 替换一个字符 C 替换当前行到末尾的所有字符
R 替换多个字符 S 或 CC 以插入的方式替换当前行
s 替换当前字符,并进入插入模式
查:基本命令:
向前搜索 * 向下搜索光标所在字符串
? 向后搜索 # 向上搜索光标所在字符串
n 重复/或?,方向相同 N 重复/或?,方向相反
% 搜索与当前花括号、圆括号、方括号成对的符号
Vim使用——Vim设置
:set all 显示所有选项的值
:set option? 显示一个选项的值,例: :set fileencoding
常见设置:
:set nu 显示行号
:set ai 自动缩进
:set list 显示非打印字符,如tab、空格、行尾
如果是永久的配置,可以在用户的家目录下修改 .vimrc
Vim打开文件:
vim –u NONE –N 出厂配置,其中 –u NONE 不加载vimrc,-N不进入兼容模式
vim +[num] file 打开文件,并将光标置于第n行首
vim + file 打开文件,并将光标置于最后一行首
vim –R file 只读模式打开文件