零基础学习者 Linux 在线实操测试

教程 青牛 ⋅ 于 2023-02-13 14:51:47 ⋅ 最后回复由 青牛 2023-02-16 14:15:38 ⋅ 2944 阅读

1 Linux 简介

  1. 狭义来说,Linux实际上指Linux kernel (内核)。内核负责管理硬件,并为上层应用提供接口。

  2. 而广义来说,是指以Linux kernel 为基础的,包括OS和各种应用在内的各个Linux版本。简单理解为类似于windows和mac OS一样的操作系统。

  3. Linux 内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。

    Linux之父:林纳斯·托瓦兹(Linus Torvalds)

file

1.1 Linux的特点

​ 开放性,多用户,多任务,可靠的系统安全,良好的可移植性,具有标准兼容性,良好的用户界面(命令界面,图形界面等),出色的速度性能。

​ 开发者操作的系统。

1、开源 linux内核免费开源
2、多用户 系统可以保证各用户之间的安全、隐私
3、多任务 同时开启多个应用程序
4、良好的界面 Linux同时具有字符界面(命令行)和图形化界面。
5、支持多平台 可以在多种硬件平台上安装和运行,如pc或服务器或嵌入式系统。

1.2 Linux 发行版本

​ 各个版本之间也只是大同小异,其差别往往体现在客户群、升级维护和界面等方面。

红帽系列

​ Red Hat Enterprise: (www.redhat.com) 这个是企业级的linux,主要面向服务器。作为商业版,有比较好的配套软件和技术支持。

​ Fedora: (http://fedoraproject.org) 由社区维护,去除了一些商业软件。红帽实际上赞助了这个项目,以便以此作为技术测试平台。

​ CentOS: (www.centos.org) 这个版本不来自红帽的公司,是收集红帽公开的源码组成的免费版本,由社区维护,和红帽完全兼容。

SUSE系列

​ SUSE Linux Enterprise: (www.suse.com) 和红帽商业版类似,德国的发行版本。

​ openSUSE: (www.opensuse.org) SUSE的免费版本。

Debian系列

​ Debian: (www.debian.org) 完全免费,社区维护的Linux版本,有很大的用户群,所以遇到问题,基本都可以找到社区用户的支持。

​ Ubuntu: (www.ubuntu.com) 由一个基金提供支持的免费Linux版本。 继承自Debian。界面很友好。

1.3 为什么要学linux

  1. linux 是公认的安全、高性能、稳定、内核开源的系统。
  2. 大数据阶段的所有组件都要安装和运行在装有linux系统的服务器中。
  3. 面试常问
  4. 程序员必备技能

2 在海牛实验室启动linux系统镜像

找到海牛实验室中linux的公用组件,咱们用的linux系统版本是centos7的版本。

实验室中为了方便各位操作,已提供了云主机,后续练习中需要几台linux服务器,直接选择公用的linux组件添加即可。

file

linux服务器的配置可以随着我们实验环境的丰富进行增加,作为最开始练习,我们可以给定一下资源

file

然后点击开始实验,并进入shell终端

file

3 和目录相关的命令

3.1与目录相关的命令

  1. pwd

    用于显示当前所在的完整路径

file

  1. mkdir

    用于创建一个目录。

    -p 该选项用于创建多级目录。

#在/opt目录下创建student目录
cd /opt
mkdir /opt/student
#在/opt目录下创建/aaa/bbb/ccc/ddd嵌套目录
mkdir aaa/bbb/ccc/ddd
  1. cd

用于切换目录 . 表示当前目录 .. 表示上级(父级)目录

#切换到root目录
cd /root
#切换到/opt/aaa/bbb/ccc
cd /opt/aaa/bbb/ccc
#/opt/aaa/bbb/ccc目录切换到/opt/aaa/bbb目录
cd ../ 或者 cd /opt/aaa/bbb
#切换到家目录
cd ~
  1. ls

    用于显示目录 \文件的信息

-a:显示所有的文件夹内容(包括隐藏)

-l:用于显示文件/夹的详细信息

-h:与-l配合使用,可以显示文件的体积大小(自适应单位b,k,m,g ...)

-d:跟上指定的目录时,就会显示该目录的信息,不会显示目录下的文件

#查看根路径下有哪些文件
ls /
#查看根路径下有哪些文件并显示详细信息
ls -l /  #简写成 ll
#查看根路径下文件详细信息并自适应显示文件的大小
ls -l -h / #简写成ls -lh /
#查看/root目录自身的信息
ls -l -d /root

4 第一个shell脚本

在root家目录下创建shell目录,在shell目录下创建一个hello.sh 文件,文件内容如下:

#! /bin/bash
# 输出hello world
echo "hello world!"

其中:

第一行:#! 开头,指定脚本的运行环境。

第二行:#开头,养成良好的注释习惯,这里一般说明脚本功能、作者、修改历史等等

echo ,把其参数传递给标准输出。

执行脚本需要 hello.sh 文件有执行权限,设置hello.sh 文件的执行权限

chmod a+x hello.sh

执行hello.sh文件脚本

# sh :即使没有执行权也可以执行
sh hello.sh

#路径方式:可以采用绝对路径或相对路径
#注意:拥有执行权才可以执行
./hello.sh
/root/shell/hello.sh

示例:

[root@localhost ~]# mkdir shell
[root@localhost ~]# cd shell
[root@localhost shell]# vim hello.sh
#! /bin/bash
# 输出hello world
echo "hello world!"
~                 
"hello.sh" [新] 3L, 52C 已写入                                                                       
[root@localhost shell]# ll
总用量 4
-rw-r--r--. 1 root root 52 8月  13 19:53 hello.sh
# 不加执行权也能运行
[root@localhost shell]# sh hello.sh
hello world!
# 目录方式必须加执行权
[root@localhost shell]# ./hello.sh
-bash: ./hello.sh: 权限不够
# 给所有用户组都加了执行权
[root@localhost shell]# chmod a+x hello.sh
# 相对路径运行
[root@localhost shell]# ./hello.sh
hello world!
[root@localhost shell]# pwd
/root/shell
# 绝对路径运行
[root@localhost shell]# /root/shell/hello.sh
hello world!

5 Shell脚本-变量

5.1 变量赋值和使用

#! /bin/bash
# 将一个变量赋给str
str="monday"
echo "today is: $str"
echo ${str}

其中:

1)变量名首字符必须为字母,名字只能用字母、数字、下滑线,不要用bash关键字。非法的名字:8var、var-8

