Linux系统介绍
# 概述/由来
作者(林纳斯·托瓦兹)在1991年搞出来的.
# 吉祥物
企鹅
# 特点
开源, 免费, 安全, 稳定
# Linux的发行版
发行版 = Linux内核(林纳斯团队维护) + 系统库 + 系统软件
#常用的发行版
Ubantu: 乌班图, 比较适合小白, 界面功能比较强大.
RedHat: IBM公司的产品, 商业版, 功能强大.
CentOS: RedHat的"阉割版", 能满足绝大多数的需求.
国内: 中标麒麟, 红旗
Linux的目录介绍
# Linux的目录介绍
Linux的目录是1个 树形结构, 有且只能有1个根目录, 用 / 表示.
例如: /root
# Linux根目录下的常用的: 文件夹(目录)
/root 超级管理员root账号所在目录.
/home 普通用户账号信息, 存储在这里.
/bin 放的是一些可执行文件(脚本, 命令)
/sbin 放的也是一些可执行文件(脚本, 命令), 操作多个的.
/etc 放配置文件的.
Linux命令格式介绍
# Linux的命令格式
command [options] [parameter]
# 格式解释
command 表示Linux的命令, 必须写.
options 可选项, 表示命令对应的选项.
parameter 可选项, 表示参数.
# 例如:
ls -l / # ls是命令, -l是选项, /是参数, 表示查看: 根目录下所有内容, 以行的方式查看.
Linux的常用命令
# ls命令, 来源于单词: list, 用于查看指定目录下所有的内容(子级)
# 格式: ls [-a -l -h] [指定路径]
ls # 表示查看当前目录下的内容.
ls / # 查看根目录的内容(子级)
ls -a # 显示当前目录下所有文件, 包括隐藏的.
ls -l # 以行的方式展示当前目录下的内容, 扩展写法: ll
ls -h # 没有任何效果, 一般结合 ls -lh一起使用,
ls -lh # 以行, 且人性化的方式展示数据.
ls -alh / # 查看根目录下, 所有的子级, 以行, 且人性化的方式展示所有(包括隐藏)内容.
# pwd命令, 查看当前目录, 来源于单词: print work directory
pwd
# cd命令, 来源于 change directory, 改变目录的意思.
cd [Linux目录]
cd ~ # 回家, root账号的家是/root, 其它用户的家是 /home, ~可以省略不写
cd # 效果同上.
cd .. # 返回上一级
cd ../../ # 返回上上一级
./ # 代表当前路径
cd - # 在最近操作过的两个目录之间做 切换.
# 绝对路径和相对路径介绍
绝对路径: 固定的, 写死的路径, 以 /(根目录) 开头.
相对路径: 一般是相对于 ./(当前路径)来讲的.
# mkdir命令, 来源于: make directory, 制作目录, 创建文件夹.
# 格式: mkdir [-p] [linux路径]
mkdir aa # 在当前路径下, 创建aa目录
mkdir /aa # 在根目录下创建aa文件夹
mkdir aa/bb/cc # 假设aa,bb,cc都不存在, 则: 报错, mkdir只能创建单级目录.
# aa,bb都存在, 我们就把cc创建出来.
mkdir -p /aa/bb/cc # 创建多级目录, aa,bb,cc都不存在也可以.
# touch, 创建文件的.
touch 1.txt # 创建单个文件
touch 2.txt 3.avi 4.mp3 # 创建多个文件
cat 文件名 # 查看文件中所有内容.
more 文件名 # 翻页查看
# cp, 来源于: copy, 表示拷贝, 相当于: 赋值.
# 格式; cp [-r] 路径1 路径2
cp -r aa/ /bb # 把aa文件夹及其子级 拷贝到 bb文件夹中. -r表示递归(recursive)
# mv, 来源于: move, 表示剪切.
# 格式: mv [-r] 路径1 路径2
mv 1.txt /aa/1.txt
# rm, 来源于: remove, 表示删除.
# 格式: rm [-r -f] 目标文件或者目录 recursive(递归), force(强制)
rm -rf 要删除的目录或者文件
# which命令, 用于查找 Linux命令所在的目录的.
# 例如
which pwd
which ls
# find命令, 用于根据条件进行查找指定内容的.
# 格式: find Linux路径 -name '根据文件名查找'
find / -name '*centos*'
# grep 筛选命令
# 格式: grep 路径 -name '筛选内容'
# 格式: grep 路径 -size +-n[KMG]
grep / -name '*centos*'
grep / -size +100M
# | 管道命令, 把前边的结果, 当做后边的数据源来处理.
cat 1.txt | grep 'itheima'
# 格式: find Linux路径 -size +-n[KMG]
find / -size +100M
# echo命令, 类似于Python的print(), 输出结果到控制台.
echo 'hello world' # 引号可以不写, 建议写上.
# ``反引号, 可以用于包裹Linux命令.
echo 'pwd' # pwd
echo pwd # pwd
echo `pwd` # pwd命令的执行结果.
# 重定向
> # 表示覆盖
>> # 表示追加
# 查看文件末尾的内容.
tail -100f 文件路径 # 动态监控文件的末尾的100行数据, 实际开发中, 一般用于查看日志.
tail -10 文件路径 # 查看文件最后10行, 不是动态查看.
# 扩展: head, 查看文件前n行.
head -n 数字 文件路径
vi编辑命令
# 命令模式(vim 文件路径就会进入到该模式)
i # 当前位置插入
o # 向下插入一行
dd # 删除当前行
ndd # 快速向下删除n行
yy # 复制当前行
nyy # 快速向下复制n行
p # 粘贴
gg # 回到文件顶部
G # 回到文件末尾
/ # 查找
u # 撤销
ctrl + r # 反撤销.
esc # 回到命令模式
# 输入模式
正常写即可, 就是编辑模式
# 底线模式
:q # 退出不保存
:q! # 强制退出, 不保存
:wq # 保存并退出
:wq! # 强制保存并退出
:set nu # 设置行号
:set nonu # 取消行号
:数字 # 跳到指定的行
:noh # 取消高亮
创建普通用户
# 创建普通用户
useradd -m 用户名 # -m表示引用root账号的配置信息
passwd 用户名 # 设置密码
# 切换用户
su 用户名 # 细节: root可以直接切其它用户, 无需密码 其它用户切root,要(root的)密码
# 普通用户借调权限
sudo 正常写Linux命令 # 细节: 需要通过root账户给该账号先配置, sudo认证.
# 配置sudo认证
vim /etc/sudoers # 细节: 用root账号配置
用户组相关
用户组
# 创建用户组
groupadd [-g 组的编号] 用户组名
# 删除用户组
groupdel 用户组名 # 如果组是跟随账号同步创建的, 则删除账号的时候会同步删除该组.
# 查看所有的用户组
getent group # 组格式: zhangsan:x:1000: 组名:密码(无,x):组的编号(id)
用户
# 创建普通用户
useradd -m -g 组的编号 用户名 # -m表示引用root账号的配置信息, -g是指定该用户所在的组
# 如果不指定分组, 则会创建1个和该账号名一模一样的组.
passwd 用户名 # 设置密码
# 删除用户
userdel -r 用户名 # -r 表示把 /home目录下的 (该账号的)文件夹也同步删除掉.
# 查看用户信息
id 用户名
# 例如: wangwu:x:1002:2000::/home/wangwu:/bin/bash
# 解释: 用户名:密码(无,x):用户id:组id:描述信息(空):该账号的家目录:默认使用的shell解析器
# 修改用户的组
usermod -aG 组信息 用户名 # append group
用户权限相关
# 修改权限, 格式: chmod [-R] 权限 要修改权限的文件或者目录
chmod u=rx, g=wx, o=r 1.txt
chmod +x 1.txt
chmod 655 1.txt
chmod -R 777 aa # aa是目录
# 修改属主, 属组.
chown [-R] [用户][:][用户组]
chown zhangsan hello.txt # 改变所属 用户
chown :itheima hello.txt # 改变所属 用户组
chown lisi:itcast hello.txt # 改变属主, 属组
# 总结
chmod 777 文件或者目录的路径
Linux的常见快捷键
# 终止执行
ctrl + c
# 登出, 退出.
ctrl + d
# 查看历史命令
history
# 重新执行某个历史命令
!命令的编号
# 定位到行首
ctrl + a
# 定位到行尾
ctrl + e
# 往前1个单词
ctrl + ←
# 往后1个单词
ctrl + →
# 清屏
clear 或者 ctrl + 字母L
Linux系统安装软件的方式
# 方式1: yum方式, 全称: Yellow dog Updater, Modified
特点:
1. 会自动联网下载包.
2. 会自动解决包之间的依赖关系.
3. 前提: 你的宿主机 和 虚拟机都要联网.
格式:
yum [-y] install | remove | search 安装包的名字
例如:
yum -y install wget
yum -y remove wget
yum -y search wget
# 扩展: 理解即可.
# 方式2: rpm方式, 会自动下载包, 但是需要手动解决依赖.
# 全称: RedHat Packet Management(小红帽的包管理器)
# 例如: 安装MySQL软件.
# 方式3: 上传, 解压, 修改配置文件即可.
# 例如: 安装JDK.
systemctl-软件关闭开启相关命令
# 格式:
systemctl [start|stop|restart|status|disable|enable] 服务名
# 例如:
systemctl stop firewalld
systemctl disable firewalld
systemctl status firewalld
# 细节: 我的虚拟机刚才还好好的, 也没做啥, IP咋就变成 127.0.0.1了?
# 答案: 主网络服务介入了. 只要禁用主网络服务, 然后重启网络即可.
systemctl stop NetworkManager # 关闭主网络服务
systemctl disable NetworkManager # 关闭主网络服务
systemctl restart network # 重启(副)网络服务
ifconfig # 查看ip
软连接
# 软连接, 类似于 windows中的 快捷方式.
# 格式: ln -s 要被链接的文件或者目录路径 软连接名
# 例如:
ln -s /etc/sysconfig/network-scripts/ifcfg-ens33 ip
# 硬链接, 相当于备份文件. 提高容错率的.
# 格式: 同上, 没有-s, 即: ln 要被链接的文件或者目录路径 硬连接名
ln 1.txt 2.txt # 则2.txt的内容, 会随着1.txt的改变而同步改变.
ip地址相关
# 如何查看IP
ifconfig
# 查看主机名
hostname
# 修改主机名
vim /etc/hostname
# 修改ip
vim /etc/sysconfig/network-scripts/ifcfg-ens33
# 配置域名映射, 即: 以后就可以直接写英文了, 它会自动关联的IP.
windons系统: C:\Windows\System32\drivers\etc\hosts
Linux系统: /etc/hosts
# 配置映射的代码如下
192.168.88.161 node1.itcast.cn node1
# 细节, 配置后: 重启电脑有效.
网络相关
# ping命令, 测试网络连接的.
ping [-c n] 要测试的主机域名
# wget命令, 可以根据URL下载其对应的资源
wget http连接地址
# curl命令, 以模拟浏览器,向域名发送请求, 获取数据.
# 端口号相关命令, 端口号: 程序在设备上的唯一标识.
范围: 0 ~ 65535, 其中 0 ~ 1023不要用, 已经被占用或者用作保留端口.
netstat -anp | grep 要查看的具体端口号. # all network port
# 例如:
netstat -anp | grep 3306
进程相关
# 进程: 可执行程序, 文件.
# 格式:
ps -ef # 查看本机所有的进程.
ps -ef | grep 进程名 # 查看本机指定的进程
kill -9 进程的自身id # 强制关闭某些进程.
环境变量的作用
# Linux系统的环境变量
记录这Linux系统运行时的一些核心信息.
# 如何查看Linux的变量
env # 来源于: environment 单词
# 如何查看环境变量
env | grep PATH
或者 cat /etc/profile
# 如何设置环境变量
export 变量名=变量值 # 临时设置
vim /etc/profile # 永久设置, 细节: 设置后记得 source /etc/profile刷新下, 立即生效.
# 为啥要配置环境变量? 目的:
配置好的环境变量, 在任意的路径下都能使用,
例如: /usr/bin, /usr/sbin下的cd, ls, ifconfig 等命令在任意的路径下都能使用.
# 如何定义Linux的变量?
变量名=变量值
# 例如: name='zhangsan'
# 如何打印变量值
echo ${变量名} # 细节: 如果变量名是单独用的, 可以省略大括号.
上传和下载
# 1. 需要先安装插件.
yum -y install lrzsz
# 2. 上传
rz 然后选择要上传的文件
或者 直接拖拽, 注意乱码问题.
# 3. 下载
sz 要下载的文件名(路径)
压缩和解压缩
# 掌握 tarball 命令
# 格式: tar [-c -v -x -f -z -C] 参数1 参数2...
# 格式解释:
-c # create, 创建, 压缩
-v # verbose, 显示(压缩/解压)过程
-x # 解压缩
-z # 打成 *.tar.gz包, 不过不写就是 *.tar包
-f # file, 文件的意思.
-C # 指定解压位置, 即: 解压到哪里.
# 例如: 把1.txt, 2.txt, 3.txt打成压缩包
cd /root/mytest
tar -cvf my1.tar 1.txt 2.txt 3.txt # tar包
tar -zcvf my2.tar.gz 1.txt 2.txt 3.txt # tar.gz包
# 解压缩
tar -xvf my1.tar # tar包, 解压到当前位置.
tar -zxvf my2.tar.gz -C /root # tar.gz, 解压到指定目录, 这里是 /root