虚拟机的状态-mkdir-主提示符-PS1-shell脚本

目录

一、虚拟机的状态

二、mkdir深入

三、【小知识】为什么服务器喜欢安装的时候使用CLI界面

        3.1 基础知识

        3.2【缘由(答案)】

        3.3具体示例

        【拓展】安迪比尔原则

四、主提示符

         4.1 PS1

        【拓展】如何知道PS1的内容?

        【man bash 的使用】

        4.2 echo

        4.3 Linux里的shell编程(bash)定义变量:

        4.4 新建用户

        4.4.1 新建用户

        4.4.2 使用新建用户登录

        4.4.3 切换用户

        4.5 [root@localhost ~]#

        4.6 简单了解内核(kernel)

        4.7 主机名

        4.7.1 查看主机名

        4.7.2 修改主机名(临时,重启系统后失效)

五、拓展知识

        5.1 文件的后缀名问题

        5.2 家目录( ~ )和根目录( / )的区别

六、shell脚本

        6.1【示例】

        6.1.1 for循环的语法结构


一、虚拟机的状态

1.关机:虚拟机不再运行,关闭系统。如果需要使用Linux系统,就要开机,开机需要启动时间

2.挂起:(常用)虚拟机暂停在某个状态,可以快速恢复到暂停状态,节省了开机启动的时间。

两种状态下,xshell均无法连接

二、mkdir深入

只有同时新建多个文件夹时使用花括号{},若只有一个文件夹的情况下使用花括号{},花括号{}会变成文件名

【示例】

虚拟机的状态-mkdir-主提示符-PS1-shell脚本

 

-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比尔·盖茨,这句话的意思是,硬件提高的性能,很快被软件消耗掉了。

四、主提示符

虚拟机的状态-mkdir-主提示符-PS1-shell脚本

         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用户,用户之间并无关联

        可以类比于浏览器打开多个窗口,窗口之间并无关联

虚拟机的状态-mkdir-主提示符-PS1-shell脚本

 

        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 家目录( ~ )和根目录( / )的区别

虚拟机的状态-mkdir-主提示符-PS1-shell脚本

 

        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

上一篇:linux+ubuntu


下一篇:C++单例模式