一.Linux介绍
Linux是一种自由和开放源码的类UNIX操作系统。它能运行主要的Unix工具软件、应用程序和网络协议,支持32位 和64位硬件。该操作系统的内核由林纳斯·托瓦兹于1991年10月5日首次发布。
Linux最初是作为支持英特尔x86架构的个人计算机的一个自由操作系统,现可运行在服务器和其他大型平台之上, 如大型计算机和超级计算机。Linux也广泛应用在嵌入式系统上,如手机(Mobile Phone)、平板电脑 (Tablet)、路由器(Router)、电视(TV)和电子游戏机等。
开放性,多用户,多任务,丰富的网络功能,可靠的系统安全,良好的可移植性,具有标准兼容性,良好的用户界 面(命令界面,图形界面等),出色的速度性能。
二.Linux目录结构
Linux的所有文件都存储在根目录/下,
根目录
根目录/,Linux中没有盘符,所以文件全部存放在根目录下,比如cd /etc/local就是从电脑的根目录中找etc这个文件夹,再从etc文件夹中找local文件夹这样一层一层的往下走
/bin:存放可执行的二进制文件,比如cd,ls,tar,mv等命令
/boot:存放的是系统启动时用到的一些文件,例如Linux的内核文件:/boot/vmlinuz,系统引导管理器:/boot/grub
/dev:存放设备文件,访问该目录下的某个文件就相当于访问某个设备
/etc:存放系统配置文件,不建议在此目录下存放可执行文件
/home:系统默认的家目录,新增用户时,文件存放在此目录
/lib:存放跟文件系统中的程序运行所需要的共享库及内核模块
mnt: /media:光盘默认挂载点,通常光盘挂载于 /mnt/cdrom 下,也不一定,可以选择任意位置进行挂载。
/opt:给主机额外安装软件所摆放的目录。
/root:是管理员root的家目录
用户目录
可以通过终端输入cd ~进入用户目录,也就是/home目录
如果当前是root管理员,在命令行前面会有#号
如果当前是普通用户,在命令行前面会有$号
三.Linux的常用命令
查看防火墙的状态:systemctl status firewalld
关闭防火墙:systemctl stop firewalld
开启防火墙:systemctl start firewalld
查看ssh运行状态:service sshd status
重启虚拟机:init 6
查看目录:ls
创建目录:mkdir
创建一个空白文件:touch
向文件中写内容:echo '内容' > 文件名 (如果是一个>号就是覆盖,两个>号就是追加)
vim编辑器中常用命令
撤销:u
复制:yy
粘贴:p
删除:dd
移动:G
如果针对多行,命令都是数字+命令
在写命令的过程中按TAB键可以补全代码
命令中的ctrl组合键
Ctrl+c 结束正在运行的程序
Ctrl+d 结束输入或退出shell
clear 清屏
四.文件访问权限
文件的访问权限分为:可读(r),可写(w),可执行(x),在Linux中有不一样的表达方式
可读权限:对于文件只有读取的权限,对于目录只有浏览的权限
可写权限:对于文件,具有修改文件内容的权限;对于目录,具有删除、移动目录内文件的权限
可执行权限: 对于文件,具有执行文件的权限;对于目录,该用户具有进入目录的权限
第一个字符代表是文件类型:
“d” 代表文件夹
“-” 代表普通文件
“c” 代表硬件字符设备
“b” 代表硬件块设备
“s”表示管道文件
“l” 代表软链接文件
从第二个字符开始,每三个为一组,分别表示文件所有者、用户组、其他用户拥有的权限
rwx表示可读可写可执行
r-x表示可读可写
修改用户权限
chown
格式:chown 参数 用户 用户组 文件路径
参数:
-c 显示更改的部分信息
-f 强制执行
-v 显示详细的处理信息
-R 处理指定目录以及其子目录内容----->改变当前目录和目录下所有内容的所属用户和组
-h 修复符号连接
chmod
用于权限设置,权限同样可以用数字表示:
可写-->4
可读-->2
可执行-->
因此如果具有读写执行权限时合计7,也就是最高劝降,所以最高的权限为777
五.shell编程
shell脚本是由一些按照一定格式组合起来的shell命令,shell脚本不需要编译就可以直接执行,因此是边 解释边执行的 ----- 定义一个shell脚本其中命令就会一键执行,可以用shell执行一些定义操作
Linux系统提供了多种不同的Shell【解释器】供以选择,常用的有 Bourne Shell(简称sh),C-shell (简称csh),Korn Shell(简称ksh),Bourne Again Shell(简称 bash),可以通过“echo $SHELL”查看当shell默认解释器
centos默认的解释器是bash,linux系统版本众多,可能别的版本的linux系统默认解释器不是bash, 一般都是bash
root:x:0:0:root:/root:/bin/bash
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
syslog:x:101:103::/home/syslog:/bin/false
itcast:x:1000:1000:itcast,,,:/home/itcast:/bin/bash
ftp:x:115:125:ftp daemon,,,:/srv/ftp:/bin/false
最后一列显示的就是shell的解释器
编写一个简单的脚本
创建一个文件,注意后缀名要是.sh
通过vim编辑器编辑创建的文件
要以#!/bin/bash开头,或者shall的编辑器
用sh 加shall的名称来执行
变量
变量是一个容器,用于存储数据的容器,其中存储的数据可以改变,因此称为变量
定义变量两边不能有空格
运行结果是
变量名和含义
$#:表示位置参数的数量
$*:表示所有位置参数的内容
$?:表示命令执行后返回的状态,用于检查上一个命令是否正确,linux中命令退出为0是正确,非0都是错误
$$:表示当前进程的进程号
$!:表示后台的最后一个进程
$0:表示当前执行的进程名
$数字:表示命令行的第几个参数
数组
数组也是一个容器,可以存储一组数组,数组存储的数据称为元素,每个元素会分配一个唯一标识称为 下标,下标都是从0开始依次+1
定义一个数组:
数组定义: 数组名【自定义】=(元素 元素 元素 元素.....)
获取某个元素:${数组名[下标]}
获取全部元素:
echo ${数组名[*]}
给数组赋值:
设置元素:数组名[下标]=值
for循环
循环就是重复执行既定的流程,比如输出10句hello,可以 echo ”hello“ 写10遍,也可让echo ”hello“ 执行 10次【循环】,因此循环就是重复,可以有效的提高代码的利用率,让代码可读性增强【代码少了自然 可读性就强】
for((起始值;条件;步长))
do
--- 循环体
done
if分支语句
if语句称为条件分支,满足对应条件去执行对应的流程
if [ 条件1 ] ; then 代码1 --- >如果条件1成立执行代码1
elif [ 条件2 ]; then 代码2 --- >反之如果条件2成立执行代码2
elif [ 条件3 ] ;then 代码3 --- >反之如果条件3成立执行代码3 .... ....
else 代码4 ----> 反之 执行代码4 --- if结束 条件分支是从上到下依次过滤,先满足先执行,如果都不满足就走else
case语句
case分支只能用于判断是否等于某个值, 只有符合了才会执行后面代码
case 值 in
比较值1)
等于比较值1时候执行的代码
;;
比较值2)
等于比较值2时候执行的代码
;;
....
esac