目录
一、虚拟机的状态
1.关机:虚拟机不再运行,关闭系统。如果需要使用Linux系统,就要开机,开机需要启动时间
2.挂起:(常用)虚拟机暂停在某个状态,可以快速恢复到暂停状态,节省了开机启动的时间。
两种状态下,xshell均无法连接
二、mkdir深入
只有同时新建多个文件夹时使用花括号{},若只有一个文件夹的情况下使用花括号{},花括号{}会变成文件名
【示例】
-p :选项,一次性创建所有文件夹(目录)
[root@192 lianxi]# mkdir -p /wulin/{wudang/{zhangsanfeng},huashan/linghuchong,shaolin/xuzhu,mingjiao/{zhangwuji,chenyouliang}}
[root@192 lianxi]# tree /wulin
/wulin
├── huashan
│ └── linghuchong
├── mingjiao
│ ├── chenyouliang
│ └── zhangwuji
├── shaolin
│ └── xuzhu
└── wudang
└── {zhangsanfeng}
9 directories, 0 files
[root@192 lianxi]#
三、【小知识】为什么服务器喜欢安装的时候使用CLI界面
3.1 基础知识
CLI :command line interface 命令行界面 ==》专业的Linux学习方法==》服务器
GUI :graphic user interface 用户图形界面 ==》用于办公电脑==》Ubuntu
3.2【缘由(答案)】
资源消耗:cpu的使用
内存的使用
CLI:系统消耗更加少的cpu和内存==》安装好的==》服务器“省吃俭用给用户提供更好的服务
GUI:运行时需要开启更多的程序,消耗的cpu和内存更多
3.3具体示例
Windows xp、win7、win10 ==》系统的升级对硬件要求越来越高
手机越用越卡==(因为)==》背后的程序越来越大,功能越来越多,需要有更好的cpu和更大的内存
【拓展】安迪比尔原则
安迪-比尔定理:安迪-比尔定理 (Andy and Bill's Law)是对IT产业中软件和硬件升级换代关系的一个概括。原话是 "Andy gives, Bill takes away.(安迪提供什么,比尔拿走什么。)" 安迪指英特尔前CEO安迪·格鲁夫,比尔指微软前任CEO比尔·盖茨,这句话的意思是,硬件提高的性能,很快被软件消耗掉了。
四、主提示符
4.1 PS1
PS1 即为 prompt symbol 1 第一提示符,是Linux预定义的变量
预定义:操作系统提前(预先)定义好的,不需要使用者再去定义的
自定义:自己定义
[root@192 ~]# set|grep PS1
PS1='[\u@\h \W]\$ '
[root@192 ~]# echo $PS1
[\u@\h \W]\$
[\u@\h \W]\$
[ ]只是符号,没有特殊含义,只是看起来在一个范围
- \u 表示引用我们当前登录linux的用户名 user
- @ 只是分割符号
- \h 表示引用我们的Linux系统的主机名 hostname
- \w 表示当前所在的路径的文件夹的名字 working 工作目录=当前目录
- \$ 表示用户的提示符是#还是使用$
如果是root 就使用# 如果是普通用户就使用$
- \t 表示引用当前Linux系统里的时间 time
[root@192 ~]# PS1='[\h@\u \W]\$' 修改PS1的值,立即生效
[192@root ~]#
[192@root ~]#PS1='[\h@\u@\t \W]\$'
[192@root@17:17:37 ~]#
【注】修改变量时,最好使用单引号
【拓展】如何知道PS1的内容?
man bash #查看bash命令的手册(使用指南、使用说明书)
bash是一个终端程序的名字,我们输入命令ls,bash会帮我们去执行,执行完成后会将结果显示给我们。
面向最终的用户,相当于最后的末端,下面没有东西。
面向最终用户的端口==>接口(界面)==>人
进程:正在进行的程序
人==>命令==>bash==>查找命令并执行==>Linux内核
【man bash 的使用】
1.输入/PS1 即为查找PS1字符串
2.按n 表示下一个
按N 表示上一个 | next
3.按q退出 quit
4.按回车,是逐行向下走
4.2 echo
是Linux里输出内容的命令,类似于python里的print,c语言里的printf
[root@192 ~]# echo "hello,world"
hello,world
4.3 Linux里的shell编程(bash)定义变量:
[root@192 ~]# sg="lihua"
[root@192 ~]# mn="xiaoyan"
[root@192 ~]# echo $mn
xiaohong
- sg 为变量名
- = 赋值符号❗左右不能空格
- "lihua" 为字符串,字符串习惯用双引号或单引号括起来,赋值内容无空格时可不加引号,有空格时必加引号
- $ 接变量名即为引用这个变量的值
- 后面的赋值会替换前面的赋值
4.4 新建用户
4.4.1 新建用户
useradd lihua新建普通用户 lihua
passwd lihua 给用户lihua设置密码(密码不可见)(提示密码太简单时,再输入一次相同的密码即可)
[root@192 ~]# useradd lihua
[root@192 ~]# passwd lihua
更改用户 lihua 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@192 ~]#
4.4.2 使用新建用户登录
【Linux是一个多用户多任务的操作系统:可以多人同时登录,同时操作】
1.使用ip add查看ip地址
2.在xshell里新建连接,登录lihua
3.exit 注销用户。关闭用户开启的所有程序,不会关闭系统。
4.4.3 切换用户
- su 切换用户
- - 是一个选项:使用lihua的环境变量,不使用上一个用户的变量
[root@192 ~]# su - lihua
上一次登录:五 1月 28 20:39:52 CST 2022从 192.168.255.1pts/1 上
[lihua@192 ~]$
- 普通用户进入系统后,也可以使用很多命令
[lihua@192 ~]$ mkdir li
[lihua@192 ~]$ ls
li
[lihua@192 ~]$ ip add
- 使用exit登出
[lihua@192 ~]$ exit
登出
[root@192 ~]#
- 也可从普通用户登录到root,但是会是一个新的root用户,用户之间并无关联
可以类比于浏览器打开多个窗口,窗口之间并无关联
4.5 [root@localhost ~]#
- root 表示当前登录的用户是root用户,root用户是Linux里的超级管理员
- @ 只是一个符号,起到分割符的作用,隔开2个信息
- localhost 表示当前Linux系统的主机名
- ~ 表示当前我们所在的位置是用户的家目录 ~等于家目录
家目录:用户登录Linux系统就会进入的文件夹,这个文件夹就是这个用户的家目录
root用户的家目录在/root
普通用户的家目录在/home目录下 与用户名同名
【示例:普通用户的家目录】
[lihua@192 ~]$ pwd
/home/lihua
[lihua@192 ~]$ cd /
[lihua@192 /]$ cd home
[lihua@192 home]$ ls
lihua
[lihua@192 home]$ cd lihua/
[lihua@192 ~]$
4.6 简单了解内核(kernel)
Linux操作系统=内核+其他的软件
内核(kernel):是Linux内部最核心的软件,是linus(利纳斯)用c语言编写。
1.对cpu进行管理
2.对内存进行分配管理
3.对文件系统进行管理
4.对进程进行管理
5.对其他的硬件进行管理
4.7 主机名
4.7.1 查看主机名
[root@192 ~]# hostname
192
4.7.2 修改主机名(临时,重启系统后失效)
【注】修改主机名需要切换用户,查看新的效果;或重新连接到Linux系统也可以
[root@192 ~]# hostname localhost 临时修改主机名为localhost
[root@192 ~]# su - root 切换用户到root
上一次登录:日 2月 6 20:19:48 CST 2022pts/0 上
[root@localhost ~]# hostname
localhost
五、拓展知识
5.1 文件的后缀名问题
touch 新建空文件
一般新建文件时会加上后缀名,便于区分,但也可不加
file + 文件名 查看文件类型
[root@localhost ~]# ls
anaconda-ks.cfg lianxi lihua
[root@localhost ~]# file lihua
lihua: empty 空文件
[root@localhost ~]# file lianxi/
lianxi/: directory 文件夹/目录
[root@localhost ~]# file anaconda-ks.cfg
anaconda-ks.cfg: ASCII text 文本文件,里面有内容(空文件加入内容)
[root@localhost ~]# \ls 取消ls查看文件夹内容时显示不同的颜色
anaconda-ks.cfg lianxi lihua
5.2 家目录( ~ )和根目录( / )的区别
linux系统:树目录结构==>倒立的树
1.根目录包含root用户的家目录,root用户的家目录(root)在根目录下
注:不要混淆root用户的家目录和根目录
2.普通用户的家目录(在home文件夹下,和用户名同名)
六、shell脚本
shell脚本文件:是一个文件,里面有很多的Linux命令,并且运行这个文件,会执行这个文件里的所有命令
脚本:按照人的意愿去实现一系列功能的程序。里面有Linux命令。
6.1【示例】
编写:新建10个用户并且设置密码lihua123
使用:vim编辑器去写
需求分析:
新建用户==》useradd
li1 li2 .. li10
for循环
设置密码==》passwd
第一步:设置脚本名字 create_user.sh (.sh的文件是shell脚本)
第二步:创建新脚本 vim create_user.sh
第三步:执行脚本 bash create_user.sh
[root@localhost lianxi]# vim create_user.sh
[root@localhost lianxi]# cat create_user.sh
for i in {1..10}
do
#新建用户
useradd li$i
#给用户设置密码为lihua123,利用管道符号|
echo lihua123|passwd li$i --stdin
done
[root@localhost lianxi]# ls
create_user.sh
[root@localhost lianxi]# bash create_user.sh
更改用户 li1 的密码 。
passwd:所有的身份验证令牌已经成功更新。
更改用户 li2 的密码 。
passwd:所有的身份验证令牌已经成功更新。
更改用户 li3 的密码 。
passwd:所有的身份验证令牌已经成功更新。
更改用户 li4 的密码 。
passwd:所有的身份验证令牌已经成功更新。
更改用户 li5 的密码 。
passwd:所有的身份验证令牌已经成功更新。
更改用户 li6 的密码 。
passwd:所有的身份验证令牌已经成功更新。
更改用户 li7 的密码 。
passwd:所有的身份验证令牌已经成功更新。
更改用户 li8 的密码 。
passwd:所有的身份验证令牌已经成功更新。
更改用户 li9 的密码 。
passwd:所有的身份验证令牌已经成功更新。
更改用户 li10 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@localhost lianxi]# id li1
uid=1001(li1) gid=1001(li1) 组=1001(li1)
[root@localhost lianxi]# id li10
uid=1010(li10) gid=1010(li10) 组=1010(li10)
6.1.1 for循环的语法结构
for i in {1..10}
do
命令
done
- for 是固定的命令
- i 为变量名
- in 是固定语句
- {1..10} 表示从1到10的集合 1,2,3,4,5,6,7,8,9,10
- {10..100} 表示从10到100的集合
【注】花括号内部不能空格,点两个点
- do和done是固定语法
do
命令
done