shell脚本

linux shell 之在线文本编辑sed

百般思念 提交于 2020-01-01 13:36:36
sed命令 sed是一种文本编辑命令,读取文件数据到缓冲区,然后通过sed编辑文本,在输出到指定的文件,sed 是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,sed按行处理文本数据,不断重复,直到文件末尾。可同时处理多个文件; 先讲个实例,大家看到如下一堆字符串,这是有多个sed命令表达式组合成的命令,|表示多个表达式的组合,\表示换行,冒号中s表示替换,g表示全部替换;$0是第一个输入参数,是一个文件名称,第一行意思是读取文件中的数据,将IVMS_SERVICE=0全部替换成IVMS_SERVICE=1,这里只是字符替换;第二行是将变量$SVC_PROG全部替换掉IVMS_SERVICE_PROG,第四行是先替换,然后将缓冲区中的数据输入到变量$SVC_SYS_FILE标记的文件中; # create service bash sed -e "s%IVMS_SERVICE=0%IVMS_SERVICE=1%g" $0 | \ sed -e "s%IVMS_SERVICE_PROG%$SVC_PROG%g" | \ sed -e "s%IVMS_SERVICE_NAME%$SVC_NAME%g" | \ sed -e "s%IVMS_SERVICE_DIR%$SVC_DIR%g" > $SVC_SYS_FILE sed的选项、命令、替换标记 命令格式

shell脚本实例

落爺英雄遲暮 提交于 2020-01-01 08:38:43
1.打印形状 1 #!/bin/bash 2 # 打印等腰三角形 3 read -p "Please input the length: " n 4 for i in `seq 1 $n` 5 do 6 for ((j=$n;j>i;j--)) 7 do 8 echo -n " " 9 done 10 11 for m in `seq 1 $i` 12 do 13 echo -n "* " 14 done 15 echo 16 done 来源: https://www.cnblogs.com/kumunotes/p/12128204.html

CentOS7 64位下MySQL5.7安装与配置(YUM)

天大地大妈咪最大 提交于 2020-01-01 00:32:09
安装环境: CentOS 7 64位 MINI版,安装MySQL5.7 1、配置YUM源 在MySQL官网中下载YUM源rpm安装包:http://dev.mysql.com/downloads/repo/yum/ # 下载mysql源安装包 shell> wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm # 安装mysql源 shell> yum localinstall mysql57-community-release-el7-8.noarch.rpm 检查mysql源是否安装成功 shell> yum repolist enabled | grep "mysql.*-community.*" 看到上图所示表示安装成功。 可以修改 vim /etc/yum.repos.d/mysql-community.repo 源,改变默认安装的mysql版本。比如要安装5.6版本,将5.7源的enabled=1改成enabled=0。然后再将5.6源的enabled=0改成enabled=1即可。改完之后的效果如下所示: 2、安装MySQL shell> yum install mysql-community-server 3、启动MySQL服务 shell> systemctl start

Shell标准输出、标准错误 >/dev/null 2>&1

纵饮孤独 提交于 2019-12-30 19:17:26
eg:sudo kill -9 ps -elf |grep -v grep|grep $1|awk '{print $4}' 1>/dev/null 2>/dev/null 命令的结果可以通过%>的形式来定义输出 /dev/null 代表空设备文件 代表重定向到哪里,例如:echo “123” > /home/123.txt 1 表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于"1>/dev/null" 2 表示stderr标准错误 & 表示等同于的意思,2>&1,表示2的输出重定向等同于1 那么本文标题的语句: 1>/dev/null 首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,说白了就是不显示任何信息。 2>&1 接着,标准错误输出重定向等同于 标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。 ///////////////////// 脚本只使用标准输入、标准输出和标准错误 Shell会自动为我们打开和关闭0、1、2这三个文件描述符,我们不需要显式地打开或关闭它们。标准输入是命令的输入,默认指向键盘;标准输出是命令的输出,默认指向屏幕;标准错误是命令错误信息的输出,默认指向屏幕。 如果没有显式地进行重定向,命令通过文件描述符0从屏幕读取输入,通过文件描述符1和2将输出和错误信息输出到屏幕

Linux架构

我的梦境 提交于 2019-12-30 05:27:07
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢! 我以下图为基础,说明Linux的架构(architecture)。(该图参考《 Advanced Programming in Unix Environment 》) 最内层是硬件,最外层是用户常用的应用,比如说firefox浏览器,evolution查看邮件,一个计算流体模型等等。 硬件 是物质基础,而 应用 提供服务。但在两者之间,还要经过一番周折。 还记得 Linux启动 。Linux首先启动 内核 (kernel),内核是一段计算机程序,这个程序直接管理管理硬件,包括CPU、内存空间、硬盘接口、网络接口等等。所有的计算机操作都要通过内核传递给硬件。 为了方便调用内核,Linux将内核的功能接口制作成 系统调用 (system call)。系统调用看起来就像C语言的函数。你可以在程序中直接调用。Linux系统有两百多个这样的系统调用。用户不需要了解内核的复杂结构,就可以使用内核。系统调用是操作系统的最小功能单位。一个操作系统,以及基于操作系统的应用,都不可能实现超越系统调用的功能。一个系统调用函数就像是汉字的一个 笔画 。任何一个汉字都要由基本的笔画(点、横、撇等等)构成。我不能臆造笔画。 在命令行中输入 $man 2 syscalls 可以查看所有的系统调用

SHELL编程基础(一)

