系统服务及shell编程
防火墙(ufw)
说明:简单版本的防火墙,底层依赖于iptables。
安装:
sudo apt-get install ufw
查看状态:
sudo ufw status
开启/关闭:
sudo ufw enable|disable
默认允许/禁止:
sudo ufw default allow|deny
允许/禁止:
sudo ufw allow|deny 服务|port
,如:sudo ufw deny ssh
移除规则:
sudo ufw delete deny ssh
管道及xargs
|:管道,将前面命令的输出作为后面命令的输入参数,如:
ls /bin | grep '^m'
xargs:有些命令无法接收管道参数,可以通过xargs解决,如:
find -name 1.sh | xargs rm -rf
重定向
三个数据流:标准输入(stdin)、标准输出(stdout)、标准错误(stderr)
在linux,启动任意的进程,系统会自动创建上面三个数据流,其实就是三个文件
三个文件的描述符分别是:0、1、2,都指向了终端
重定向就是改变原来的表现位置。
示例演示:
输出重定向: ls > 1.txt # 将ls的输出结果保存到1.txt文件中,会新建文件1.txt,若文件存在则会清空 ls >> 1.txt # 将ls的输出结果追加到1.txt文件中,文件不存在也会创建错误重定向: ls /xxx 2> 2.txt # 将错误信息保存到2.txt同时重定向输出和错误: ls /xxx /home &> 3.txt # 同时将错误和输出保存到3.txt文件中
shell简介
什么是shell编程?
将终端下编写的命令等保存到文件中,就称为shell编程。
shell类型?
ash、bash、csh、ksh
查看系统shell解析器:
echo $SHELL
当前系统可以shell解析器:
/etc/shells
文件
shell脚本的执行
指定shell解析器执行指定脚本:
bash hello.sh
,不需要添加可执行权限将shell脚本作为可执行文件执行,必须添加可执行权限
添加可执行权限:
sudo chmod +x world.sh
在脚本开头指定shell解析器:
#! /bin/bash
,其他位置的#表示注释执行脚本:
在当前目录:
./world.sh
不在当前目录:
/home/jerry/shell/world.sh
shell变量
变量定义:
name='dahua'
,'='两边不能有空格打印变量:
echo $name 或 echo ${name}
销毁变量:
unset name
,之后就不能再使用声明常量:
readonly name='dahua'
使用说明:'='两边不能有空格,只读变量不能修改
变量分类
本地变量:只适用于当前shell的变量
环境变量:适用于整个系统,通常都是纯大写的
查看系统环境变量:
env
查看指定环境变量:
echo $PATH
若想在任意位置都可执行指定程序,可以将程序所在的路径添加到环境变量PATH。
修改:
单次:
export PATH=$PATH:/home/jerry/shell
永久:
系统:
/etc/profile
用户:
~/.profile、~/.bashrc、~/.bash_profile
把导出的语句添加到文件末尾即可
使文件生效:重启终端 或
source ~/.bashrc
位置变量:
$0:执行脚本的名字
$1 ~ $9
:传递给脚本的参数
特殊变量:
$#:传递给脚本的参数个数
$*:传递给脚本的所有参数
$?:上次命令的执行情况,0表示正确,其他表示错误
字符串类型
单引号:其中的字符都会原样输出,不会被解析
双引号:可以放除了$、`、\、"以外任意字符,其中的变量等会被解析
反引号:将其中的内容作为命令执行,如:
echo `date`
'':转义特定的字符,如:$、*、\、?、|、`、^、&
字符串长度:${#name}
字符串提取:${name:2:3},从变量name中下表为2的地方提取3个字符
数组类型
定义:
a=(1 2 3)
成员访问:
echo ${a[2]}
个数统计:
echo ${#a[@]}
所有元素:
echo ${a[*]}
seq
说明:生成指定范围的连续整数
示例:
seq 10
,生成1~10的连续整数,seq 2 10
,生成2~10的连续整数
expr
说明:运算一个表达式
示例:
expr 2 + 3 结果为5echo `expr 3 + 5` 结果会打印8expr 3 \* 5 结果为15,*需要转义
各种运算
test命令:成功为真,失败为假。
#!/bin/bashif test 1 -lt 2; then echo 'ok'fiif [ 1 -lt 2 ]; then echo 'okok'fi
数值比较运算
-lt:小于
-le:小于等于
-gt:大于
-ge:大于等于
-eq:等于
-ne:不等于
字符串测试
=:相等
!=:不相等
-z:字符串的长度是否为0
-n:字符串的长度是否不为0
文件判断
-f:普通文件
-d:目录文件
-c:字符设备文件
-b:块设备文件
-w:是否可写
-x:是否可执行
-s:文件存在,并且至少有一个字符
逻辑运算
-a:逻辑与(and),也可以使用&&来代替
-o:逻辑或(or),也可以使用||来代替
!:逻辑非
示例:
#! /bin/bashif [ 1 -lt 3 -a 2 -lt 3 ]; then echo 'ok'fiif [ 1 -lt 3 ] && [ 2 -lt 3 ]; then echo 'ok'fiif [ ! 1 -gt 3 ]; then echo 'xxx'fi
分支结构
if-elif-else:
#! /bin/bashif [ 8 -lt 3 ]; then echo '8 < 3'elif [ 8 -lt 9 ]; then echo '8 < 9'else echo 'xxx'fi
case:
#! /bin/bashread -p 'please input any charactor:' chcase $ch in [a-z]) echo 'alpha' ;; [0-9]) echo 'numberic' ;; *) echo 'others' ;;esac
循环结构
for-in 及 for
#! /bin/basha=(1 2 3 4 5)# for x in a b c# for x in /etc/*# for x in `seq 1 10`for x in ${a[*]}do echo $xdonefor ((i=0;i<${#a[@]};i++))do echo ${a[$i]}done
while
#! /bin/bashi=1sum=0while [ $i -le 100 ]do #((sum+=$i)) #((i++)) #let sum+=$i #let i++ sum=$[$sum+$i] i=$[$i+1]doneecho $sum
until:条件成立,循环停止
#! /bin/bashi=1until [ $i -gt 10 ]do echo $i ((i++))done
break、continue自行学习
函数使用
demo(){ echo 'for func' } demo
arg(){ echo 2 echo # return 250 }
arg abc def
$?表示函数的返回值
echo $?
•
转载于:https://www.cnblogs.com/542684416-qq/p/9897136.html
系统服务及shell编程相关推荐
- shell编程快速入门(一)
shell脚本书写规范 shell脚本编程规范与书写习惯 1.开头加脚本解释器 2.附带作者及版权信息 3.脚本扩展名为 *.sh 4.脚本存放在固定的目录下 5.脚本尽量不使用中文 6.成对的符号 ...
- Linux7.6—Shell编程 学习笔记 第四章:系统任务设置
Linux7.6-Shell编程 第四章:系统任务设置 文章目录 Linux7.6-Shell编程 一.系统启动流程 二.系统服务 三.开机自启动服务 四.定时任务 一.系统启动流程 启动计算机的硬件 ...
- 04-Linux之Linux软件安装、三剑客和Shell编程
1.9 Linux的软件安装 1.9.1 环境变量的配置 环境变量是指 当我们配置了环境变量后, 执行相应的命令,告诉系统命令搜索的文件夹,当我们执行一个命令的时候,默认从当前路径开始查找,如果当前路 ...
- Shell编程-运维
什么是运维 术语名词 IDC--(Internet Data Center)互联网数据中心,主要服务包括整机租用.服务器托管.机柜租用.机房租用.专线接入和网络管理服务等.广义上的IDC业务,实际上就 ...
- Shell编程 大学生速通攻略(持续更新)
提示:本篇博客写的都是自己复习Shell时候所记录的一些笔记(还是比较篇概念的内容),所以可能内容不是很全面.或许也很杂,内容都是从基础一点点往后增加的. 文章目录 一些无关紧要的废话 一.初识she ...
- python运维脚本面试_运维开发工程师 面试题 shell编程
1. 32位随机密码生成 cat /proc/sys/kernel/random/uuid | tr -d '-' 2.查看当前系统每个ip的tcp连接数 -n 强制显示IP地址 -t 显示TCP连接 ...
- vim for mysql_一、Vim编辑器 二、用户和组管理 三、软件的安装(jdk,mysql) 四、Shell编程...
一.Vim编辑器的使用 1. vim编辑器的运行模式 编辑模式:等待用户编辑命令的输入 插入模式:编辑文本内容 命令模式:执行命令 2. 使用 :vim 文件名 3. 查看当前vim编辑器介绍:vim ...
- Linux之shell编程
walkingLL 2018-09-22 08:51:26 14717 收藏 129 shell历史 Shell的作用是解释执行用户的命令,用户输入一条命令,Shell就解释执行一条,这种方式称为交互 ...
- shell编程基础(2)---与||
shell 编程重要的应用就是管理系统,对于管理系统中成千上万的程序而言,查询某个文件名是否存在,并且获取该文件名所指代文件基本信息是系统管理员的基本任务.shell命令可以很轻松的完成这项任务. # ...
最新文章
- 找回MySQL的root密码
- 《python源码剖析》,看看
- 干货 | 广电行业数字化时代的「数据破局」指南
- 翻遍全网!这4个Python项目最良心!(含视频源码)
- 文献记录(part90)--A novel density-based clustering algorithm using nearest neighbor graph
- python扩展库不是用于科学计算的有_有哪些科学计算的开源库
- stateful set 学习笔记
- 在 Linux 的应用中测试中的延时和丢包模拟
- Repeater_Table_单击_Repeater样式,Table样式,交替变色,单击变色
- 【现控】系统状态空间表达式
- ubuntu linux 批量删除文件
- 测度论中的概率空间,可测空间
- Android 搜索手机本地的全部视频(通过查询数据库)
- Redis搭建及使用
- 移动APP和小程序的低代码开发平台有哪些
- 华为手表开发:WATCH 3 Pro(15)传感器订阅加速度计
- 水利部水利工程造价系统
- python中如何判断一个输入值为整数
- 分治法求循环赛日程表
- 中小学教师MOOC课程资源媒体技术要求