Shell基础入门

简介: Shell基础入门

Shell 实现的功能

1)手动安装操作系统
2)初始化操作系统
3)安装服务
4)服务启动systemd
5)shell进行代码上线
6)监控zabbix cacti网卡 Nagios监控硬件交换机路由器
7)日志分析

必备基础

1.熟练使用vim编辑器2.熟悉ssh终端3.熟练使用linux基础命令4.熟练使用四剑客

基础命令参考链接

linux常用命令

Linux重要命令合集

shell 知识点

变量基础
  条件表达式
  if判断
  for循环
  while循环
  utile循环
    continue
    break  
    exit
  case语句
  数组
看懂别人的脚本 掌握常见语法 重复练习
要有编程思维
找合适的教材(项目多)

Shell入门

1)什么是Shell

Shell是一个命令解释器,作用解释用户输入的命令以及程序。

2)什么是Shell脚本

把命令统一在放一个文件中进行执行,称为Shell脚本。

Shell脚本包含若干个命令+IF判断+FOR循环+变量+数组等等

hello,world

[root@m01 /server/scripts ]# vim test.sh
#!/bin/sh                #解释器
#Author ajie             #作者
#print hello word        #目的
echo "hello,word!"

如何执行脚本

sh test.sh
chmod +x test.sh
./test.sh
/server/scritps/test.sh
source test.sh 
. test.sh
cat test.sh|bash
bash < test.sh

变量

变量的生存周期

永久的 需要修改环境变量配置文件 
变量永久生效 /etc/profile临时的
直接使用export声明变量即可,关闭shell则变量失效 
不加export 则只对当前的shell生效加export   则对当前打开窗口所有的shell生效

环境变量配置文件生效的顺序

/etc/profile     .bash_profile .bashrc         /etc/bashrc

自定义环境变量

变量名=变量值

获取值 $变量名

[root@m01 ~ ]# name=ajie
[root@m01 ~ ]# echo $nameajie

变量值的定义

数字变量内容定义
age=18 
字符串定义
boy='I am  teacher' 默认是双引号 混合字符串必须加双引号 数字 字符串 变量

单引号和双引号的区别

单引号: 所见即所得 吃什么吐什么 
定义的什么值输出或者调用的就是什么值 不会解析变量 双引号:可以解析变量

命令的定义方式

test=`pwd`
test=$(pwd)

Shell特殊位置重要变量

配合echo使用

$0  获取当前Shell脚本的文件名  如果脚本全路径执行则显示全路径 basename 只获取脚本名称
$n  获取当前脚本的第n个参数,n为0则是脚本名称,从$1开始代表脚本的第一个参数  $9以后需要加{} ${10}
$#  获取shell脚本所有传参的总个数
$*  获取shell脚本所有传参的参数,如果不加双引号则和$@相同,在循环语句中如果加上双引号,则表示将所有的参数视为单个字符串
$@  获取shell脚本所有传参的参数,如果不加双引号则和$*相同,在循环语句中如果加上双引号,则表示将所有的参数视为独立字符串
$?  获取执行上一条命令的执行状态结果,返回值0为成功 非0失败
$$  获取当前脚本的PID
$!  获取上一个后台工作脚本进行的PID
$_  获取脚本最后的一个参数 类似于ESC .

脚本的传参

直接传参

[root@m01 /server/scripts ]# cat test.sh 
#!/bin/bash
#Author: ajie
#FileName:test.sh
ping -c1 -W1 $1 &>/dev/null
[ $? -eq 0 ] && echo "ping is ok" || echo "ping is error"
[root@m01 /server/scripts ]# sh test.sh baidu.com
ping is ok
[root@m01 /server/scripts ]# sh test.sh baiduuuuuuuuu.com
ping is error

变量赋值

[root@m01 /server/scripts ]# cat test.sh 
#!/bin/bash
#Author: ajie
#FileName:test.sh
url=$1
ping -c1 -W1 $url &>/dev/null
[ $? -eq 0 ] && echo "ping is ok" || echo "ping is error"

read读入

[root@m01 /server/scripts ]# cat test.sh 
#!/bin/bash
#Author: ajie
#FileName:test.sh
read -p "check your url: " url
ping -c1 -W1 $url &>/dev/null
[ $? -eq 0 ] && echo "ping is ok" || echo "ping is error"
[root@m01 /server/scripts ]# sh test.sh 
check your url: lvxinjie.cn
ping is ok

变量的子串

子串切片

name="I am shuaiguo"