给你一囗甜甜゛ 提交于 2019-12-30 00:56:22
SHELL编程基础 shell分登录shell,交互式非登录shell,还有非交互式shell。 登录式shell属于交互式shell,相关执行文件是etc/profile 交互式非登录shell中并不执行初始化文件中的命令,然而交互式非登录shell从登录shell中继承了由这些初始化文件设置的shell变量。 非交互式shell并不执行初始化文件中的命令,然而交互式非登录shell从登录shell中继承了由这些初始化文件设置的shell变量。 子shell继承了那些被输出的变量。 #Source global definitions if[ -f /etc/bashrc ]; then ./etc/bashrc fi 用户常用的初始化文件由.bash_profile,.bashrc 编辑完.bashrc这类的初始化文件后,没必要重启,用内置命令”.”或source即可。也就是说,可以用”.”或source命令来运行任何shell脚本,而不仅仅是初始化文件。 1、内置符号 ()子shell $()命令替换 (())算术表达式计算,let同义词,当被括起来的值中包括等号时使用 $(())算术扩展(不适用于括起来的值中包括等号的情况) []test命令 [[]]条件表达式,类似于[],但添加了字符串比较。 2、通配符 * ? [xxx],[x-x] 转义字符\x,消除字符的特殊含义

shell小脚本3

送分小仙女□ 提交于 2019-12-29 21:46:11
1 编写脚本,接受二个位置参数,magedu和/www,判断系统是否有magedu,如果没有则自动创建magedu用户,并自动设置家目录为/www #!/bin/bash #DATE 2019.12.29 #Name useradd.sh user= $1 path= $2 [ $ # -ne 2 ] && echo "Usage: $0 user path, the example: sh useradd.sh test /www " && exit 1 if id $user &> / dev / null ; then echo " $user is exist" exit 1 else useradd - m - d $path $user [ $? -eq 0 ] && echo " $user create sucess" fi 2 当a.txt里出现top时候就退出tail,这个命令用于实时监控并过滤log是否出现了某条记录。 tail - f a . txt | sed '/^top$/ q' 3 实时查看本机网络服务的活动状态。 lsof –i 4 这行脚本能输出你最常用的十条命令 history | awk '{CMD[$2]++;count++;} END { for (a in CMD )print CMD[a] " " CMD[a]/count*100 "

Android Debug Bridge(adb)

有些话、适合烂在心里 提交于 2019-12-28 17:39:44
Adb google官方文档翻译,源文档地址如下 https://developer.android.google.cn/studio/command-line/adb Android Debug Bridge(adb) Android调试桥(adb)是一种多功能的命令行工具,可让您与设备进行通信。adb命令可促进各种设备操作,例如安装和调试应用程序,并提供对Unix shell的访问,您可使用该shell在设备上运行各种命令。它是一个客户端服务器程序,包括三个组件: 客户端 ,发送命令。客户端在您的开发计算机上运行。您可以通过发出adb命令从命令行终端调用客户端。 守护程序(adbd) ,它在设备上运行命令。守护程序在每个设备上作为后台进程运行。 服务器 ,管理客户端和守护程序之间的通信。服务器在开发计算机上作为后台进程运行。 adb 包含在Android SDK平台工具包中。您可以使用 SDK Manager 下载该软件包,然后将其安装在 android_sdk/platform-tools/ 。或者,如果您需要独立的Android SDK平台工具包,则可以 在此处下载 。 有关连接设备以在ADB上使用的信息,包括如何使用连接助手解决常见问题的信息,请参阅 在硬件设备上运行应用程序 。 adb 如何工作 启动adb客户端时,客户端首先检查是否已在运行adb服务器进程。如果没有

shell脚本中if的“-e,-d,-f”

假如想象 提交于 2019-12-28 05:56:30
文件表达式 -e filename 如果 filename存在,则为真 -d filename 如果 filename为目录,则为真 -f filename 如果 filename为常规文件,则为真 -L filename 如果 filename为符号链接,则为真 -r filename 如果 filename可读,则为真 -w filename 如果 filename可写,则为真 -x filename 如果 filename可执行,则为真 -s filename 如果文件长度不为0,则为真 -h filename 如果文件是软链接,则为真 filename1 -nt filename2 如果 filename1比 filename2新,则为真。 filename1 -ot filename2 如果 filename1比 filename2旧,则为真。 整数变量表达式 -eq 等于 -ne 不等于 -gt 大于 -ge 大于等于 -lt 小于 -le 小于等于 字符串变量表达式 If [ $a = $b ] 如果string1等于string2,则为真 字符串允许使用赋值号做等号 if [ $string1 != $string2 ] 如果string1不等于string2,则为真 if [ -n $string ] 如果string 非空(非0),返回0(true) if [

Linux上安装MySQL

别说谁变了你拦得住时间么 提交于 2019-12-28 05:39:59
1.1. 准备工作 Linux 使用的版本是 centos 7, 为方便起见,先把防火墙关闭,配置好网络,在安装部分,会分成两部分讲,首先讲单实例安装,也就是一台服务器上就装一个 mysql ,接下来就多实例安装,在一个服务器上安装 2 个甚至多个 mysql. 1.2. 单实例安装 cp /soft/mysql-5.7.9-linux-glibc2.5-x86_64.tar.gz /usr/local/ 解压 mysql 到 /usr/local 目录 解压: tar -zxvf mysql-5.7.9-linux-glibc2.5-x86_64.tar.gz 安装需要的依赖 yum install -y libaio 具体安装 shell> groupadd mysql shell> useradd -r -g mysql mysql shell> cd /usr/local shell> tar zxvf /path/to/mysql-VERSION-OS.tar.gz shell> ln -s full-path-to-mysql-VERSION-OS mysql shell> cd mysql shell> mkdir mysql-files shell> chmod 770 mysql-files shell> chown -R mysql . shell> chgrp