2)变量定义或赋值时,变量名与值之间用等号连接:变量名=值,等号两边不能有空格,值中有空格或特殊字符需要用双引号或单引号引起来。

3)使用 $变量名 或 ${变量名} 形式获取变量值,这两种方式没有什么区别,但推荐用${}方式。

5.2 位置变量

想要给脚本中传递参数,在脚本中接收参数可以使用$1....$n的方式

示例:

[root@localhost shell]# vim s3.sh
#! /bin/bash
# $0:脚本的名称
echo \$0: $0
# $1:第1个入参
echo \$1: $1
# $4:第4个入参
echo \$4: $4
# $#:脚本入参个数
echo \$#: $#
# $*:所有参数组成一个字符串
echo \$*: $*
# $@:每个位置参数是一个字符串
echo \$@: $@
# $?:上个命令的返回值,0:执行成功;非0:执行失败
echo \$?: $?
# $$:当前进程id
echo \$$: $$
# 命令执行失败
cho "hehe"
# 返回非0
echo \$?: $?

执行结果:

file

6 Shell脚本-运算符

6.1 比较运算符

6.1.1 数字比较

运算符 说明 示例
-eq 等于 [ 1 -eq 1 ] && echo 'ok'
-ne 不等于 [ 1 -ne 2 ] && echo 'ok'
-lt 小于 [ 1 -lt 2 ] && echo 'ok'
-gt 大于 [ 1 -gt 0 ] && echo 'ok'
-le 小于等于 [ 1 -le 1 ] && echo 'ok'
-ge 大于等于 [ 1 -ge 1 ] && echo 'ok'

注意:

​ []内部写的时候,要用空格隔开。

[root@localhost shell]# [ 1 -eq 1 ] && echo 'ok'
ok
[root@localhost shell]# [ 1 -lt 0 ] && echo 'ok'   
[root@localhost shell]# [ 1 -lt 2 ] && echo 'ok' 
ok
# 没有空格隔开,报错
[root@localhost shell]# [ 1 -lt 2] && echo 'ok' 
-bash: [: 缺少 ]
# 变量替换也可以
[root@localhost shell]# a=1
[root@localhost shell]# [ $a -lt 2 ] && echo 'ok' 
ok
[root@localhost shell]# 

7 if 分支语句

7.1 if语句

语法:

if  条件表达式一 ; then   
    表达式一true时执行这里
#[
elif  条件判断式二 ; then    
    表达式二true时执行这里
elif  条件判断式三 ; then    
    表达式三true时执行这里
else    
    都不成立时,执行这里
#]
fi

其中:

​ [] 内的是可选。

示例:

需求:实现根据脚本入参判断是start、stop、restart,然后输出相应操作;否则输出Other操作

[root@localhost shell]# vim s5.sh
#! /bin/bash
cmd=$1
if [ $cmd == "start" ]; then
        echo "start operation"
elif [ $cmd == "stop" ]; then
        echo "stop operation"
elif [ $cmd == "restart" ]; then
        echo "restart operation"
else
        echo "other operation"
fi

8 for循环语句

8.1 for 循环变量 in 数据列表

语法:

for 循环变量 in 数据列表
do
    循环体代码段
done

其中:

​ 这里的数据列表 是一系列以空格分隔的值,shell每次从这个列表中取出一个值,然后运行do/done 之间的命令。

示例:

需求:输出指定目录(脚本入参)下文档是文件类型的文档

[root@localhost shell]# vim s7.sh 
#!/bin/bash
for i in {1..100};do
echo $i
done

运行结果:

file

本笔记中不包含机试代码,代码需要测试者跟着学习视频独立完成,程序结果如下图
file
file

版权声明:原创作品,允许转载,转载时务必以超链接的形式表明出处和作者信息。否则将追究法律责任。来自海汼部落-青牛,http://hainiubl.com/topics/76207
回复数量: 2
暂无评论~~
  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,可用Emoji的自动补全, 在输入的时候只需要 ":" 就可以自动提示了 :metal: :point_right: 表情列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif,教程
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
Ctrl+Enter