Linux基础
一、基础介绍
linux分为内核版本(核心版本)和发行版本。
查看内核信息: lsb_release -a
linux的应用领域: 基于Linux的企业服务器, 嵌入式应用
1.1:Linux与Windows的不同
- Linux严格区分大小写
- Linux中所有内容以文件形式保存,包括硬件
- Linux不靠扩展名区分文件类型,靠权限来区分(约定俗成的标识方法,用来区分文件类型(为了给人看))
压缩包:.gz,.bz2, .tar.bz2, .tgz等
二进制软件包:.rpm
网页文件: .html , .php
脚本文件: .sh
配置文件:.conf
4. Windows下的程序不能直接在Linux中安装和运行
1.2:字符界面的优势
字符界面占用的系统资源更少
字符界面减少了出错,被攻击的可能性
1.3:硬件设备文件名
硬件 | 设备文件名 |
IDE硬盘 | /dev/hd[a-d] |
SCSI/SATA/USB硬盘 | /dev/sd[a-p] |
光驱 | /dev/cdrom或/dev/hdc |
软盘 | /dev/fd[0-1] |
打印机(25针) | /dev/lp[0-2] |
打印机(USB) | /dev/usb/lp[0-15] |
鼠标 | /dev/mouse |
1.4:分区设备文件名
设备文件名
/dev/hda1(IDE硬盘接口)
/dev/sda1(SCSI硬盘接口,SATA硬盘接口)
1.5:挂载
挂载指的是过程,相对于Windows来理解就是给分区分配盘符的过程叫挂载,挂载点相当于盘符
必须分区
/根分区
swap分区(交换分区,内存两倍(4个G以内),4个G以上,就和内存一样大)
推荐分区
/boot(启动分区,200MB)
在linux中,我们是拿目录作为盘符,称作挂载点
挂载就是给每个分区分配挂载点
二、linux常用命令
[root@localhost ~]# root:代表当前登录用户,linux中管理员帐号是root
Localhost:主机名,Windows在同一局域网不允许有相同主机名存在,linux无此限制
~:当前所在目录(家目录),linux中用户登陆后的初始登陆位置就叫做用户的家,管理员的家在根目录下的root目录(/root),普通用户家是(/home/user_name),建立用户的时候就会创建家。
#:超级用户提示符,普通用户提示符是$
[]和@都是原样输出没有特殊含义
2.1:命令格式 ([]代表可选)
命令 [选项] [参数]
注意:个别命令不遵循此格式,当有多个选项时,可以写在一起简化选项与完整选项 -a等于 --all
2.2: 查询目录中内容:ls
语法 :ls [选项] [文件或目录]
选项:
-a 显示所有文件,包括隐藏文件
-l 显示详细信息
-d 查看目录属性
-h 人性化显示文件大小
-i 显示inode
-rw-r--r--:
- 代表文件类型(linux文件类型只有七种,剩下四种是:块设备文件,字符设备文件,套接字文件和管道文件)(-文件,d目录,I软链接文件(快捷方式))
用户组:相同身份相同权限的人放在一起就是一个用户组
rw- :u所有者
r-- : g所属组
r-- : o其他人
r读 w写 x执行
1 : 引用计数,代表这个文件被引用过几次。
root: 文件所有者 root : 文件所属组
2.3 : 文件处理命令
2.3.1、目录处理命令
语法 : mkdir -p [目录名]
选项 :-p 递归创建(如果一次性创建多级目录,则必须加上-p进行递归创建否则不能创建成功)
命令英文原意: make directories
切换所在目录:cd
命令原意:change directory
简化操作:
cd ~ 进入当前用户的家目录
cd
cd - 进入上次目录
cd .. 进入上一级目录
cd . 进入当前目录
相对路径:参照当前所在目录,进行查找
绝对路径:从根目录开始指定,一级一级递归查找,在任何目录下,都能进入指定位置
语法 :pwd
英文原意 :print working directory
作用 :打印当前工作目录
语法 :rmdir 空目录
作用 : 删除空目录
英文原意 : remove empty directories
语法 :rm -rf [文件或目录]
命令英文原意: remove
选项:
-r 删除目录
-f 强制
作用:删除文件或目录
语法 :cp [选项] [原文件或目录] [目标目录]
选项:
-r 复制目录, 复制的目录时间属性是执行这条命令的时间
-p 连带文件属性复制
-d 若源文件是链接文件,则复制链接属性
-a 相当于-pdr, 原样复制,所有的属性都和原文件一致
ll命令是 ls -l 的别名
语法 : mv [源文件或目录] [目标目录]
命令英文原意:move
注意 : 如果原文件和目标文件不在同一目录下就是剪切命令,如果在同一目录下就是改名命令。
作用 : 剪切或改名命令
2.3.2:Linux常用目录的作用
/ | 根目录 |
/bin | 命令保存目录(普通用户就可以读取的命令) |
/bot | 启动目录, 启动相关文件 |
/dev | 设备文件保存目录 |
/etc | 配置文件保存目录 |
/home | 普通用户的家目录 |
/root | 超级用户家目录 |
/lib | 系统库保存目录 |
/mnt | 系统挂载目录 |
/media | 挂载目录 |
/tmp | 临时目录 |
/sbin | 命令保存目录(超级用户才能使用的目录) |
/proc | 直接写入内存的 |
/sys |
|
/usr | 系统软件资源目录 |
/usr/bin | 系统命令(普通用户) |
/usr/sbin | 系统命令(超级用户) |
/var | 系统相关文档内容 |
注意 :根目录下的bun和sbin,usr目录下的bin和sbin,这四个目录都是用来保存系统命令的,两者的区别在于根bin下保存的命令任何用户都可以执行,sbin下保存的命令只有超级用户(Root)才可以执行,linux是以这样的方式来区分权限的。
proc 和sys目录不能直接操作,这两个目录保存的是内存的挂载点,他俩中的数据直接写在内存中,
2.3.3:链接命令
语法 : ln -s [原文件] [目标文件]
命令英文原意:link
作用: 把原文件生成目标链接文件
选项: -s 创建软链接
硬链接特征:
1.拥有相同的i节点和存储block块,可以看作是同一个文件
2.可通过i节点识别
3.不能跨分区
4.不能针对目录使用
软链接特征:
1.类似Windows快捷方式
2.软链接拥有自己的I节点和Block块,但是数据块中只保存原文件的文件名和I节点号,并没有实际的文件数据
3.lrwxrwxrwx l软链接, 软链接文件权限都为rwxrwxrwx
4.修改任意文件,另一个都改变
5.删除原文件,软链接不能使用
注意:如果要做软链接原文件一定要写绝对路劲,因为系统会在目标文件同级目录下寻找,如果没有就会报错
三、文件搜索命令
3.1文件搜索命令locate(搜索速度快)
命令格式:
. locate 文件名
在后台数据库中按文件名搜索,搜索速度更快 ,搜索的数据库是在/var/lib/mlocate下,
#locate命令所搜索的后台数据库并不是实时更新,更新频率是一天一更。
.updatedb
更新数据库
Locate只可以按照文件名来搜索
Locate的搜索是按照/etc/updatedb.conf下的这个配置文件来搜索。
. PRUNE_BIND_MOUNTS=”yes” 开启搜索限制
. PRUNEFS= 搜索时不搜索的文件系统
.PRUNENAMES= 搜索时不搜索的文件类型
.PRUNEPATHS= 搜索时不搜索的路径
3.2命令搜索命令 whereis 与which
. whereis 命令
只能搜索系统命令,不能搜索我们创建的文件, 搜索命令所在路径及帮助文档锁在位置
选项: -b: 只查找可执行文件
-m: 只查找不帮助文件
.which 命令
搜索命令所在路径及别名
像cd这样的shell内置命令无法通过whereis和which来找到
PATH环境变量
.PATH环境变量:定义的是系统搜索命令的路径
Whereis 和which搜索的命令的路径依赖的就是PATH定义的路径
3.3 find命令
.find [搜索范围] [搜索条件]
搜索文件
.避免大范围搜索,会非常耗费系统资源
.find是在系统当中搜索符合条件的文件名。如果需要匹配,使用通配符匹配,通配符是完全匹配。
.Linux中的通配符
* : 匹配任意内容
? :匹配任意一个字符
[] : 匹配任意一个中括号内的字符
选项: -name :按照文件名精确匹配
-iname: 文件名不区分大小写
-user : 按照所有者搜索
-nouser : 查找没有所有者的文件
所有的文件对Linux来说都要有所有者,如果没有所有者对Linux来讲他就是垃圾文件,但是有些特殊情况:1.如果这个文件是由内核产生的(内核是直接调用不经过系统用户)有可能没有所有者。 2. 外来文件,例如我用U盘在Windows中拷贝文件,然后拿到Linux使用,这个文件就有可能没有所有者,因为Windows是忽略所有者(Windows有这个概念)这个概念的。
. find /var/log/ -mtime +10
查找十天前修改的文件
-10 : 十天内修改的文件
10 :十天当天修改的文件
+10 : 十天前修改的文件
atime : 文件访问时间
ctime : 改变文件属性时间
mtime : 修改文件内容 时间
.find . -size 25k
查找文件大小是25KB的文件
-25K :小于25KB的文件
25K: 等于25KB的文件
+25K : 大于25KB的文件
.find . -inum 262422
查找i节点是262422的文件
每一个文件都有自己的i节点,系统查找文件是按照id号(inode i节点)来查找
.find /etc -size +20k -a -size -50k
查找/etc/目录下,大于20KB并且小于50KB的文件
-a : and逻辑与,两个条件都满足
-o : or逻辑或,两个条件满足一个即可
. find /etc -size +20k -a -size -50k -exec ls -lh {} \;
查找/etc/目录下,大于20KB并且小于50KB的文件, 并显示详细信息。
-exec/ -ok 命令 {} \;对搜索结果执行操作,有了exec就会对查找的结果执行exec后面的命令。
3.4:字符串搜索命令grep
语法: grep [选项] 字符串 文件名
作用:在文件当中匹配符合条件的字符串
选项:-i 忽略大小写 -v 排除指定字符串
3.5:find命令和grep命令的区别
- find命令:在系统当中搜索符合条件的文件,如果需要匹配,使用通配符匹配,通配符是完全匹配
- grep命令:在文件当中搜索符合条件的字符串,如果需要匹配,使用正则表达式进行匹配,正则表达式是包含匹配
- 帮助命令
4.1:帮助命令man (manual的缩写)
语法:man 命令
作用:获取指定命令的帮助
4.1.1:man的级别
1 :查看命令的帮助
2 :查看可被内核调用的函数的帮助
3 :查看函数和函数库的帮助
4 :查看特殊文件的帮助(主要是在/dev目录下的文件)
5 :查看配置文件的帮助
6 :查看游戏的帮助
7 :查看其它杂项的帮助
8 :查看系统管理员可用命令的帮助
9 :查看和内核相关文件的帮助(现在有些系统里已经没有9)
4.1.2:查看命令拥有哪个级别的帮助
语法: man -f 命令
等同于: whatis 命令
例如: man -f passwd
man 5 passwd
4.1.3:查看和命令相关的所有帮助
语法: man -k 命令
等同于: apropos命令
4.2:其他帮助命令
4.2.1:选项帮助
语法:命令 --help
作用:获取命令选项的帮助
4.2.2:shell内部命令帮助
shell是linux命令解释器,是壳(区别于核)
语法:help shell内部命令 (只针对内部命令)
作用:获取shell内部命令的帮助
例: whereis 确定是否是shell内部命令,能查到命令的位置,即可执行文件,则不是shell内部命令即后来安装的(别人编写的), help获取内部命令帮助
注意:内部命令不能使用man命令来获取帮助,如man cd,他会打开bash,即linux交互界面shell的说明,会罗列所有常见的内部命令,所以对于内部命令要获取帮助需要使用help
4.2.3:详细命令帮助info
语法:info 命令
进入info命令后的操作:
回车:进入帮助子页面
u:进入上层页面
n:进入下一个帮助小节
p:进入上一个帮助小节
q:退出
- 压缩与解压缩命令
常用压缩格式: .zip .gz .bz2 .tar.gz .tar.bz2
5.1: .zip格式
语法:zip 压缩文件名 原文件
作用:压缩文件
语法: zip -r 压缩文件名 原目录
作用:压缩目录
语法:unzip 压缩文件
作用:解压缩文件
5.2: .gz格式
语法: .gzip 源文件
作用:压缩为.gz格式的压缩文件,源文件会消失
语法:gzip -c 源文件 > 压缩文件
作用:压缩为.gz格式,源文件保留
注意:>的作用是输出重定向,将命令的输出结果写入指定的文件,gzip -c 命令是将压缩结果输出到屏幕,所以通过>就可以实现压缩保留源文件。
语法:gzip -r 目录
作用:压缩目录下所有的子文件,但不能压缩目录
语法:gzip -d 压缩文件
作用:解压缩文件,不保留压缩包
语法:gunzip 压缩文件
作用:解压缩文件
语法:gunzip -r 压缩文件
作用:解压缩目录
5.3:.bz2格式
语法:bzip2 源文件
作用:压缩为.bz2格式,不保留源文件
语法:bzip2 -k 源文件
作用:压缩之后保留源文件
注意:bzip2不能压缩目录
语法:bzip2 -d 压缩文件
作用:解压缩, -k保留压缩文件
语法:bunzip2 压缩文件
作用:解压缩, -k保留压缩文件
5.4:打包命令tar
语法:tar -cvf 打包文件名 源文件
选项: -c :打包
-v :显示过程
-f :制定打包后的文件名
语法:tar -xvf 打包文件名
选项:-x :解打包
5.5:.tar.gz格式
其实.tar.gz格式是先打包为.tar格式,再压缩为.gz格式
语法:tar -zcvf 压缩包名.tar.gz 源文件
选项: -z :压缩为.tar.gz格式
作用:压缩
语法:tar -zxvf 压缩包名.tar.gz
选项: -x : 解压缩.tar.gz格式
作用:解压
5.6:.tar.bz2格式
语法:tar -jcvf 压缩包名.tar.bz2 源文件
选项:-z :压缩为.tar.bz2格式
语法:tar -jxvf 压缩包名.tar.bz2
选项:-x :解压缩.tar.bz2格式
5.7:拓展
- 可以将多个文件进行压缩,只需将多个要压缩的文件用空格隔开
- 可以指定压缩文件的生成路径,在压缩文件名前加上绝对路径即可
- 解压文件也可以指定解压文件生成的路径,只要在最后加上 ‘-C 路径’即可
- 也可以不解压缩查看压缩文件内容,在命令选项中加上参数 -t即可
- 关机与重启命令
语法:shutdown [选项] 时间
选项:-c :取消前一个关机命令
-h :关机
-r :重启
时间:now就是马上关机,写小时分钟是定时关机
6.1:其他关机命令
halt
poweroff
init 0
注意:这三个关机命令都不是太安全,shutdown在关机时会保存当前的状态
6.2:其他重启命令
reboot
init 6
6.3:系统的运行级别
0 :关机
1 :单用户
2 :不完全多用户,不含NFS服务
3 :完全多用户
4 :未分配
5 :图形界面
6 :重启
如何查看当前的运行级别:使用命令 runlevel,结果有两个数,前一个代表上一状态的级别,第二个代表当前运行级别
6.4:退出登录命令
语法 :logout
七、其他常用命令
7.1:挂载命令
- 查询与自动挂载
语法:mount
作用:查询系统中已经挂载的设备
语法:mount -a
作用:依据配置文件/etc/fstab的内容,自动挂载
- 挂载命令格式
语法:mount [-t文件系统] [-o特殊选项] 设备文件名 挂载点
选项: -t文件系统 :加入文件系统类型来指定挂载的类型,可以ext3,ext4,iso9660等文件系统
-o特殊选项 :可以指定挂载的额外选项,有很多参数,具体可去百度
- 挂载光盘
步骤:建立挂载点 --》挂载光盘 -->卸载光盘
语法:mkdir /mnt/cdrom
作用:建立挂载点
语法:mount -t iso9600 /dev/cdrom /mnt/cdrom
作用:挂载光盘
注意:设备文件名最好用/dev/sr0,因为/dev/cdrom是/dev/cdrom的软链接,软链接是要系统完全启动之后才能生效,所以保险起见用/dev/sr0
语法:umount 设备文件名或挂载点
作用:卸载挂载点
- 挂载U盘
步骤:查看设备文件名 --》挂载U盘
语法:fdisk -l
作用:查看U盘设备文件名
语法:mount -t vfat 设备文件名 挂载点
作用:挂载U盘
注意:linux默认是不支持NTFS文件系统的(可以安装软件来支持或编译linux内核让他支持,而且是只读)
7.2:用户登录查看和用户交互命令
7.2.1:查看用户登录信息
语法:w 用户名
命令输出: USER :登陆用户名
TTY:登陆终端
FROM:从那个ip地址登录
LOGIN@:登录时间
IDLE:用户闲置时间
JCPU:指的是和该终端连接的所有进程占用的时间,这个时间并不包括过去的后台作业时间,但包括当前正在运行的后台作业所占用的时间
PCPU:是指当前进程所占用的时间
WHAT:当前正在运行的命令
语法: who 用户名
命令输出: 用户名 登陆终端 登录时间(登陆来源ip地址)
7.2.2:查询当前登录和过去登录的用户信息
语法: last
命令输出: 用户名 登陆终端 登录IP 登录时间 退出时间(在线时间)
注意:last命令默认是读取/var/log/wtmp文件数据
7.2.3:查看所有用户的最后一次登录时间
语法:lastlog
命令输出: 用户名 登陆终端 登录IP 最后一次登录时间
注意:lastlog命令默认是读取/var/log/lastlog文件内容(不能直接查看,防止人为修改)
- VIM文本编辑器
8.1:VIM编辑器概述
- VI编辑器概述
Visual Interface 可视化接口
VIM是VI的升级版,保留了VI的所有的命令
VIM支持多级撤销,可以跨平台运行,支持语法高亮,支持图形界面
8.2:VI编辑器的操作模式
- Command Mode 命令模式(默认情况是命令模式也是底行模式,底行模式和命令模式的区别在于底行模式输入命令后需要回车而命令模式输入命令后会直接执行)
- Insert Mode 输入模式
- Last Line Mode 底行模式(尾行,末行)
8.3:常用指令
8.3.1:底行模式常用指令
指令 | 作用 |
:w | 保存修改 |
:q | 退出 |
:! | 强制执行 |
:ls | 列出当前编辑器中打开的所有文件 |
:n | 切换到下一个文件 |
:N | 切换到前一个文件 |
:15 | 把光标快速定位到15行 |
/xxx | 从光标位置开始向后搜索xxx这个字符串,搜索到之后会将光标定位到xxx第一 次出现的位置 |
?xxx | 从光标位置开始向前搜索xxx这个字符串,搜索到之后会将光标定位到xxx第一次出现的位置 |
注意:这三个指令可以配合使用
g 跳转top;
ctrl+g 跳转bottom
:set number 显示行号
8.3.2:命令模式常用指令
指令 | 作用 |
h | 光标左移 |
j | 光标下移 |
k | 光标上移 |
l | 光标右移 |
ctrl + f | 向下翻页(front) |
ctrl +b | 向上翻页(back) |
ctrl + d | 向下翻半页(down) |
ctrl + | 向上翻半页(up) |
dd | 删除光标所在行 |
o | 在光标所在行的下方插入一行并且切换到输入模式 |
yy | 复制光标所在的行 |
p | 在光标所在行的下方粘贴 |
P(大写) | 在光标所在行的上方粘贴 |
九、磁盘管理
9.1:磁盘管理基本命令
语法:df [选项]
作用:查看磁盘分区使用状况
选项: -l :仅显示本地磁盘(默认)
-a :显示所有文件系统的磁盘使用情况,包含比如/proc/
-h :以1024进制计算最适合的单位显示磁盘容量
-H :以1000进制计算最适合的单位显示磁盘容量
-T :显示磁盘分区类型
-t :显示指定类型文件系统的磁盘分区
-x :不显示指定类型文件系统的磁盘分区
语法: du [选项]
作用:统计磁盘上的文件大小
选项:-b :以byte为单位统计文件
-k :以kb为单位统计文件
-m :以MB为单位统计文件
-h :按照1024进制以最合适的单位统计文件
-H :按照1000进制以最合适的单位统计文件
-s :制定统计目标
9.2:硬盘分区和格式化概述
要点回顾:
- 主分区和扩展分区总数不能超过4个
- 扩展分区最多只能有一个
- 扩展分区不能直接存取数据,必须在扩展分区内部简历逻辑分区才能存储数据
问题:当硬盘空间消耗殆尽时怎么办?
解决:在保留原硬盘的基础上,给服务添加新的硬盘
9.3:硬盘分区模式
Linux系统中硬件设备都是以文件的形式存于根目录下的dev目录下
硬件设备都是由Linux系统自动识别的(硬盘添加到服务器中之后服务器开机就会识别出来,但是不能立即使用,必须对硬盘进行分区,格式化,挂在后才能使用)
9.3.1:MBR分区
主分区不能超过4个
单个分区容量最大2TB
分区工具:fdisk(只能做MBR分区)
9.3.2:GPT分区
主分区个数“几乎”没有限制(最多支持128个主分区)
单个分区容量“几乎”没有限制(最多达到18EB, 1EB = 1024PB, 1PB = 1024TB)
GPT的主分区中,不太适合安装x86架构的系统
分区工具:parted (既可以进行MBR分区也可以进行GPT分区)
parted分区工具有两种模式,一种是 交互模式,一种是命令模式。
交互模式中系统会使用提问的方式给出选项让我们选择需要的选项
9.4:硬盘分区格式化
格式化工具:mkfs
语法:(两种)
mkfs.文件系统类型 设备名称
mkfs -t 文件系统名称 设备名称
注意:MBR分区的扩展分区不可以进行格式化
9.5:挂载分区
理论上我们可以把分区挂载在系统的任一目录,但是系统为我们提供了一个默认的挂载目录是:/mnt目录。挂载时必训挂载到一个已经存在的挂载点。
例如:我们把sdb1挂载到mnt下的imooc文件夹中
首先在mnt目录下新建imooc
mkdir -p /mnt/imooc
执行挂载
mount /dev/sdb1 /mnt/imooc
卸载
umount /mnt/imooc
注意:通过mount命令手挂载的分区是不具有永久性的,当系统重启之后,挂载就会失效。如果想让分区在重启之后自动挂载,需要编辑etc目录下的fstab,添加一行
格式是: 设备名称 挂载点 文件系统类型 default 0 0
9.6:swap分区
如何为硬盘添加swap交换分区?
- 先建立一个普通的Linux分区
- 修改分区类型的16进制编码
- 格式化交换分区: mkswap 设备名称
- 启用交换分区:swapon 设备名称
- 可以使用swapoff 设备名称 来关闭交换分区
- 用户管理
10.1:用户和用户组
用户:用户就是使用操作系统的人,Linux允许多用户同一时间登陆同一操作系统。
用户组:具有相同系统权限的一组用户。
10.1.1:配置文件group
/etc/group存储当前系统中所有用户组信息,文件里面的内容如下:
组名称:组密码占位符 : 组编号 :组中用户列表
group: x : 123 : abc,def,xyz
注意:当用户组内只有一个用户且用户名和组名相同时用户名会省略。
root用户的组编号是0,组号1~499是系统预留组编号,一般是预留给安装在操作系统的软件或服务的。
用户手动创建的用户组编号是从500开始,一般情况下把大于等于500未被使用的编号分配给用户手动创建的用户组。
10.1.2:配置文件gshadow
/etc/gshadow存储当前系统中用户组的密码信息,group文件中有多少行,gshadow中就有多少行,两者一一对应,文件内容如下:
格式:
组名称: 组密码 : 组管理者 : 组中用户名列表
group : * : : abc,def, xyz
组管理者为空表示组内用户都可以管理这个组。
10.1.3:passwd配置文件
/etc/passwd存储当前系统中所有用的信息,文件内容如下:
user : x : 123 : 456 : xxxxxxx : /homr/user : /bin/bash
用户名:密码占位符:用户编号: 用户组编号:用户注释信息:用户主目录:shell类型
10.1.4:shadow配置文件
/etc/shadow 存储当前系统中所有用户的密码信息,和passwd一一对应,文件内容如下:
user:vf;/Zu8sdf...: : : : :
用户名:密码 :::::
注意:密码是单向加密
10.2:用户和用户组的基本命令
10.2.1:用户组基本命令
语法:groupadd [选项] 用户组名称
选项:-g :指定创建的用户组编号
作用:创建用户组
语法:groupmod -n 新组名 旧组名
作用:修改用户组名称
语法:groupmod -g 用户组编号 用户组名称
作用:修改用户组编号
语法:groupdel 用户组名称
作用:删除用户组
注意:删除用户组之前最好删除组中的用户,如果不删除那么该组下的用户相当于黑户,在以后的操作中会有权限限制。
10.2.2:用户基本命
语法:useradd -g 用户组 用户名
作用:创建用户并指定用户组(系统默认会在home目录下创建与用户名同名的文件夹)
语法:useradd -d /home/xxx 用户名
作用:创建用户并指定个人文件夹(没有指定用户组,系统会创建与用户名同名的用户组)
语法:useradd -c 备注信息 用户名
作用:新建用户并添加备注信息
语法:usermod -l 新用户名 旧用户名
作用:修改用户名
语法:usermod -g 用户组名 用户名
作用:修改该用户所属用户组(主要用户组)
语法:userdel 用户名
作用:删除用户(不会删除个人文件夹里的文件),需要删除则加上参数 “-r”
语法:etc目录下新建nologin文件(文件内容无关紧要,可以是空文件)
作用:禁止非root用户登录
10.3、用户和用户组进阶命令
语法:passwd -l 用户名
作用:锁定该账户
语法:passwd -u 用户名
作用:解锁账户
语法: passwd -d 用户名
作用:清除指定账户的密码,使其可以无密码登录
linux中一个用户可以同时属于多个用户组,有一个组是主要组,其余的是附属组
语法:gpasswd -a 用户名 用户组名
作用:将指定用户添加到附属组(逗号分隔可以一次性添加多个附属组)
注意:当一个用户属于多个用户组的时候,默认创建的文件属于主要组,如果想以附属组组员的身份创建文件,那么就需要将身份临时切换到附属组。
语法:newgrp 附属组名 (注意:执行前需要切换到自己账户,附属组有组密码会提示输入)
作用:切换身份到附属组
语法:gpasswd -d 用户名 附属组名
作用:从附属组删除指定用户
语法:useradd -g 主要组名 -G 附属组名,......
作用:添加用户时同时指定主要组和附属组,多个附属组用逗号分隔
语法:gpasswd 用户组名 (执行命令后会提示输入密码)
作用:给用户组设置组密码
10.4、Linux中用户管理其他命令
语法:su 用户名
作用:切换当前用户身份
注意:su命令后不加任何参数表示切换到root用户
语法:whoami
作用:显示当前登陆用户名
语法:id 用户名
作用:显示指定用户信息,包括用户编号,用户名,主要组编号及名称,附属组列表
语法:groups 用户名
作用:显示用户所在的所有组
语法:chfn 用户名
作用:设置用户资料,依次输入用户资料
语法:funger 用户名
作用:显示用户详细资料
- 网络基础
11.1:ISO/OSI七层模型简介
十五、软件安装
15.1:软件包管理简介
15.1.1、软件包分类
1:源码包
脚本安装包(所谓脚本安装包,就是把复杂的软件包安装过程写成了程序脚本)
优点:开源,可以修改源代码
可以自由选择所需的功能
软件是编译安装,所以更加适合自己的系统,更加稳定效率也高
卸载方便
缺点:
安装过程步骤较多,尤其安装较大的软件集合时。
编译过程时间较长,安装比二进制安装时间长
因为是编译安装,一旦报错,新手很难解决
2:二进制包(RPM包, 系统默认包)
优点:安装管理简单,安装速度快
缺点:不能看到源代码, 功能选择不如源代码灵活, 依赖性
15.2:rpm命令管理
15.2.1:RPM命名规则
rpm包在系统光盘中
15.2.2:安装命令
15.2.3:升级与卸载
15.2.4:RPM包查询
15.2.5:RPM包校验
15.3:yum在线管理
15.4:源码包管理
15.5:脚本安装包
Shell基础
一、Shell概述
1.1:Shell是什么?
Shell是一个命令行解释器,他为用户提供了一个想Linux内核发送请求以便运行程序的界面系统程序,用户可以使用Shell来启动,挂起,停止甚至是编写一些程序
Shell还是一个功能相当强大的编程语言,易编写,易调试,灵活性较强,Shell是解释执行的脚本语言,在Shell中可以直接调用Linux系统命令。
1.2:Shell的分类
Bourne Shell :自从1979年起Unix就开始使用Bourne Shell,Bourne Shell的主文件名为sh
C Shell :C Shell主要在BSD版的Unix系统中使用,其语法和C语言类似而得名
Shell的两种主要语法类型有Bourne和C,这两种语法彼此不兼容,Bourne家族主要包括sh,ksh,Bash,psh,zsh;C家族主要包括:csh,tcsh
Bash:Bash与sh兼容,现在使用的linux(我的阿里云服务器)就是使用Bash作为用户的基本Shell
可以使用 echo $SHELL 查看当前系统中运行的shell
1.3:Linux支持的Shell
在/etc/shells这个文件中可以看到linux所支持的shell, 系统启动第一次进入的shell就是初始shell,即父shell,在一个操作界面中是可以掉另一个操作界面,父shell中可以调用子shell,可以一级一级往下掉。
- 脚本执行方式
2.1:echo输出命令
语法: echo [选项] [输出内容]
选项: -e :支持反斜线控制的字符转换
作用:输出指定内容到屏幕
可识别的控制符:
\a | 输出警告音 |
\b | 退格键,也就是向左删除键 |
\n | 换行符 |
\r | 回车键 |
\t | 制表符,也就是Tab键 |
\v | 垂直制表符 |
\0nnn | 按照八进制ASCII码表输出字符。其中0为数字0,nnn是三位八进制数 |
\xhh | 按照十六进制ASCII码表输出字符。其中hh是两位十六进制数 |
输出颜色: 30m:黑色,31m:红色,32m:绿色,33m:黄色,34m:蓝色,35m:洋红,36m:青色, 37m:白色
例:echo -e “\e[1;31m 我是豆豆\e[0m”
解释:\e代表调用颜色,[1代表开启颜色选项,\e[0m代表关闭颜色
2.2:第一个脚本
linux系统中shell脚本最大的好处是可以调用系统命令。
#!/bin/bash
#the first program
echo -e “\e[1;34m天上掉下个林妹妹\e[0m”
注意:#!/bin/bash这句话是不可以省略的,在shell脚本中是可以调用其他语言的,一旦调用其他语言而没有写这句话则会报错。
2.3:脚本执行
方法一:赋予执行权限,直接运行
chmod 755 hello.sh
./hello.sh
方法二:通过Bash调用执行脚本
bash hello.sh
- Bash的基本功能
linux的标准shell就是bash
3.1:命令别名与快捷键
语法:alias
作用:查看系统中所有的命令的别名
语法: alias 别名=‘原名令’
作用:设定命令别名
注意:临时生效
如何让别名永久生效:写入环境变量配置文件
vi ~/.bashrc
语法:unalias 别名
作用:删除别名
注意:临时删除
命令的生效顺序
- 第一顺位:执行用绝对路径或相对路径执行的命令
- 第二顺位:执行别名
- 第三顺位:执行Bash的内部命令。
- 第四顺位:执行按照$PATH环境变量定义的目录查找顺序找到的第一个命令
常用快捷键
ctrl + c | 强制终止当前命令 |
ctrl + l | 清屏 |
ctrl + a | 光标移动到命令行首 |
ctrl + e | 光标移动到命令行尾 |
ctrl + u | 从光标所在位置删除到行首 |
ctrl + z | 把命令放入后台 |
ctrl + r | 在历史命令中搜索 |
3.2:历史命令
语法:history [选项] [历史命令保存文件]
选项: -c : 清空历史命令
-w: 把缓存中的历史命令写入历史命令保存文件~/.bash_history
注意:历史命令默认会保存1000条,可以在环境变量配置文件/etc/profile中修改
- 历史命令的调用
使用上下箭头调用历史命令
使用 !n 重复执行第n条历史命令
使用 !! 重复执行上一条命令
使用 !字符串 重复执行最后一条以该字符串开头的命令
- 命令和文件的补全
在bash中,命令与文件补全是非常方便的常用的功能,我们只要在输入命令或文件时,按下tab键就会自动进行补全。
注意:命令补全依赖于path环境变量,而目录和文件的补全依赖操作的路径
3.3:输出重定向
- 标准输入输出
设备 | 设备文件名 | 文件描述符 | 类型 |
键盘 | /dev/stdin | 0 | 标准输入 |
显示器 | /dev/sdtout | 1 | 标准输出 |
显示器 | /dev/sdterr | 2 | 标准错误输出 |
- 输出重定向
类型 | 符号 | 作用 |
标准输出重定向 | 命令 > 文件 | 以覆盖的的方式,把命令的正确输出输出到指定的文件或设备当中 |
命令 >> 文件 | 以追加的方式,把命令的正确输出输出到指定的文件或设备当中 | |
标准错误输出重定向 | 错误命令 2 > 文件 | 以覆盖的方式,把命令的错误输出输出到指定的文件或设备当中 |
错误命令 2 >> 文件 | 以追加的方式,把命令的错误输出输出到指定的文件或设备当中 | |
正确输出和错误输出同时保存 | 命令 > 文件 2>&1 | 以覆盖的方式,把正确输出和错误输出都保存在同一个文件中 |
命令 >> 文件 2>&1 | 以追加的方式,把正确输出和错误输出都保存在一个文件中 | |
命令 &> 文件 | 以覆盖的方式,把正确输出和错误输出都保存在同一文件
| |
命令 &>> 文件 | 以追加的方式,把正确输出和错误输出都保存在同一文件中 | |
命令>>文件1 2>>文件2 | 把正确的输出追加到文件1中,错误的输出追加到文件2中 |
3.4:输入重定向
1、统计命令
语法:wc [选项] [文件名]
选项: -c:统计字节数
-w:统计单词数
-l :统计行数
- 输入重定向很少使用
命令 < 文件 | 把文件作为命令的输入 |
命令 << 标识符 | 标识符把标识符之间的内容作为命令的输入 |
3.5:管道符
- 多命令顺序执行
多命令执行符 | 格式 | 作用 |
; | 命令1 ;命令2 | 多个命令顺序执行,命令之间没有任何逻辑联系 |
&& | 命令1&&命令2 | 逻辑与 当命令1正确执行,则命令2才会执行 当命令1执行不正确,则命令2不会执行 |
|| | 命令1||命令2 | 逻辑或 当命令1执行不正确,则命令2才会执行 当命令1正确执行,则命令2不会执行 |
- 管道符
语法:命令1 | 命令2
作用:命令1的正确输出作为命令2的操作对象
3.6:通配符
通配符 | 作用 |
? | 匹配一个任意字符 |
* | 匹配0个或任意多个字符 |
[] | 匹配中括号中任意一个字符 |
[-] | 匹配中括号中任意一个字符,-代表范围 |
[^] | 逻辑非,匹配不是中括号内的一个字符 |
- Bash中其他特殊符号
符号 | 作用 |
‘ ‘ | 单引号,在单引号中所有的特殊符号,都没有特殊含义 |
“ ” | 双引号,在双引号的特殊符号没有特殊含义,但是$, `, 和\是例外,拥有“调用变量的值”,“引用命令”和“转义符”的特殊含义 |
` ` | 反引号,反引号括起来的内容是系统命令,在bash中会限制性,他和$()的作用一样,不过推荐使用$(),因为反引号容易看错 |
$() | 和反引号一样用来引用系统命令 |
# | 在shell脚本中,#开头的行代表注释 |
$ | 用于调用变量的值,如需调用变量name的值时,需要用$name的方式得到变量的值 |
\ | 转义符,跟在反斜杠之后的特殊符号将失去特殊含义,变为普通字符 |