黑马程序员新版Linux零基础快速入门到精通

239 阅读12分钟

1.Linux目录结构

Linux的目录结构是一个树形结构,只有一个根目录/。
删库跑路大法:rm -rf /

2.Linux命令入门

1. 命令行:即Linux终端,是一种命令提示符页面。
2. 命令:即Linux程序。命令没有图形化页面,可以在命令行提供字符化的反馈
3. Linux命令基础格式:
  • 语法:command [-options] [parameter]
    • command:命令本身
    • -options:[可选]命令的一些选项,可以通过选项控制命令的行为细节
    • parameter:[可选]命令的参数,多数用于命令的指向目标等
  1. 示例:ls -l /home/itheima,意思是以列表的形式,显示/home/itheima目录内的内容
4.ls命令
  • 语法细节:ls [-a -l -h] [Linux路径],其中-h表示易于阅读的形式,列出文件大小(带单位K,M,G),并且必须配合-l一起使用
  • 当直接使用ls命令本身,表示:以平铺形式,列出当前工作目录下的内容
5.pwd命令:Print Work Directory,打印当前工作目录
6.mkdir命令:Make Directory,创建目录
  • 语法:mkdir [-p] Linux路径
    • 参数必选,表示Linux路径
    • -p选项可选,表示自动创建不存在的父目录,适用于创建连续多层级的目录
7.文件操作命令
  1. touch命令:创建文件
  2. cat命令:直接显示全部文件内容
  3. more命令:支持翻页的查看文件内容,按空格翻页,按q退出
  4. vim命令:编辑文件内容
  • 使用: vim test.txt,编辑一个新文件,执行后进入命令模式
  • 在命令模式内,按键盘i,进入输入模式
  • 输入完成后,按esc回退到命令模式
  • 在命令模式下,按键盘:,进入底线命令模式
  • 在底线命令模式下输入wq,保存文件并退出vi编辑器
  1. cp命令:复制文件、文件夹
  • 语法cp [-r] 参数1 参数2
    • -r选项,可选,用于复制文件夹使用,表示递归
    • 参数1,表示Linux路径,表示被复制的文件或文件夹
    • 参数2,表示Linux路径,表示要复制去的地方
  1. mv命令:移动文件、文件夹
  2. rm命令:删除文件、文件夹
  • 语法rm [-r -f] 参数1 参数2 ... 参数N
    • 同cp命令一样,-r用于删除文件夹
    • -f表示force,强制删除
    • 参数1、参数2、...、参数N表示要删除的文件或文件夹路径,按空格隔开
    • rm命令支持通配符*,用于模糊匹配,其中test*,表示匹配任何以test开头的内容;*test*,表示任何包含test的内容;*test,表示任何以test结尾的内容。
  1. which命令:查看所使用的命令的程序文件的存放路径
  2. find命令:搜索指定的文件
  • 语法1:find 起始路径 -name "被查找文件名",表示按文件名查找
  • 语法2find 起始路径 -size +|-n[kMG],表示按文件大小查找
  • find命令支持通配符*,用于模糊匹配。
  1. grep命令:从文件中通过关键字过滤文件行
  • 语法grep [-n] 关键字 文件路径
    • 选项-n,可选,表示结果中显示匹配的行的行号
    • 参数,关键字,必填,表示过滤的关键字,带有空格或其他特殊符号,建议使用" "将关键字包围起来
    • 参数,文件路径,必填,表示要过滤的文件路径,可作为内容输入端口
  1. wc命令:统计文件的行数、单词数量等
  • 语法wc [-c -m -l -w] 文件路径
    • -c,统计bytes数量
    • -m,统计字符数量
    • -l,统计行数
    • -w,统计单词数量
    • 文件路径,被统计的文件,可作为内容输入端口
  1. 管道符"|":将管道符左边命令的结果,作为右边命令的输入
  • 示例:cat test.txt | grep "张文祥 | wc -m"
  1. echo命令:输出指定内容
  • 输出某个命令的执行结果,而不是把命令当作字符串输出,用反引号括住
  • 重定向符>,将左侧命令的结果,覆盖写入到符号右侧指定的文件中,each "张文祥" > test.txt
  • 重定向符>>,将左侧命令的结果,追加写入符号右侧指定的文件中,each "张文祥" >> test.txt
  1. tail命令:查看文件尾部内容,跟踪文件的最新更改
  • 语法:tail [-f -num] Linux路径
    • 选项,-f,表示持续跟踪,通过ctrl+c停止跟踪
    • 选项,-num,表示查看尾部多少行,不填默认10行
    • Linux路径:表示被跟踪的文件路径

3.用户权限控制

1.用户组管理
  1. 创建用户组:groupadd 用户组名
  2. 删除用户组:groupdel 用户组名
