Day 18 Linux用户管理、安装python3、vim编辑器之神、shell指令(部分)
1.用户管理
一个Linux操作系统可以有多个用户(user),也可以有多个用户组(group);用户和用户组之间的关系是多对多的
只有有 root权限 的用户才可以创建新用户
普通用户只能操作对应的用户根目录中的内容(普通用户的用户根目录是 /home 下面和用户名同名的文件夹)
-
useradd 用户名 – 创建指定用户(1.用户创建成功后,系统会自动在 /home 目录下创建一个和用户名同名的文件夹;
2.会自动创建和用户名同名的分组,并将当前用户添加到这个分组中)
-
password 用户名 – 修改用户密码(需要有 root权限 才可以)
-
su 用户名 – 切换账号(root登陆其他账号的时候不需要密码,其他用户直接切换登录时需要密码)
-
exit – 退出当前账号
-
userdel 用户名 – 删除用户(需要有 root权限)
-
sudo 指令 – 普通用户使用需要root权限才能执行的指令
-
users – 查看当前用户 (可以通过查看/etc/passwd文件查看当前系统所有的用户)
-
groups – 查看当前分组
-
groupadd 分组名 – 创建分组(管理员才能创建;可以通过etc/group文件查看当前系统所有分组)
-
*useradd 用户名 --创建指定用户(1.创建成功后系统会在/home目录下创建一个和用户名同名的文件夹;2.会自动创建和用户名同名的分组,并将当前用户添加到这个分组中) - 这是root权限
-
useradd -G 分组1,分组2,… 用户名 – 创建指定用户,并将用户添加到指定分组中
-
usermod -G 分组1,分组2 用户名 – 修改用户分组
-
*passwd – 修改用户密码(需要root权限)
注意:不是所有用户都可以通过sodu来以管理员身份执行文件,如果想要能够使用sudo,必须添加配置
a.ubuntu:将需要有管理员身份的账号添加到sudo分组中
b.redhat和contos: 在/etc/sudoers配置文件中添加代码:
## Allow root to run any commands anywhere
root ALL=(ALL) ALL #(默认有的)
xiaoming ALL=(ALL) ALL #(自己添加的,xiaoming是用户名)
2.文件权限
当使用 ls -lh 文件夹路径 时,可看到对应文件夹中所有文件的信息,其中每个文件的权限格式如下:
- rw- r-- r--
文件类型 | 所有者权限 | 同组用户权限 | 其他用户权限 |
---|---|---|---|
d(目录) | 读(r/-)写(w/-)可执行(x/-) | ||
-(文件) | |||
l(连接) |
当前文件所有者有读和写的权限,同组用户只有读的权限,其他用户只有可执行的权限:- rw-r----x
当前文件所有者有写的权限,同组用户有读和写的权限,其他用户有读和写的权限:- -w-rw-rw-
默认情况下文件和文件夹的权限: 文件所有者有读写权限, 同组用户和其他用户都是只读权限。
1)chmod指令
chmod 权限值 文件路径 - 将指定文件的权限修改成指定值
权限: rwx r-- rw-
权限二进制:111 100 110
权限值: 7 4 6
chmod 746 文件路径
权限: rwx rwx rwx
权限值: 7 7 7
chmod 777 文件路径
421
rwx 4+2+1 = 7
rw- 4+2 = 6
r-- 4 = 4
-w- 2 = 2
-wx 2+1 = 3
权限:rw- rw- rw-
权限值:666
权限:rw- r-- ---
权限值:640
421 421 421
权限:rwx rw- r--
7 6 4
440
- r-- r-- ---
chmod [a,u,g,o]/[±]/[r,w,x] 文件地址 - 给指定文件对应指定用户添加或者删除指定权限
(a-所有用户,u-文件所有者,g-同组用户,o-其他用户;
+表示添加权限, -表示删除权限;
r-表示读权限, w表示写权限,x表示执行权限)
chmod 777 文件地址 # 将所有用户对文件的权限都设为最高
chmod a-x 文件地址 # 删除所有用户的执行权限
chmod u+w 文件地址 # 给文件所有者添加写的权限
3.软件安装和包管理工具(未讲)
包管理工具:yum
- yum search:搜索软件包,例如yum search nginx。
- yum list installed:列出已经安装的软件包,例如yum list installed | grep zlib。
- yum install:安装软件包,例如yum install nginx。
- yum remove:删除软件包,例如yum remove nginx。
- yum update:更新软件包,例如yum update可以更新所有软件包,而yum update tar只会更新tar。
- yum check-update:检查有哪些可以更新的软件包。
- yum info :显示软件包的相关信息,例如yum info nginx。
- yum erase 软件: 卸载已经安装的软件
源代码构建安装
- wget 安装包的路径 -下载安装包
- gunzip/tar 压缩包 - 解压、解归档
- (设置安装路径)
- cd 安装包目录 执行: make && make install -编译安装包程序
- 给可执行文件添加软连接到/usr/bin目录下 -添加快捷方式
1.源代码构建python3.x(按照步骤直接整)
[root ~]# rpm -qa|grep python3|xargs rpm -ev --allmatches --nodeps (移除旧版本Python)
[root ~]# whereis python3 |xargs rm -frv (删除所有剩余文件)
[root ~]# yum install gcc (安装编译环境)
[root ~]# wget https://www.python.org/ftp/python/3.9.13/Python-3.9.13.tgz (下载安装包)
[root ~]# gunzip Python-3.9.13.tgz (解压)
[root ~]# tar -xvf Python-3.9.13.tar (解归档)
[root ~]# cd Python-3.9.13 (进入安装包)
[root ~]# ./configure --prefix=/usr/local/python39 (设置安装路径)
[root ~]# yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel (安装相关依赖库)
[root ~]# make && make install (编译执行安装文件)
...
[root ~]# ln -s /usr/local/python39/bin/python3.9 /usr/bin/python3 (给python指令文件创建快捷方式python3)
[root ~]# python3 --version
Python 3.9.16
[root ~]# ln -s /usr/local/python39/bin/pip3 /usr/bin/pip3 (给pip指令创建快捷方式pip3)
[root ~]# pip3 --version
4. vim编辑器之神
1).配置vimrc配置
在shell中可以通过 vim /etc/vimrc 打开vimrc文件对vim进行配置。在这个文件中可以进行很多和vim相关配置,常用的如下(如果对其他配置感兴趣的可以自己百度)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y7l1Gy2w-1683809613206)(C:\Users\yyds\AppData\Roaming\Typora\typora-user-images\image-20230511173021215.png)]
2).常用操作
- 模式切换
我们可以将vim分为命令模式、编辑模式、和末行模式三种
命令模式:进入vim的时候vim是处于命令模式状态下的,这个时候输入内容不会出现在编辑区(最末尾什么都没有)
末行模式:在命令模式下输入冒号,让vim进入末行模式。在末行模式的冒号后面可以输入相关的一些指令进行相关操作(最后有一个冒号)
编辑模式:在命令模式下按 i 进入编辑模式,在编辑模式下可以对文件内容进行编辑(最后 --INSERT-- 或者 – 插入–)
- 保存和退出
在末行模式下输入相应的指令可以对编辑区的内容进行保存和退出vim界面
w – 只保存(类似于快捷键ctrl+s)
q – 退出(在编辑区的内容全部都能保存的情况下才有效)
wq – 保存并退出
q! – 强制退出(不保存修改信息)
- 光标操作
以下光标操作都是在命令模式下输入的
^ (shift+6) – 移到行首
$ (shift+4) – 移到行尾
G (shift+g) – 移动到文件末尾
gg – 移动到文件开头
注意:行号G 和 行号gg – 都可以让光标移动到指定行,如 30G ,让光标直接跳转到第30行
- 文本操作
以下操作不带冒号的是在命令模式下输入,前面有冒号代码后面的内容是在末行模式下输入
dd – 删除光标所在的行
数字dd – 从光标所在行开始往后面开始删,删除指定数量行内容
:%d – 删除所有
yy – 复制光标所在的行
数字yy – 从光标所在行开始复制指定行数的内容
p – 将复制的内容粘贴到光标所在位置
u – 撤销
ctrl+r – 反撤销
-
高级操作
-
比较多个文件
vim -d 文件1 文件2
-
打开多个文件
vim 文件1 文件2 文件3…
-
# 1.显示文件
末行模式下输入: ls # 查看当前打开的所有文件和对应的标号
末行模式下输入: b 标号 # 让当前窗口显示指定的文件内容
# 2.拆分和切换窗口
末行模式下输入: sp/vs # 对当前窗口进行水平/垂直拆分(拆分后可以通过ctrl+w [按两次]来切换窗口)
5.shell编程
Shell脚本,是一种为shell编写的脚本程序
Shell编程与JavaScript、Python编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。
Linux的Shell种类有很多,我们主要用的是Bourne Shell(usr/bin/sh或者/bin/sh)
- 创建shell文件
原则上shell程序可以写在任何文件中,但是一般会在shell文件后加后缀.sh表示当前文件是一个shell文件
shell需要可执行权限,所以创建好的shell文件需要添加x权限,否则执行时如果只写shell文件路径是无法执行的,只能通过 sh shell文件路径 才能运行
-
基础语法
- 注释
# 单行注释 在需要注释的行前加 # :<<EOF 多行注释 注释1 注释2 ...... EOF
-
输入和输出
echo指令就相当于python中的print函数(默认会自动换行)
echo 输出内容 echo -n 输出内容 # 输出时不换行
-
变量
-
声明变量的语法: 变量名=值
说明:变量名和=,=和值之间不能有空格
变量名的要求和python变量名的要求一样
name='小明' age=18 stu_name=小红
-
使用变量:
$变量
${变量}
注意:输出时若不加 $ 则会输出变量名
age=18 echo $age # 输出变量age的值 echo ${age} # 和上行效果一样 age2=${age} # 变量赋值
-
只读变量
使用readonly命令可以将变量定义为只读变量,只读变量都的值不能被改变
gender='男' readonly gender gender='女' # 01shell基本语法.sh: line 15: gender: readonly variable
-
删除变量
使用unset命令可以删除变量
name='xiaoming' unset name
echo $age # 输出变量age的值
echo KaTeX parse error: Expected 'EOF', got '#' at position 8: {age} #̲ 和上行效果一样 age2={age} # 变量赋值+ 只读变量 使用readonly命令可以将变量定义为只读变量,只读变量都的值不能被改变 ```shell gender='男' readonly gender gender='女' # 01shell基本语法.sh: line 15: gender: readonly variable
-
删除变量
使用unset命令可以删除变量
name='xiaoming' unset name
-