前言 学习shell脚本编程需要的知识储备: vi/vim编辑器命令 vimrc设置要熟练 基础命令,100多个要熟练 基础和常用的网络服务命令要会:nfs . rsync. inotify . lanmp . sersync  .ssh  key 一.shell脚本概念及示例 1.什么是shell Shell是一个命令解释器,它在操作吸引的最外层,负责直接与用户对话,把用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果,输出到屏幕返回给用户.这种对话方式可以是交互的方式(从键盘输入命…
SHELL脚本编程基础知识 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Linux之父Linus有一句话很经典:"Talk is cheap, show me the code",虽然我们是一枚小小的运维工程师,但工作中确实是有一些任务是需要写成脚本方式来实现的.在招聘面试过程中,要求运维人员会shell编程是必须的,甚至有的公司得要求运维会Java,Python或者Golang. 一.编程基础概念 1>.程序相关概念 程序: 算法+数据结构 数据: 是程序…
原文 (C#)Windows Shell 外壳编程系列8 - 同后缀名不同图标? (本系列文章由柠檬的(lc_mtt)原创,转载请注明出处,谢谢-) 接上一节:(C#)Windows Shell 外壳编程系列7 - ContextMenu 注册文件右键菜单 关于注册 动态库必须注册才能使用.除了使用 regasm 来注册 DLL 以外,还应该在代码中增加 RegisterServer 和 UnregisterServer 方法,以指导 DLL 注册时,在 Windows 注册表中增加什么键.关于…
原文 (C#)Windows Shell 外壳编程系列9 - QueryInfo 扩展提示 (本系列文章由柠檬的(lc_mtt)原创,转载请注明出处,谢谢-) 接上一节:(C#)Windows Shell 外壳编程系列8 - 同后缀名不同图标? QueryInfo扩展 活动桌面引入一项新特性,当你在某些特定对象上旋停鼠标时,工具提示将显示它们的描述.我们可以使用 QueryInfo 扩展为Shell中的其它对象提供自定义的工具提示.如下图: 事实上,这个功能实现比前两个 Shell 扩展更简单,…
原文 (C#)Windows Shell 外壳编程系列7 - ContextMenu 注册文件右键菜单 (本系列文章由柠檬的(lc_mtt)原创,转载请注明出处,谢谢-) 接上一节:(C#)Windows Shell 外壳编程系列6 - 执行 从本节起,我所要讲述的是对 Windows 系统的“Shell 扩展”.“Shell 扩展”从字面上分两个部分:Shell 与 Extension.Shell 指 Windows Explorer,而Extension 则指由你编写的当某一预先约定好的事件…
原文(C#)Windows Shell 外壳编程系列6 - 执行 (本系列文章由柠檬的(lc_mtt)原创,转载请注明出处,谢谢-) 接上一节:(C#)Windows Shell 外壳编程系列5 - 获取图标 执行 许多人都知道 ShellExecute ,用于执行一个外部命令.但对于  IShellFoloder 对象来说,它的执行命令,都在它的 ContextMenu 里面了.记得前几节说过如何直接调用 ContextMenu 里的项,因此,执行一个 IShellFoloder,也无非是调用…
(本系列文章由柠檬的(lc_mtt)原创,转载请注明出处,谢谢-) 接上一节:(C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令 有关 PIDL  PIDL亦有“绝对路径”与“相对路径”的概念.表示“相对路径”的PIDL(本文简称为“相对PIDL”)只有一个ITEMIDLIST结构的元素,用于标识相对于父文件夹的“路径”:表示“绝对路径”的PIDL(简称为“绝对PIDL”)有若干个ITEMIDLIST结构的元素,第一个元素表示外…
(本系列文章由柠檬的(lc_mtt)原创,转载请注明出处,谢谢-) 接上一节:(C#)Windows Shell 外壳编程系列3 - 上下文菜单(iContextMenu)(一)右键菜单 上一节说到如何弹出 IShellFolder 的上下文菜单,也就是 IContextMenu.有时候我们需要在这个菜单上面,加入一些属于自己的菜单项.举个例子,你打开资源管理器,查看左边目录树的右键菜单,会发现顶层多了一个折叠/展开的菜单项.好,我们也动手来加入这个菜单项. 修改例子3,我们找到 QueryCo…
(本系列文章由柠檬的(lc_mtt)原创,转载请注明出处,谢谢-) 接上一篇:(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 让我们详细解释一下 Shell 编程中最基本的一些函数.结构体和枚举. SHGetDesktopFolder 获取桌面的 IShellFolder 接口 [DllImport("shell32.dll")]        public static extern Int32 SHGetDesktopFolder(out IntPtr…
(本系列文章由柠檬的(lc_mtt)原创,转载请注明出处,谢谢-) 接上一节:(C#)Windows Shell 外壳编程系列2 - 解释,从“桌面”开始展开 这里解释上一节中获取名称的方法 GetDisplayNameOf 定义: void GetDisplayNameOf(            IntPtr pidl,            SHGNO uFlags,            IntPtr lpName); 该方法是用来转换PIDL成为可显示的名称字符串.PIDL必须是相对于…
1.开头指定脚本解释器 #!/bin/sh或#!/bin/bash 2.开头加版本版权信息 #Date #Author #Mail #Function #Version 提示:可配置vim编辑文件时自动加上以上信息,方法是修改~/.vimrc配置文件 3.脚本中不用中文注释 尽量用英文注释,防止本机或切换系统环境后出现中文乱码的困扰 4.尽量以.sh为扩展名 Script-name.sh 5.代码书写优秀习惯 1)成对的内容一次性写出来,防止遗漏:{}   []   ‘’   “” 2)[]中括…
用户交互 在<学习笔记04>中我们有提到位置参数,位置参数是用来向脚本传递参数的一种方式.还有一种方式,是read命令. [root@c7-server ~]# read name alongdidi [root@c7-server ~]# echo $name alongdidi read命令可以实现从STDIN中读取数据存入用户指定的变量中. 可以多变量赋值. [root@c7-server ~]# read a b tom jerry [root@c7-server ~]# echo $…
一些控制脚本的方式:向脚本发送信号.修改脚本优先级,在脚本运行时切换到运行模式 16.1 处理信号 linux利用信号与运行在系统中的进程进行通信. 也可以通过对脚本进行编程,使其在收到特定信号时执行某些命令.从而控制脚本的操作. 16.1.1 重温Linux信号 比如下面这些常见的: 信号   值         描述 1    SIGUP     挂起进程 2    SIGINT     终止进程 3    SIGOUT    停止进程 9    SIGKILL    无条件终止进程 15 …
11.1使用多个命令 $date;who   //  命令列表,加入分号就可以,这样会依次执行.参见5.2.1节 注意区分$(date;who),这个是进程列表,会生成一个子shell来执行 Shell脚本的关键在于输入多个命令并处理每个命令的结果,甚至需要将一个命令的结果传给另外一个命令. Shell可以让你将多个命令串起来,一次性完成. 上面的date;who可以写入一个文件,这样就不用在命令行敲命令了,运行这个文本文件就好了. 11.2 创建shell脚本文件 第一行必须这样:指定要使用的…
1 - 基础,浏览一个文件夹 我们知道,在win32中是以外壳名字空间的形式来组织文件系统的,在外壳名字空间里的每一个对象(注)都实现了一个IShellFolder的接口,通过这个接口我们可以直接查询或间接得到其他相关的接口.(注:这里的对象指的是外壳名字空间中的一个节点,对象有可能是一个文件夹,有可能是一个文件,也有可能是一个虚拟文件夹,例如:我的电脑,网上邻居,控制面板等) 在C#中,我们这样定义 IShellFolder 接口: using System;using System.Coll…
1. echo -n str        打印不换行 2. 反引号来圈住命令传入变量 eg: 生成日志文件: #!/bin/bash today=`date +%y%m%d` ls /usr/bin -al > log.$today 3. 重定向:command operator file >: 命令内容重定向到文件中 <: 文件内容重定向到命令参数里 <<: 命令行输入内容重定向到命令参数里.有开头和结尾标识. eg: 4. 管道: | : 左边命令输出结果直接重定向到右…
一个比较实用的连接函数,支持host为域名. #include <netdb.h> #include <sys/socket.h> #include <sys/types.h> #include <unistd.h> #include <fcntl.h> #include <arpa/inet.h> #include <netinet/tcp.h> #include <iostream> using names…
CommonJS Module 规范 CommonJS 的模块化规范描述在Modules/1.1.1 中 目前实现此规格的包有: Yabble,CouchDB,Narwhal (0.2), Wakanda, TeaJS (formerly v8cgi), CommonScript, PINF JS Loader, SeaJS, ArangoDB, sorrow.js 注意,这里并没有找到 requireJS,因为它使用的是AMD规范. 此规范定义的具体内容包括: Requirerequire是一…
我自己接触Linux主要是大学学习的Turbolinux --> 根据<鸟哥的Linux私房菜:基础篇>(第三版) --> 马哥的就业班课程.给我的感觉是这些课程对于bash的讲解,理论上是不够的,但是限于时间.篇幅和精力,确实无法讲解的足够深入.在接触了骏马金龙的博客以及bash官方站点后,就会理解骏马兄说的“平常我们学的只是bash的形,而不是bash的神”.最近在写这个系列的学习笔记,经常查阅bash官方手册,真的是有种醍醐灌顶的感觉,但是限于能力和进度问题,有些问题暂且无法…
shell编程系列26--大型脚本工具开发实战 大型脚本工具开发实战 拆分脚本功能,抽象函数 .function get_all_group 返回进程组列表字符串 .function get_all_process 返回进程名列表字符串"nginx httpd mysql datanode" .function get_process_info 返回进程详细信息列表字符串,详细信息包括:运行状态.PID.CPU.MEM.启动时间 注:该函数可以接收一个参数,参数为进程名称 .funct…
shell编程系列24--shell操作数据库实战之利用shell脚本将文本数据导入到mysql中 利用shell脚本将文本数据导入到mysql中 需求1:处理文本中的数据,将文本中的数据插入到mysql中 jerry -- male mike -- female tracy -- male kobe -- male allen -- female curry -- male tom -- female # 创建表结构和student一样结构的student1表 MariaDB [school]…
shell编程系列22--shell操作数据库实战之shell脚本与MySQL数据库交互(增删改查) Shell脚本与MySQL数据库交互(增删改查) # 环境准备:安装mariadb 数据库 [root@localhost shell]# yum install mariadb mariadb-server mariadb-libs -y [root@localhost shell]# systemctl start mariadb [root@localhost shell]# netsta…
shell编程系列1--shell脚本中的变量替换 变量替换总结: .${变量#匹配规则} # 从头开始匹配,最短删除 .${变量##匹配规则} # 从头开始匹配,最长删除(贪婪模式) .${变量%匹配规则} # 从尾开始匹配,最短删除 .${变量%%匹配规则} # 从尾开始匹配,最长删除(贪婪模式) .${变量/旧字符串/新字符串} # 替换变量内的旧字符串为新字符串,只替换第一个 .${变量//旧字符串/新字符串} # 替换变量内的旧字符串为新字符串,全部替换 variable_1="i l…
bash脚本编程:     脚本程序:解释器解释执行: 首先得理清一些琐碎的知识点,我尽量把我所学的帮朋友一起梳理一下 编程环境:(我会在接下来的篇章,图文例子三结合的方式带大家一起学习)              流程控制语句:                  顺序执行:              循环执行:                  选择执行: 2.         bash变量是弱类型:默认字符型:           变量引用:${VAR_NAME}         引号:  …
(这些往往是经常用到,但是各种网络上的材料都语焉不详的东西,个人认为比较有用) 七种文件类型 d            目录                                                       l             符号链接 s             套接字文件                                           b            块设备文件 c            字符设备文件              …
第12章 Shell脚本编程   l  Shell命令行的执行 l  编写.改动权限和运行Shell程序的步骤 l  在Shell程序中使用參数和变量 l  表达式比較.循环结构语句和条件结构语句 l  在Shell程序中使用函数和调用其它Shell程序 12-1   Shell命令行书写规则 u  Shell命令行的书写规则 对Shell命令行基本功能的理解有助于编写更好的Shell程序,在执行Shell命令时多个命令能够在一个命令行上执行,但此时要使用分号(:)分隔命令,比如: [root@…
(这些往往是经常用到,但是各种网络上的材料都语焉不详的东西,个人认为比较有用) 七种文件类型 d            目录                                                       l             符号链接 s             套接字文件                                           b            块设备文件 c            字符设备文件              …
来源:http://mprc.pku.edu.cn/mentors/training/TrainingCourses/material/ShellProgramming.HTM#_Toc37518085    TOC \o "1-4" \h \z Shell脚本编程的常识... PAGEREF _Toc37518060 \h 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000D0000005F0054006F0063003300370…
导读 Linux基金会发起了LFCS认证(Linux 基金会认证系统管理员)Linux Foundation Certified Sysadmin,这是一个全新的认证体系,旨在让世界各地的人能够参与到中等水平的Linux系统的基本管理操作的认证考试中去,这项认证包括:维护正在运行的系统和服务的能力.全面监控和分析的能力以及何时向上游团队请求支持的决策能力. Linux 基金会认证程序. http://www.linuxprobe.com/wp-content/uploads/2016/07/sh…
shell编程系列25--shell操作数据库实战之备份MySQL数据,并通过FTP将其传输到远端主机 备份mysql中的库或者表 mysqldump 常用参数详解: -u 用户名 -p 密码 -h 服务器ip地址 -d 等价于--no-data 只导出表结构 -t 等价于--no-create-info 只导出数据,不导出建表语句 -A 等价于--all-databases -B 等价于--databases 导出一个或多个数据库 需求:将school中的score表备份,并且将备份数据通过f…