2.用户管理
  1. 创建用户:useradd [-g -d] 用户名
  • -g指定用户的组,不指定-g,会创建同名组并自动加入,指定-g需要组已经存在。如已存在同名组,必须使用-g
  • -d指定用户HOME路径,不指定,HOME目录默认在:/home/用户名
  1. 删除用户:userdel [-r] 用户名
  • -r,删除用户的HOME目录,不使用-r,删除用户对,HOME目录保留
  1. 查看用户所在组:id [用户名]
  2. 修改用户所属组:usermod -aG 用户组 用户名
  3. 查看当前系统中有哪些用户:getent passwd
  4. 查看当前系统中有哪些用户组:getent group
3.查看权限信息

认知权限信息.png

  • r表示读权限
  • w表示写权限
  • x表示执行权限
4.修改权限控制
  1. chmod命令:修改文件、文件夹的权限信息
  • 语法:chmod [-R] 权限 文件或文件夹
    • -R,表示对文件夹内的全部内容应用同样的操作
    • 示例:chmod -R u=rwx,g=rx,o=x test
  1. chown命令:修改文件、文件夹的所属用户和用户组
  • 语法:chown [-R] [用户] [:] [用户组] 文件或文件夹
    • -R,表示对文件夹内的全部内容应用同样的操作
    • 用户,修改所属用户
    • :,用于分割用户和用户组
    • 用户组,修改所属用户组
    • 示例:chown :root test.txt,将test.txt所属用户组修改为root

4.Linux使用操作的相关技巧

1.各类快捷键
  1. ctrl+c:强制停止
  2. ctrl+d:退出或登出
  3. history:查看历史输入过的命令
  4. ctrl+a,跳到命令开头
  5. ctrl+e,跳到命令结尾
  6. ctrl+键盘左键,向左跳一个单词
  7. ctrl+键盘右键,向右跳一个单词
  8. ctrl+l或者clear,可以清空终端内容
2.软件安装
  1. yum命令:RPM包软件管理器,用于自动化安装配置Linux软件,并可以自动解决依赖问题
  • 语法:yum [-y] [install | remove | search] 软件名称
    • -y,表示自动确认,无需手动确认安装或卸载过程
3.systemctl控制软件启动关闭
  1. systemctl命令:控制软件的启动、停止、开机自启
  • 语法:systemctl start | stop | status | enable | disable 服务名
    • status,表示查看状态
    • enable,表示开启开机自启动
    • disable,表示关闭开机自启动
  1. 系统内置的服务
  • NetworkManager,主网络服务
  • network,副网络服务
  • firewalld,防火墙服务
  • sshd,ssh服务
4.软链接(=>)
  1. ln命令:在系统中创建软链接,可以将文件、文件夹链接到其他位置,类似Windows系统中的快捷方式
  • 语法:ln -s 参数1 参数2
    • -s,创建软链接
    • 参数1,被链接的文件或文件夹
    • 参数2,要链接去的目的地
5.日期
  1. date命令:查看系统的时间
  • 语法date [-d] [+格式化字符串]
    • -d,按照给定的字符串显示日期,一般用于日期计算
    • 格式化字符串,通过特定的字符串标记,来控制显示的日期格式
    • 示例1:date "+%Y-%m-%d %H:%M:%S"
    • 示例2:date -d "+1 day" +%Y-%m-%d
  1. ntp程序:自动校准系统时间
6.IP地址和主机名
  1. ifconfig命令:查看本机的ip地址
  2. 特殊ip地址
  • 127.0.0.1,指代本机
  • 0.0.0.0,可以用于指代本机,可以在端口绑定中用来确定绑定关系,可以在一些IP地址限制中,表示所有IP的意思。
  1. hostnamectl命令:修改主机名
  • 语法hostnamectl set-hostname centos
7.网络请求和下载
  1. ping命令:检查指定的网络服务器是否联通
  • 语法:ping [-c num] ip或主机名
    • -c,检查的次数,不使用-c选项,将无限次数持续检查
  1. wget命令:非交互式的文件下载器,可以在命令行内下载网络文件
  • 语法:wget [-b] url
    • -b,后台下载,会将日志写入到当前工作目录的wget-log文件
  1. curl命令:发送http网络请求,可用于下载文件、获取信息等
  • 语法:curl [-O] url
    • -O,用于下载文件,当url是下载链接时,可以通过此选项保存文件
    • url,发起请求的网络地址
8.端口
  1. 虚拟端口:计算机内部的端口,是不可见的,是用来操作系统和外部进行交互使用的
  • 计算机程序之间的通信,通过IP只能锁定计算机,但是无法锁定具体的程序
  • 通过端口可以锁定计算机上具体的程序,确保程序之间进行沟通
  • 公认端口:1~1023,通常用于一些系统内置或知名程序的预留使用,如SSH服务的22端口
  • 注册端口:1024~49151,通常可以随意使用,用于松散的绑定一些程序、服务
  • 动态端口:49152~65535,通常不会固定绑定程序,而是当程序对外进行网络连接时,用于临时使用
  • 查看指定IP的对外暴露端口:nmap 127.0.0.1
  • 查看指定端口的占用情况:netstat -anp | grep 端口号
