小恐的linux学习笔记更新时间2023年4月5日11:08:44
# ———————————linux学习笔记———————————
# 指令索引
获取帮助信息:`man`、获得shell内置命令的帮助信息:`help`
关机:`shutdown`、重启电脑:`reboot`
把内存的数据同步到磁盘:`sync`
在图形界面注销:`logout`、创建用户:`useradd`
修改密码:`passwd`、删除用户:`userdel`、切换用户:`su`
查询用户:`su`、查看当前用户:/`whoami`还有/ `who am i`
创建组:`groupadd`、删除组:`groupdel`
运行级别:`init`[0到6]、查看当前位置`pwd`、切换路径`cd`
创建目录`mkdir`、 创建文件`touch`、 复制文件`cp`、 剪切文件`mv`
删除文件`rm`、 打开文件(不编辑)`cat`、查看磁盘信息`df -h`
# 基础篇
# linux的目录结构
。 linux只有一个根目录
。 /斜杠就代表根目录
。 在linux里一切皆为文件
。。所有的硬件在Linux里面都映射成文件去管理
。 linux的目录
/bin(常用)(usr/bin、 /usr/local/bin)是Binary的缩写,这个目录存放着最经常使用的命令
/sbin (/usr/sbin、 /usr/local/sbin)s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
/home存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录名是以用户的账号命名
/root该目录为系统管理员,也称作超级权限者的用户主目录
/lib系统开机所需要最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库
/lost+found这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件
/etc(常用)所有的系统管理所需要的配置文件和子目录,比如安装mysql数据库
/usr(常用)这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似与windows下的program files目录。
/boot(常用)存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件
/proc(不要去乱碰这个文件夹的一切)这个目录是一个虚拟的目录,它是系统内存的映射,访问这个目录来获取系统信息/srv(也不要乱动) service缩写,该目录存放一些服务启动之后需要提取的数据
/sys(也不要乱动)这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统sysfs
/tmp这个目录是用来存放一些临时文件的
/dev类似于windows的设备管理器,把所有的硬件用文件的形式存储
/media(常用) linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下
/mnt(常用)系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂载任/mnt/上,然后进入该目录就可以查看里的内容了。d:/myshare
/opt这是给主机额外安装软件所摆放的目录。如安装ORACLE数据库就可放到该目录下。默认为空
/usr/local(常用)这是另一个给主机额外安装软件所安装的目录。一般是通过编译源码方式安装的程序
/var(常用)这个目录中存放着在不断扩充着的东西,习惯将经常被修改的目录放在这个目录下。包括各种日志文件
/selinux [security-enhanced linux]SELinux是一种安全子系统,它能控制程序只能访问特定文件,有三种工作模式,可以自行设置.
# 实操篇——————————————
# 开机重启和用户登录注销
。 shutdown -h now 立刻进行关机
。。 -h的h代表的是halt
。 shudown -h 1 一分钟后会关机
。。 -h 1中的1是延迟多少分钟关机
shutdown -r now 现在重新启动电脑
halt 关机,作用和上面一样
reboot 现在从新启动电脑
。 sync 把内存的数据同步到磁盘
。。 在关机的时候对所有文件进行保存以防丢失的指令
。登录最好不要使用root管理员权限登录
。。因为权限最大
。。最好用普通账号登录之后使用su-用户名切换成root管理员权限
。登录注销用户指令
。。logout
。。在图形界面这个指令是不能使用的仅限于控制台使用
# 用户管理
。linux是多用户多任务的系统
。。任何使用系统资源的用户都得要申请一个用户账号
## 创建用户
。基本语法
。。useradd 用户名
```
useradd xiaoVxiaoV
```
。。新创建的用户的家目录在home/xiaoVxiaoV
。。可以通过useradd -d 指定目录 新的用户名,给新创建的用户指定家目录
```
useradd -d /home/test xiaoVxiaoV
```
。。。xiaoVxiaoV的家目录规定创建在home的test的目录下
## 修改密码
。基本语法
。。passwd 用户名
```
passwd xiaoVxiaoV
pwd
```
。。如果只输入passwd不输入用户名就会修改当前使用的用户名的密码
。。pwd是显示当前自己所在的那个目录下
## 删除用户
。删除用户有两种
。。删除用户并且删除目录
。。。userdel -r 用户名称
```
userdel -r xiaoVxiaoV
```
。。删除用户并且保留目录
。。。userdel 用户名称
```
userdel xiaoVxiaoV
```
。自己没法删除自己
## 查询用户信息
- a基本语法
- a `id 用户名`
- s代码
```
id root
```
- s会显示的信息
- a uid
- s 组id
- s 所在哪个组
- d
- d
- s
- d
## 切换用户
- a语法
- a `su - 切换的用户名`
- d
- s权限高的用户切换至权限底的用户不需要输入密码
- s当腰按返回到原来的用户需要使用/exit或/logout指令
- d
## 查看当前用户信息
- a基础语法
- a /whoami
- s / who am i
- s会显示你是谁
- a在哪个组
- s你是什么时候登录和时间
- s 显示IP
- d
- s
- d
-
- d
## 用户组
- a什么是用户组
- a用户组类似角色
- s系统可以对有共性/权限多个多个用户进行统一管理
- s给每一个用户都单独赋予权限是很累的事情
- s但是给组赋予特定的权限拉进组里的用户就有相同的权限了
- d
- d
## 新建主
- a基本语法
- a `groupadd 组名`
- s
-
- d
- s
## 删除组
- a基本用法
- s `groupdel 组名`
- d
## 增加用户时直接加上组
- a基本语法
- s `useradd -g 用户组 用户名`
- d
## 修改用户的组
- a基本语法
- a `usermod -g 用户组 用户名`
- d
- d
## 用户和组相关文件
- a /tec/passwd 文件
- a用户( user )的配置文件,记录用户的各种信息
- d每行的含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
- s /etc/shadow文件
- a口令的配置文件
- s每行的含义:登录名:加密口令:最后次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
- d
- s /etc/group 文件
- a组(group)的配置文件,记录Linux包含的组的信息
- s每行含义:组名:口令:组标识号:组内用户列表
- d
- d
# 实用指令
- a运行级别说明
- a0:关机
- s1:单用户【找回密码】
- a单用户模式可以找回丢失的密码
- s
- d
- s2:多用户状态没有网络服务
- a用的非常少
- d
- s3:多用户状态有网络服务
- a用的最多
- s第一不带图形界面
- s支持多用户而且有网络服务
- d
- s4:系统未使用保留给用户
- a忽略不计
- d
- s5:图形界面
- s6:系统重启
- a
- d
- s常用的运行级别是3和5
- d
- s指令
- a `init[0123456]`
- s 通过init来切换不同的的运行级别
- d
- d
## 帮助指令
- a man获取帮助信息
- a基本语法
- s`man[命令或配置文件]`
- a实例
- d `man ls`
- d
- s help指令
- a基本语法
- s `help 命令`
- s功能描述:获得shell内置命令的帮助信息
- d
- d
# 指令与选项
- a指令是指在linux终端(命令行)中输入的内容称之为指令
- s一个完整的指令标准格式,linux通用的格式
- a #指令主体 [选项]操作对象
- a 选项可以不要
- s 是可选的
- s在写文档的时候,文档中被中括号括起来的内容就属于可要可不要的内容
- s操作对象其实也是可以选择的
- a#指令主体 [选项][操作对象]
- s具体看命令
- s有的可以选择有的是必须要填的
- s不写对象会默认操作当前的对象
- s指令里只能包含一条指令主体
- a一个指令主体可以包含多个选项
- s操作对象可以说多个
- s
- d
- d
- d
- d
- d
# 基础指令
## ls指令
- a ls的含义
- a list
- s清单列表
- s列出当前路径下的所有文件和文件夹的名称
- s
- d
- s用法1
- a列出当前目录下的所有文件和文件夹的名称
- d
- s用法2
- a需要在ls右边加入路径
- a列出指定路径下的所有文件以及文件夹的名称
- a关于路径
- s路径可以分为两种情况
- s相对路径
- a首先得有一个参照物
- s就是当前工作路径
- s相对路径通常会用到两个符号
- a一个是./
- a表示当前目录
- s可以不写
- d
- s一个是../
- a表示当前目录的上一级目录
- d
- d
- d
- s绝对路径
- a绝对路径不需要参照物
- s直接从根开始找
- a根就是一个/
- d
- d
- d
- d
- s用法3
- a #ls 选项 路径
- s在列出制定路径下的文件和文件夹的名称
- s常见语法
- a #ls -l 路径
- a表示list
- s以详细列表的形式进行展示
- d
- s ls -a 路径
- a显示所有的文件和文件夹(包含了隐藏文件和隐藏的文件夹)
- S所有隐藏文件都是以点(.)开头的
- d
- s #ls -la 路径
- d
- d
- s用法4
- a #ls -lh 路径
- s列出制定路径下的所有文件以及文件夹的名称
- s以列表的形式并且在显示文档大小的时候以可读性较高的形式显示
- d
- d
- s列出的显示结果
- a蓝色表示文件夹
- s黑色表示文件
- s绿色表示拥有这个文件夹的所有权限
- d
- d
## pwd命令
- a pwd指令用法
- a介绍
- s含义:print working directory
- a打印当前工作目录
- d
- d
- s
- d
## cd命令
- a #cd全称:change directory(改变目录)
- s 用来切换当前工作的目录
- s语法
- a cd 路径
- a既可以是相对路径也可以是绝对路径
- s cd /usr/local这是绝对路径
- s cd ../../home/linux123
- d
- d
- s补充内容
- a ~号在linux中是个特殊的符号,来表示用户的家目录
- a用法
- s cd ~
- s快速切换到了用户的家目录
- d
- d
- d
## mkdir 命令
- a 创建目录指令
- s语法1
- a mkdir 路径
- a第一种
- a`mkdir wenVjianMjiaW`
- d
- s第二种
- a mkdir /root/xinEjianMwenWjianMjiaW
- d
- d
- s如果不写就会在当前目录下新建文件夹
- s路径可以是文件夹的名称,也可以是包含名称的完整的路径
- a可以是绝对路径
- s也可以说是相对路径
- d
- d
- s语法2
- a `mkdir -p 路径`
- s如果要连续创建在一个不存在的子目录的子目录的子目录,用这个指令会连续创建出子目录的路径
- a`mkdir -p /root/a/b/c/d/e/f/g`
- s不需要先创建a再创建b然后再去创建c了,直接创建整个不存在的子路径
- d
- s语法3
- a mkdir 路径1 路径2 路径3 路径4
- a一次性创建多个目录
- smkdir a b c d
- d
- d
- d
## touch指令
- a touch指令是用来创建文件的
- stouch语法
- a#touch [文件路径]
- a可以只写文件名
- a `#touch xinEjianMwenWbenV.txt`
- d
- s也可以只写路径
- a `#touch /home/xiaoVxiaoV/wenWbenVwenWjianM.txt`
- d
- d
- d
- d
## cp指令
- a cp是复制的意思
- s能复制文件以及文件夹到指定的位置
- s cp语法
- a#cp 被复制文档的路径 文档被复制粘贴到的路径(或者是被保存的路径)
- a如果是复制当前的目录的文件可以不写路径
- a `#cp yaoMfuMzhiMdeEwenWjianM.txt /home/xiaoVxiaoV/`
- d
- s如果不再当前目录那么就得写入路径然后是
- a`#cp root/yaoMfuMzhiMdeEwenWjianM.txt /home/xiaoVxiaoV/`
- d
- s可以在粘贴的时候重命名
- a`#cp yaoMfuMzhiMdeEwenWjianM.txt /home/xiaoVxiaoV/fuMzhiMdeEwenWjianM.txt `
- d
- d
- s复制粘贴文件夹
- a`#cp /wenWjianMjiaWyiWdongM/ /home/xiaoVxiaoV/wenWjianMjiaWyiWdongM`
- s当使用cp来移动文件夹的时候必须要添加选项否则就会被忽略目录
- a选项-r
- s`#cp -r /wenWjianMjiaWyiWdongM/ /home/xiaoVxiaoV/wenWjianMjiaWyiWdongM`
- a-r的意思就是递归复制
- s-r也表示递归的意思
- s如果不添加-r只会拿空文件夹没有子文件夹
- d
- d
- d
- d
- d
## mv指令
- a mv(move、移动指令或者叫剪切)
- s用法
- a移动文档到新的位置
- d
- s语法
- a#mv 需要移动的文档路径 需要保存的而位置路径
- d
- s案例
- a案例1使用mv命令来移动文件
- a`#mv abc.txt /abc.txt`
- s当前路径不需要写路径
- s把当前的文件移动到了根的路径下
- s在路径的最后要写出要移动的文件名字与后缀
- s也能在被移动的路径里重命名
- d
- s案例2使用mv命令来移动文件夹
- a`/houme/xiaoVxiaoV/a /root/`
- d
- s mv指令可以移动文件也可以原地改名
- d
- d
## rm命令
- a rm命令(remove、移除、删除)
- s删除或移除一个文件或者文件夹
- s语法
- a#rm 选项 需要移除的文档路径
- s`rm /a`
- s会出现要不要删除的选项
- a可以使用四个命令表示同意或拒绝
- s y或yes
- s n或no
- d
- d
- s案例
- a案例1删除一个文件夹
- a`#rm -r /root/a`
- s删除文件夹必须要使用递归指令-r
- s下一步就是有几个文件和文件夹就得输入多少个yes或no了
- s这时候就得使用-f指令了或者是-rf组合使用
- d
- s案例2删除多个文档
- a
- d
- s案例3删除特殊特征的名字的文件
- a`rm -r ooo*`
- s比方说有很多个文件都带有ooo开头的文件ooo1、ooo2、ooo3、ooo4的文件一起删除
- s*叫通配符
- a表示任意的字符
- s只要前面的多个文件的字是一模一样的就能管
- d
- d
- d
- s选项
- a -f
- a -f表示force(强制)
- s在rm加上这个选项在删除的时候就不会有选择YES还是NO了
- d
- s -r
- a
- d
- d
- d
## 路径补全
- a如果路径过长只要又不想输入完可以按下tab键
- a 就会列出一个列表对着列表里的文件名输入一部分再按tab就能自动补全
- d
- d
## 输出重定向
- a把终端里显示的内容输出文件
- s语法
- a分别是一个>和两个>>
- s一个(>)是覆盖输出
- a会覆盖原先的文件内容
- d
- s两个(>>)是追加输出
- a不会覆盖原先的文件内容
- s会在原始内容的末尾继续输出
- d
- s正常执行的指令 > 文件的的路径
- a文件可以不存在
- s如果不存在就会自动新建
- s`ls -la > ls.txt`
- d
- d
- d
## cat指令
- a知己打开一个文件的功能
- s#cat 文件的路径
- s只想查看文件不想进入编辑直接使用cat不用使用vim了
- s cat指令可以使用对文件重定向合并
- a`/a.txt /b.txt /c.txt >abc.txt`
- d
- d
# 进阶命令
## df -h命令
- a查看磁盘的空间
- s语法
- a`#df -h`
- a加-h与不加-h的区别技术显示和不显示具体的单位
- s比如1024是1G如果不加-g如果大于1024比如1029直接被显示出来
- d
- d
- s表头filesystem
- a是分区的意思
- s size(大小)
- s Used(被使用的)
- s Avail(可用的)
- s Use%(已使用的百分比)
- s Mountd on(挂载点)
- d
- d
## free命令
- a查看内存使用使用情况
- s语法
- a`#free`
- afree的指令
- s-m是兆显示
- s-g是G现实
- s什么也不加就会精确到最小的数
- d
- d
- s表头
- a total
- s used
- s free
- s shared
- s buffers输出
- s cached输入
- d
- s内存不够用的时候就会使用硬盘当做存储空间(虚拟内存)
- d
## head命令
- a查看一个文件的前n行,如果不指定n则默认显示的前十行列表
- s用法
- a#head -n 文件的路径
- a语法1`head listall.log`
- s语法2`head 5 listall.log`
- d
- s
- d
- d
## tall命令
- a查看一个文件的某位的n行,如果n不指定就默认显示后10行
- s用法
- a语法1查看默认后十行`#tall listall.log`
- s语法2查看后五行 `#tall -5 listall.log`
- d
- s 可以通过tall命令来查看一个文件的动态变化
- a语法#tall -f 文件路径
- s `#tall -f /root/wenjian.txt`
- d
- s退出的时候只需要按下Q键就能退出这个tall命令
- d
## less命令
- a查看文件,以较少的内容进行输出,按下辅助功能键查看更多
- s语法
- a #less 需要查看的文件的路径
- s `#cd ~`
- a`#less lnstall.log`
- s会在最下边出现一个冒号
- s可以在冒号里输入数字就会从第20行显示
- s空格键一页一页的翻页
- s上下方向键和回车键是一行一行的翻页
- d
- d
- d
## wc命令
- a用来统计文件内容信息
- a包括行数
- s单词数
- s字节数
- d
- s用法
- a `#wc -lwc install.log`
- a l表示行数
- s w表示单词数
- s c表示字节数
- d
- d
- d
## date命令(重点)
- a操作时间日期(读取、设置)
- s语法1
- a `#date`
- d
- s语法2
- a`#date +%F`
- a%F等价于`#date "+%Y-%m-%d"`
- a字母的大小写注意
- s大写的Y表示整位的四位数年
- s小写的m是两位的月份
- s小写的d是天数
- s大写的%F是完整的年月日
- s%H是小时
- s%M分钟
- s%S秒数
- d
- d
- d
- s语法3
- a`#date "+%F %T"`
- s`#date #date +%F +%T`
- s加双引号会认为是一个整体
- s空格后就不算是一个整体了否则会报错
- s大T表示完整的时分秒
- d
- s语法4获取之前或者之后的某个时间(备份)
- a`#date -d "-1 day""+%Y-%m%d"`
- s大写的Y表示四位年份
- d
- s时间单位
- a天day
- s月份month
- s年year
- d
- d
## cal命令
- a操作日历
- s语法1
- a`#cal `直接输出当前月份的日历
- s等价于`#cal -1`
- d
- s语法2
- a`#cal -3`
- s上个月本月以及下一个月日历
- d
- s语法3
- a`#cal -y 2022`
- s-y表示年
- s输出一整年的日历
- d
- s-s是周日显示第一天
- s-m是周一显示第一天
- d
## clear命令与ctrl+L快捷键
- a clear是用啦清空终端中已显示的结果
- s或者使用快捷键ctrl+l
- s严格的说不说清除而是整体往上放假装清空的效果
- d
## 管道(重要)
- a管道符:|
- s作用
- a可以用于过滤、特殊的用法、扩展的用法
- d
- s语法
- a管道不能单独使用,必须要配合以前的指令一起使用,作用就是为了辅助
- d
- s过滤案例
- a通过管道查询出根目录下的所有包含y的字母文档
- s `#ls /|grep y`
- s /|grep用于过滤的关键字
- d
- 特殊用法案例
- d
# 高级指令
## hostname命令
- a操作服务器名(读取)
- s语法
- a语法1
- a`#hostname`
- s输出完整的主机名
- d
- s语法2
- a`#hostname -f`
- s输出当前主机名中的FQDN(全限定域名)
- d
- d
- d
## id命令
- a用于查看用户的一些基本信息
- a用户id
- s用户组id
- s附加组id
- d
- s该指令不指定用户则默认当前用户
- s语法
- a语法1
- a #id 默认显示当前执行该命令的用户基本信息
- d
- s语法2#id 用户名
- a显示指定用户的基本的信息
- d
- d
- d
## whoami命令
- a显示当前登录的用户
- s一般用于shell脚本
- d
## ps -ef命令(重点)
- a用于查看服务器进程相关信息
- s选项
- a -e表示列出全部的进程
- s -f显示全部的列(显示全字段)
- d
- s显示结果
- a UID用户ID
- s PID进程ID
- a如果一个程序的父级进程找不到,那么该程序的进程称之为僵尸进程
- d
- s PPID表示该进程父级进程ID
- s C表示CPU的占用率
- s STIME该进程的执行时间
- s TTY是终端设备
- a如果是问号就说明不是由终端发起的
- d
- s CMD进程对应的名称或者对应的路径
- d
- s案例
- a案例1
- a百分百使用的命令
- s在ps的结果中过滤出想要查看的进程状态
- `ps -ef| grep gnome-panel`
- d
- d
- d
## top命令
- a主要是查看服务器进程所占资源
- a语法
- a `#top`
- d
- s实时动态的显示
- a退出按下Q键即可退出
- d
- s表头
- a USER:该进程对应的用户
- s PR:优先级
- s VIRT:虚拟内存
- a申请了500M
- s实际只使用了300
- s此时虚拟内存就是500M
- d
- s RES:常驻内存
- a申请500M
- s实际只使用了300M
- s此时常驻内存300M
- d
- s SHR:共享内存
- a自己运行对其它应用有所依赖
- d
- s S表示进行的状态(S表示睡眠的状态,R表示运行)
- s %cpu表示CPU的占用百分比
- s %MEM表示内存的占用百分比
- s TIM+表示执行的时间
- s COMMAND表示进程的名称或者路径
- d
- s快捷键
- a在执行top指令之后的快捷键
- s 大写的M键按照内存排名
- s 大写的P键按照CPU排名
- s 1也是快捷键是用来显示所有的CPU的
- d
- d