
Shell
文章平均质量分 77
shell
牛牛Blog
把学问过于用作装饰是虚假;完全依学问上的规则而断事是书生的怪癖
展开
-
23 个开箱即用的实用 Shell 脚本分享
shell脚本是帮助程序员和系统管理员完成费时费力的枯燥工作的利器,是与计算机交互并管理文件和系统操作的有效方式。区区几行代码,就可以让计算机接近按照你的意图行事。为大家整理了23个实例,通过23个实战经典脚本实例,展示了shell脚本编程的实用技术和常见工具用法。大家只需根据自己的需求,将文中这些常见任务和可移植自动化脚本推广应用到其他类似问题上,能解决那些三天两头碰上的麻烦事。检测两台服务器指定目录下的文件一致性#!/bin/bash###########################原创 2021-04-23 21:22:57 · 830 阅读 · 0 评论 -
shell 编程规范
这里是一句长长的引言前言 为什么要有编码规范 编码规范原则 代码规范等级定义 本文档参考 源文件 基础 结构 命名 函数名 变量名 常量和环境变量名 只读变量 局部变量 异常与日志 异常 日志 编程实践持续分类并完善 变量扩展推荐 附:常用工具前言与其它的编程规范一样,这里所讨论的不仅仅是编码格式美不美观的问题, 同时也讨论一些约定及编码标准。这份文档主要侧重于我们所普遍遵循的规则, 对于那些不是明确强制要求的,...原创 2021-04-22 16:22:32 · 682 阅读 · 0 评论 -
Linux Shell 脚本的 10 个有用的“面试问题和解答”
Linux 的浩瀚无垠,使人总能每次都提交与众不同的内容。这些内容不仅对他们的职业生涯很有用,同时也让他们增长知识。在此,我们就尝试这么去做,至于能取得多大的成功,就由我们的读者朋友们来判断吧。在此,作为 shell 脚本的附加内容,在本文中我们将从面试的角度解读与 Linux Shell 相关的问题。1.在 shell 脚本成功执行前,如何中断脚本执行?解答:我们需要使用exit命令来实现以上描述的情境。exit命令被强制输出非0值时,脚本会报错并退出。在 Unix 环境下的 shell 脚本原创 2021-04-22 16:16:15 · 161 阅读 · 0 评论 -
Shell if 条件判断
Shell if 条件判断Shell 语言中的if条件一、if的基本语法:if [ command ];then符合该条件执行的语句elif [ command ];then符合该条件执行的语句else符合该条件执行的语句fi二、文件/文件夹(目录)判断[ -b FILE ] 如果 FILE 存在且是一个块特殊文件则为真。[ -c FILE ] 如果 FILE 存在且是一个字特殊文件则为真。[ -d DIR ] 如果 FILE 存...转载 2020-10-15 11:07:09 · 1820 阅读 · 0 评论 -
Shell基础--- case in语句详解
《Shell if else》一节的最后给出了一个例子,就是输入一个整数,输出该整数对应的星期几的英文表示,这节我们就用 case in 语句来重写代码,如下所示。#!/bin/bashprintf "Input integer number: "read numcase $num in 1) echo "Monday" ;; 2) echo "Tuesday" ;; 3) echo "Wednesday" ;; 4) echo "T原创 2020-10-01 20:45:57 · 1743 阅读 · 0 评论 -
shell基础--- wc命令
linux shell wc命令wc命令的功能为统计指定文件中的字节数、字数、行数,并将统计结果显示输出。语法:wc[选项]文件…说明:该命令统计给定文件中的字节数、字数、行数。如果没有给出文件名,则从标准输入读取。wc同时也给出所有指定文件的总统计数。字是由空格字符区分开的最大字符串。该命令各选项含义如下:-c统计字节数。-l统计行数。-w统计字数。这些选项可以组合使用。输出列的顺序和数目不受选项的顺序和数目的影响。总是按下述顺序显示并且每项最多一列。...转载 2020-10-01 20:11:39 · 4486 阅读 · 0 评论 -
Shell 基础---正则表达式与文本处理器--(grep,egrep 与文本处理器-sed、awk、sort、uniq、tr)
Shell 编程之正则表达式与文本处理器--(grep,egrep 与文本处理器-sed、awk、sort、uniq、tr)文章目录一、正则表达式 1.1 正则表达式概述 1.1.1 正则表达式的定义 1.1.2 正则表达式用途 1.2 基础正则表达式 1.3 基础正则表达式:grep命令 1.3.1 查找特定字符 1.3.2 利用中括号“[]”来查找集合字符 1.3.3 查找行首“^”与行尾字符“$” 1.3.4 查找任意一个字符“.转载 2020-10-01 20:10:11 · 190 阅读 · 0 评论 -
shell基础---行转列(awk),列转行(tr)
shell行转列(awk)awk -F "+" '{for(i=1;i<=NF;i++) a[i,NR]=$i}END{for(i=1;i<=NF;i++) {for(j=1;j<=NR;j++) printf a[i,j] " ";print ""}}' file.txt列转行(tr):cat file.txt |tr "\n" ","|sed -e 's/,$/\n/'原创 2020-10-01 20:01:02 · 3596 阅读 · 0 评论 -
shell基础---Shell中删除文件中某一行
如果有一个abc.txt文件,内容是:aaabbbBATBUSINESSTYPE, INSIDEID--) ONLINE;INSIDEID--) ONLINEcccdddeeefff如果要删除ddd,那么脚本可以这样写:sed -i '/ddd/d' abc.txt如果删除的是一个变量的值,假如变量是var,应该写成:sed -i '/'"$var"'/d' abc.txt至于grep -v aaa abc.txt这个方法,是无法将修改的结果写入abc.txt中去.原创 2020-09-24 23:01:33 · 15220 阅读 · 1 评论 -
shell基础---Shell 获得用户输入
在 Bash 下我们可以通过其内部命令 read 接收用户来自键盘的输入,并可以将输入的内容赋值给一个变量。实例:基本的读取read 命令比较常用的语法格式如下所示:read [-p prompt] [variable1 variable2...]-p 选项用于在尝试读取任何输入之前,显示 prompt(提示信息)的内容到标准错误输出。我们一般使用这一选项来指定提示用户输入哪些内容的信息。read 命令会每次从标准输入(或使用 -u 选项指定的文件描述符中)读取一行的内容,它会将第一个单原创 2020-09-24 22:50:04 · 5412 阅读 · 0 评论 -
linux crontab定时执行shell脚本
linux下使用crontab命令被用来提交和管理用户的需要周期性执行的任务,示例如下:crontab -e 编辑周期任务30 21 * * * /etc/init.d/smb restart 每晚的21:30重启smbcrontab命令说明: crontab命令被用来提交和管理用户的需要周期性执行的任务,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该.原创 2020-09-24 17:37:25 · 227 阅读 · 0 评论 -
shell基础---shell常用工具命令总结
1.rsync同步命令rsync -avul --progress /root/shell/bak/mysql/ root@10.12.16.85:root/mysql_bak/2.远程执行shell命令或者脚本(非ansible模块)ssh远程执行前提条件:配置ssh免密登录简单命令:1ssh user@remoteNode "cd /home ; ls" 基本能完成常用的对于远程节点的管理了,几个注意的点:双引号,必须有。如果不加双引号,第二个ls命令在本地执行。原创 2020-09-24 17:31:53 · 408 阅读 · 0 评论 -
Linux下AWK、SED、GREP、FIND命令详解
AWKAWK是一个优良的文本处理工具,Linux和Unix环境中现有的功能最强大的数据处理引擎之一。语法awk [选项参数] 'script' var=value file(s)或awk [选项参数] -f scriptfile var=value file(s)调用方式 awk 命令行 你可以象使用普通UNIX 命令一样使用awk,在命令行中你也可以使用awk 程序设计语言,,这种方法一般只用于解决简单的问题。当然,你也可以在shell script 程序中引用awk 命原创 2020-08-27 08:05:48 · 624 阅读 · 0 评论 -
shell基础---shell中while语句
shell中的while循环语句while语句语法:while 命令/条件do语句done机制:如果while后的命令执行成功,或条件真,则执行do和done之间的语句,执行完成后,再次判断while后的命令和条件;如果while后的命令执行失败,或条件为假,循环结束例如:while datedoecho “aa”done特例:无条件循环while truedo语句done...原创 2020-09-22 09:52:46 · 1221 阅读 · 0 评论 -
shell基础--- [] [[]] -n -z 的含义解析
shell脚本[] [[]] -n -z 的含义解析1、在中括号中,判断变量的值, 加不加双引号的问题?-z 判断 变量的值,是否为空; zero = 0- 变量的值,为空,返回0,为true- 变量的值,非空,返回1,为false-n 判断变量的值,是否为空 name = 名字- 变量的值,为空,返回1,为false- 变量的值,非空,返回0,为truepid="123"[ -z "$pid" ] 单对中括号变量必须要加双引号[[ -z $pid ]] 双对括号,变原创 2020-09-21 09:38:59 · 855 阅读 · 0 评论 -
shell基础---shell中的时间值提取(date)
shell中的时间值提取(date)方法1# date +%F# date +%T# cat time.sh#!/bin/bashDATE=`date +%F | sed 's/-//g'``date +%T | sed 's/://g'`echo $DATE# chmod u+x time.sh# sh time.sh2014082709352方法2“date +%Y%m%d%H%M%S”获取时间信息串[we@h p]$ date +%Y%m%d.原创 2020-09-20 22:39:17 · 2456 阅读 · 0 评论 -
shell基础---Shell数组定义以及获取数组元素
Shell数组:Shell数组定义以及获取数组元素和其他编程语言一样,Shell 也支持数组。数组(Array)是若干数据的集合,其中的每一份数据都称为元素(Element)。Shell 并且没有限制数组的大小,理论上可以存放无限量的数据。和C++、Java、C#等类似,Shell 数组元素的下标也是从 0 开始计数。获取数组中的元素要使用下标[ ],下标可以是一个整数,也可以是一个结果为整数的表达式;当然,下标必须大于等于 0。遗憾的是,常用的 Bash Shell 只支持一维数组,不支持多..原创 2020-09-20 21:57:52 · 7919 阅读 · 1 评论 -
shell基础--- seq命令详解
linux shell seq命令详解seq: squeue 是一个序列的缩写,主要用来输出序列化的东西seq常见命令参数用法:seq [选项]... 尾数 或:seq [选项]... 首数 尾数 或:seq [选项]... 首数 增量 尾数以指定增量从首数开始打印数字到尾数。 -f, --format=格式 使用printf 样式的浮点格式 -s, --separator=字符串 使用指定字符串分隔数字(默认使用:\n) -w, --equal-.原创 2020-09-20 21:49:27 · 5726 阅读 · 0 评论 -
shell基础---判断文件是否存在
shell判断文件是否存在 1. shell判断文件,目录是否存在或者具有权限2. #!/bin/sh3.4. myPath="/var/log/httpd/"5. myFile="/var /log/httpd/access.log"6.7. # 这里的-x 参数判断$myPath是否存在并且是否具有可执行权限8. if [ ! -x "$myPath"]; then9. mkdir "$myPath"10. fi11.12. # 这里的-d 参数判断$myPath是否存在1.原创 2020-09-20 21:38:17 · 1241 阅读 · 0 评论 -
shell基础---awk+uniq+sort 统计文件中某字符串出现次数并排序
在服务器开发中,我们经常会写入大量的日志文件。有时候我们需要对这些日志文件进行统计。Linux中我们可以利用以下命令简单高效的实现这一功能。需要用到的命令简介cat命令 cat命令主要有三大功能 1.一次显示整个文件 cat filename 2.创建一个文件 cat > fileName 3.将几个文件合并为一个文件 cat file1 file2 > file 参数: -n 或 –number 由 1 开始对所有输出的行数编号 -b 或 –num...原创 2020-09-20 21:36:26 · 4985 阅读 · 0 评论 -
shell基础---exit用法
shell基础篇---exit用法exit:退出脚本exit #(#可以使用0至255,0表示正确,其他表示不同的错误)如果脚本没有明确定义退出状态码,那么,最后执行的一条命令的退出码即为脚本的退出状态码bash中常用的条件测试有三种:整数测试:数字判断一些命令:#-gt是大于#-lt是小于#-eq是等于#-ne是不等于#-ge是大于等于#le是小于等于INT1=63INT2=77[ $INT1 -eq $INT2 ]文件测试:-e FILE:测试文件是否存在-f.原创 2020-09-20 20:04:11 · 14199 阅读 · 0 评论 -
shell基础--->/dev/null 2>&1
shell中>/dev/null 2>&1背景我们经常能在shell脚本中发现>/dev/null 2>&1这样的语句。以前的我并没有去深入地理解这段命令的作用,照搬照用,直到上周我将这段命令不小心写成了2>&1 >/dev/null,出了一点小问题之后,我才开始去了解这段命令背后的“玄机”。shell重定向介绍就像我们平时写的程序一样,一段程序会处理外部的输入,然后将运算结果输出到指定的位置。在交互式的程序中,输入来自用户的键盘和原创 2020-09-18 16:07:27 · 201 阅读 · 0 评论 -
检查服务状态shell脚本
检查服务状态#!/bin/bashbase_server=(zookeeperkafkamongodbdockerredisetcdkubeletelasticsearchredis@1redis@2redis@3redis@4redis@5redis@6)for bs in ${base_server[*]}; do# `systemctl status $bs |awk -F ':' '{print $2}' | sed -n 3p`#syst.原创 2020-09-18 11:19:04 · 1415 阅读 · 0 评论 -
shell命令组合工具积累:
timeout 1 bash -c 'cat < /dev/null > /dev/tcp/google.com/80'$ echo $?0结果是0就是通结果是其他数字就是不通参考连接:https://stackoverflow.com/questions/4922943/test-if-remote-tcp-port-is-open-from-a-shell-script原创 2020-08-03 18:31:05 · 473 阅读 · 0 评论 -
Supervisor管理自己的服务
Supervisor在CentOS7中默认自带,无需单独安装,使用方便,可以管理本机服务,远程服务,可配置显示页面,可以切割日志使用前先修改配置文件/etc/supervisord.conf,打开注释及修改拉起服务配置目录及文件 1 2 3 # vim /etc/supervisord.conf [include] files =/etc/supervisord.d/*.conf 创建服务的配置,如backend服务..原创 2020-07-14 00:12:30 · 855 阅读 · 0 评论 -
已知病毒处理脚本
近期在环境出现过的4个病毒的检测及处理工具,通过检测特征文件判断,下载附件后可放在任意目录执行。如果有疑似中毒机器可以用这个查一下执行sh virus.sh --help 可以查看使用帮助#!/bin/bash###############################################################File Name: virus.sh#Author: Chen Deyang#Created Time : 2018-12-13 12:30:00#.原创 2020-07-14 00:11:24 · 300 阅读 · 0 评论 -
部署-操作系统】本地yum源搭建
需求:client无法访问互联网。使用server提供的本地yum源,更新本地Centos操作系统到最新操作系统Centos7.6,并安装常用软件。测试主机:server:192.168.211.131 搭建yum仓库用,可以访问互联网。(如果不能访问需要可以访问的服务器上提前下载包)client:192.168.211.132 测试yum客户端,只能访问server端,不能访问互联网。server端更新到最新版本的Centos系统,并下载yum安装包到本地方法一:修改yum配置,保存缓存到本地:原创 2020-07-14 00:07:58 · 698 阅读 · 0 评论 -
转移/home容量到/opt
要求默认空间放到opt目录,很多情况接手的服务器默认还是home目录,可做调整,使用前请自行测试#此脚本将默认划分给/home的磁盘空间划分给/opt#!/bin/sh#author by huanjiming2017/10/18#This script transfers/home space to/optumount /home/if [ $? -ne 0 ];thenecho "/home is not an independent partition"...原创 2020-07-14 00:06:46 · 1511 阅读 · 0 评论 -
OpenSSH怎么更新升级到8.0
1.安装必要组件:yum install -y gcc openssl-devel pam-devel rpm-build2.下载OpenSSH最新版本:https://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/在以上网站找到最新版链接并下载解压wget https://ftp.openbsd.org/pub/OpenBSD/O...原创 2019-05-22 10:55:05 · 20425 阅读 · 0 评论 -
通过shell脚本实现批量添加用户和设置随机密码以及生产环境如何批量添加
这里分两种情况,一种是测试for循环批量添加用户,一个是根据实际生产环境进行批量添加。分别写一下案例如下:1,for添加指定类型用户以及设置随机密码。脚本作用:批量添加user1-10用户并设置随机8位数随机密码#!/bin/bash#test add user and set passwdfor n in `seq 10`douseradd user$n;echo use...原创 2019-05-17 16:43:06 · 2111 阅读 · 0 评论 -
shell脚本中一些特殊符号
这篇文章主要介绍了shell脚本中一些特殊符号,需要的朋友可以参考下在shell中常用的特殊符号罗列如下:# ; ;; . , / \\ 'string'| ! $ ${} $? $$ $*\"string\"* ** ? : ^ $# $@ `command`{} [] [[]] () (())|| && {xx,yy,zz,...}~ ~+ ~- & \...转载 2018-11-12 10:57:55 · 8109 阅读 · 0 评论 -
bash shell中expr命令下几种的使用
https://blog.csdn.net/junjieguo/article/details/7293622转载 2018-11-12 10:42:50 · 608 阅读 · 0 评论