9.进程管理
  1. 为管理运行的程序,每一个程序在运行的时候,便被操作系统注册为系统中的一个进程,并会为每个进程都分配一个独有的进程ID
  2. ps命令:查看Linux系统中的进程信息
  • 语法:ps [-e -f]
    • -e,显示出全部的进程
    • -f,以完全格式化的形式展示信息
  1. kill命令:关闭进程
  • 语法:kill [-9] 进程ID
    • -9,表示强制关闭进程。不使用此选项会向进程发送信号要求其关闭,但是是否关闭看进程自身的处理机制
10.主机状态监控
  1. top命令:查看CPU、内存使用情况,类似Windows的任务管理器,默认每5秒刷新一次
  2. df命令:查看磁盘的使用情况
  • 语法:df [-h]
    • -h,以更加人性化的单位显示
  1. iostat命令:查看CPU、磁盘的相关信息
  • 语法:iostat [-x] [num1] [num2]
    • -x,显示更多信息
    • num1,刷新间隔
    • num2,刷新次数
  1. sar命令:查看网络的相关统计
  • 语法:sar -n DEV num1 num2
    • -n,查看网络
    • DEV,表示查看网络接口
    • num1,刷新间隔
    • num2,刷新次数
11.环境变量
  1. 定义:环境变量是操作系统在运行的时候,记录的一些关键性信息,用以辅助系统运行
  2. env命令:查看当前系统中记录的环境变量
  3. $:取变量的值,取得环境变量的值可以通过:$ 环境变量名
  4. export命令:自行设置环境变量
  • 临时设置:语法export 变量名=变量值
  • 永久生效
    • 针对当前用户生效,配置在当前用户的:~/bashrc文件中
    • 针对所有用户生效,配置在系统的:/etc/profile文件中,并通过语法:source 配置文件,进行立刻生效,或重新登录
  1. 自定义环境变量PATH:将自己定义程序的路径添加到PATH中
  • 在当前HOME目录内创建文件夹myenv,在文件夹内创建文件mkhaha
  • 通过vim编辑器,在mkhaha文件内填入:echo 哈哈哈哈哈
  • 临时修改PATH:export PATH=$PATH:/home/zwx/myenv
  • 永久修改PATH:将export PATH=$PATH:/home/zwx/myenv填入用户环境变量文件或系统环境变量文件中
  • 执行mkhaha
12.Linux文件的上传和下载
  1. rz命令:上传文件
  2. sz命令:下载文件
  • 语法:sz 下载的文件名
13.压缩和解压
  1. Linux系统的常用压缩格式:tar、gzip、zip三种压缩格式
  2. tar命令:对.tar和.gz两种格式的文件进行解压缩
  • 语法:tar [-c -v -x -f -z -C] 参数1 参数2 ... 参数N
    • -c,创建压缩文件,用于压缩模式
    • -v,显示压缩、解压过程,用于查看进度
    • -x,解压模式
    • -f,要创建的文件,或要解压的文件,-f选项必须在所有选项中位置处于最后一个
    • -z,gzip模式,不使用-z就是普通的tarball格式
    • -C,选择解压的目的地,用于解压模式
  • 示例:tar -cvf test.tar 1.txt 2.txt 3.txt
  1. zip命令:压缩文件为zip压缩包
  • 语法:zip [-r] 参数1 参数2 ... 参数N
    • -r,被压缩的包含文件夹的时候,需要使用-r选项,表示递归
  • 示例:zip test.zip 1.txt 2.txt 3.txt
  1. unzip命令:解压zip压缩包
  • 语法:unzip [-d] 参数
    • -d,指定要解压去的位置
    • 参数,被解压的zip压缩包文件
  • 示例:unzip -d /home/zwx test.zip

5.在Linux上部署各类软件

1.在CentOS安装MySQL8.0
  1. 配置yum仓库
  • 更新密钥:rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
  • 安装Mysql8.0版本的yum库:rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-2.noarch.rpm
  1. 使用yum安装MySQL
  • yum -y install mysql-community-server
  1. 启动MySQL并配置开机自启动
  • systemctl start mysqld
  • systemctl enable mysqld
  1. 检查MySQL的运行状态
  • systemctl status mysqld
  1. 获取MySQL的初始密码
  • grep 'temporary password' /var/log/mysqld.log
  1. 登录MySQL数据库系统
  • mysql -uroot -p
  1. 修改root密码
  • ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码'; 密码要求:大于8位,有大写字母,有特殊字符
  1. 配置root的简单密码
  • set global validate_password.policy=0;
  • set global validate_password.length=4;
  1. 允许root远程登录
  • create user 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码';(第一次设置密码)
  • ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码';(后续修改密码)
  1. 退出MySQL控制台页面
  • exit或者ctrl+d
  1. 检查端口
  • netstat -anp | grep 3306