取出am 三种方式取值

echo $name|awk '{print $2}'
am
echo $name|cut -c 3-4
am
echo ${name:2:2}
am

如何统计变量内的长度

echo $name|wc -L
13
echo ${#name}
13
echo $name|awk '{print length}'
13
expr length "$name"
13

变量的删除和替换

url=www.sina.com.cn
方法1
sed -r 's#www.(.*)#\1#'
方法2
echo www.sina.com.cn|grep 's.*$' -o
方法3
echo $url|sed 's#www.##g'
方法4
echo ${url:4}
方法5 切碎组合
echo $url|cut -d "." -f2
方法6 变量删除
[root@shell ~]# echo $url
www.sina.com.cn
[root@shell ~]# echo ${url#*.}
sina.com.cn
[root@shell ~]# echo ${url#*.*.}
com.cn
[root@shell ~]# echo ${url#*.*.*.}
cn
[root@shell ~]# echo ${url}
www.sina.com.cn
[root@shell ~]# echo ${url#*s}
ina.com.cn
[root@shell ~]# echo ${url}   
www.sina.com.cn
[root@shell ~]# echo ${url#*c}
om.cn
[root@shell ~]# echo ${url##*c}
n
[root@shell ~]# echo ${url}
www.sina.com.cn
[root@shell ~]# echo ${url%.*}
www.sina.com
[root@shell ~]# echo ${url%.*.*}
www.sina
[root@shell ~]# echo ${url%%.*} 
www
[root@shell ~]# echo $url
www.sina.com.cn
[root@shell ~]# echo $url|sed 's#sina#baidu#g'
www.baidu.com.cn
[root@shell ~]# echo ${url/sina/baidu}
www.baidu.com.cn
[root@shell ~]# echo ${url}
www.sina.com.cn
[root@shell ~]# echo ${url/w/a}
aww.sina.com.cn
[root@shell ~]# echo ${url//w/a}
aaa.sina.com.cn










相关文章
|
6月前
|
Shell Linux
Linux下的Shell基础——Shell概述和入门(一)
Linux下的Shell基础——Shell概述和入门(一)
65 0
Linux下的Shell基础——Shell概述和入门(一)
|
6月前
|
Shell 索引
shell脚本入门到实战(四)- 数组
shell脚本入门到实战(四)- 数组
|
6月前
|
Shell
shell脚本入门到实战(三) - 变量
shell脚本入门到实战(三) - 变量
|
6月前
|
Shell Linux 人机交互
shell脚本入门到实战(二)--shell输入和格式化输出
shell脚本入门到实战(二)--shell输入和格式化输出
400 0
|
3月前
|
分布式计算 资源调度 Hadoop
Hadoop入门基础(五):Hadoop 常用 Shell 命令一网打尽,提升你的大数据技能!
Hadoop入门基础(五):Hadoop 常用 Shell 命令一网打尽,提升你的大数据技能!
|
3月前
|
Java Shell Linux
【Linux入门技巧】新员工必看:用Shell脚本轻松解析应用服务日志
关于如何使用Shell脚本来解析Linux系统中的应用服务日志,提供了脚本实现的详细步骤和技巧,以及一些Shell编程的技能扩展。
52 0
【Linux入门技巧】新员工必看:用Shell脚本轻松解析应用服务日志
|
2月前
|
存储 Ubuntu Shell
shell 用法入门
本文档详细介绍了Shell脚本的基础知识,包括基本写法、变量定义与使用、命令置换、环境变量、数组操作、算术运算、输入输出处理、控制语句及循环结构等内容。文档还提供了丰富的示例代码,帮助读者更好地理解和掌握Shell编程技巧。此外,还介绍了如何使用`if`语句进行条件判断、`case`语句进行模式匹配以及`while`、`for`循环等控制结构。最后,文档还涵盖了函数定义与调用的方法。适合初学者和有一定基础的开发者参考学习。
|
5月前
|
网络协议 Linux Shell
基础入门-反弹SHELL&不回显带外&正反向连接&防火墙出入站&文件下载
基础入门-反弹SHELL&不回显带外&正反向连接&防火墙出入站&文件下载
|
6月前
|
监控 关系型数据库 Shell
Shell脚本入门:从基础到实践,轻松掌握Shell编程
Shell脚本入门:从基础到实践,轻松掌握Shell编程
130 3
|
6月前
|
存储 Shell C语言
shell脚本 编程 变量 基本入门(详解)
shell脚本 编程 变量 基本入门(详解)