Shell脚本:浅谈 Shell 脚本配置文件格式

开发过程中为了减少 hardcode,不可避免的需要提供配置文件给用户定制。对于高级编程语言来说,因为有丰富的第三方库,可供选择的配置文件格式有很多,比如 xml、jsno、ini、yaml 等等。 key=value 文本格式配置 而对于 linux shell,基本上很难使用前面提到的各种格式。所以在 unix 系统上,很多 shell 脚本的配置文件都是纯粹的 key=value 文本格式,例如绝大多数的开机服务启动脚本、网络配置文件等。 例子 1:ntp 配置文件 $ cat… Read More

HTML特殊字符显示, HTML 字符实体, HTML EntityCode, Character Entities, HTML Entities

HTML字符实体(Character Entities) 有些字符在HTML里有特别的含义,比如小于号<就表示HTML Tag的开始,这个小于号是不显示在我们最终看到的网页里的。那如果我们希望在网页中显示一个小于号,该怎么办呢? 这就要说到HTML字符实体(HTML Character Entities)了。 一个字符实体(Character Entity)分成三部分:第一部分是一个&符号,英文叫ampersand;第二部分是实体(Entity)名字或者是#加上实体(Entity)编号;第三部分是一个分号。 比如,要显示小于号,就可以写&lt;或者&#60;。 用实体(Entity)名字的好处是比较好理解,一看lt,大概就猜出是less than的意思,但是其劣势在于并不是所有的浏览器都支持最新的Entity名字。而实体(Entity)编号,各种浏览器都能处理。 注意:Entity是区分大小写的。   如何显示空格 通常情况下,HTML会自动截去多余的空格。不管你加多少空格,都被看做一个空格。比如你在两个字之间加了10个空格,HTML会截去9个空格,只保留一个。为了在网页中增加空格,你可以使用&nbsp;表示空格。   最常用的字符实体(Character Entities)  … Read More

Shell脚本:实用 Shell 文档

ChinaUnix上大神網中人总结的Shell十三问?,强烈推荐,这本书讲得比较精炼,而且都是一些Shell学习中容易把握不住的一些细节难点。每一问都写得非常精彩。 同样是ChinaUnix上,wingger大神整理的Shell基础二十篇。这份文档涉及的内容比较多,我没记错的话应该有很多命令的用法,而且配备实际使用的例子,对初学者帮助甚大。 Shell脚本专家指南也是一本不可多得的好书,我是之前在学校的时候买的这本书。上面都是作者实际工作中的经验总结,你可以从中学到很多其它书上学不到的实践知识。千万不要被专家两个字吓住了,书名的意思是专家给你总结的学习指南。 注:mingxinglai也在他的博客文章shell脚本学习材料种整理了很多实用的资料。 正则表达式 我个人学习正则表达式是从正则表达式30分钟入门教程开始的,这份文档让我了解了正则表达式的一些基础术语和基本的用法。 Linux下的正则表达式学习相对资源比较丰富,但同样得,因为不同工具的正则表达式或多或少都有一些不同,所以初学起来也比较让人困扰,但是正则表达式的关键在于多学多用。多看看grep/sed/awk中正则的用法,慢慢得就熟悉了。 这里推荐一篇InfoQ上介绍Linux下正则表达式不同流派之前的区别的文章——Linux/Unix工具与正则表达式的POSIX规范,读了它之后你会让你有种豁然开朗的感觉。 Sed与awk 学习Sed和awk命令不得不看的一本书是sed and awk,我目前只看了sed的这部分,它几乎涵盖了sed所有相关的知识,并且将sed行处理的原理讲得很透彻。之前并没有去研讨后半部分,想必应该同前半部分一样精彩。 网上还有一份非常宝贵的sed学习资料——sed1line,我之前也看过这份并且作了篇笔记sed1line 笔记。个人认为这才是sed的精华所在。 最近我在写一系列关于sed&awk这本书的笔记文章,有兴趣的可以看一看Sed&awk笔记。 寻找帮助的社区或者论坛 国内就是ChinaUnix,国外就是StackOverflow和SuperUser等问答社区,当然善用谷歌搜索也是一项基本技能。 资料索引 为了方便,我把一些有用的网站和资料放在这当一个索引: ChinaUnix论坛Shell版… Read More

Shell脚本:Bash function 还能这么玩, Something you didn’t know about functions in bash

今天看到一篇讲 Bash function 的有意思的文章,原文在这里。 在 Bash 中一般我们这么定义一个函数: function name () { ... } 这是非常常见的写法,包括我自己在内,一直把他当做类似 Python、C 等语言一样的函数定义语法。实际上这里{ ... }并不代表函数体或者函数的作用域。它只是代表里面的内容是一组命令的集合。了解这点之后,接下来就有一些比较好玩的写法了。 比如下面的函数作用是测试文件是否存在,这里就没用大括号: function… Read More

MySQL: 修改默认编码, MySQL / MariaDB: Set Character Set and Collation to UTF8, Mysql2::Error: Incorrect string value: ‘\xE2\x80\xA8\x09

发现phpmyadmin默认是latin字符编码,导致某些特殊字符,或者乱码字符无法保存,常有的报错类似: Mysql2::Error: Incorrect string value: '\xE2\x80\xA8\x09   1. 那么首先看一下我们的mysql默认字符是什么:   sudo mysql mysql> status -------------- mysql Ver 14.12 Distrib 5.0.45, for… Read More

Shell:验证json文件各式是否正确, Validate JSON from the command line on Linux, Format JSON with Python

Shell:验证json文件各式是否正确, Validate JSON from the command line on Linux, Format JSON with Python   现在以json为数据传输格式的RESTful接口非常流行。为调试这样的接口,一个常用的办法是使用curl命令: curl http://somehost.com/some-restful-api 对于返回的json字符串,一般在服务端不加处理的情况下,都是没有任何’\t’和’\n’的。为了方便查看,在bash上可以简单地对它进行格式化: curl http://somehost.com/some-restful-api… Read More

Shell:AWK 简明教程, AWK 入门教程, AWK 格式化输出, AWK 过滤记录, AWK 符串匹配, AWK 折分文件, AWK 分割字符串等实例

awk简介 awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。awk的处理文本和数据的方式是这样的,它逐行扫描文件,从第一行到最后一行,寻找匹配的特定模式的行,并在这些行上进行你想要的操作。如果没有指定处理动作,则把匹配的行显示到标准输出(屏幕),如果没有指定模式,则所有被操作所指定的行都被处理。awk分别代表其作者姓氏的第一个字母。因为它的作者是三个人,分别是Alfred Aho、Brian Kernighan、Peter Weinberger。gawk是awk的GNU版本,它提供了Bell实验室和GNU的一些扩展。下面介绍的awk是以GUN的gawk为例的,在linux系统中已把awk链接到gawk,所以下面全部以awk进行介绍。 awk命令格式和选项 awk的语法有两种形式 awk [options] 'script' var=value file(s) awk [options] -f scriptfile var=value file(s) 命令选项 选项… Read More

Shell:SED 简明教程, 流编辑器 SED 全教程, sed入门详解教程

sed 是一个比较古老的,功能十分强大的用于文本处理的流编辑器,加上正则表达式的支持,可以进行大量的复杂的文本编辑操作。sed 本身是一个非常复杂的工具,有专门的书籍讲解 sed 的具体用法,但是个人觉得没有必要去学习它的每个细节,那样没有特别大的实际意义。网上也有很多关于 sed 的教程,我也是抱着学习的心态来学习 sed 的常见的用法,并进行系统的总结,内容基本覆盖了 sed 的大部分的知识点。文中的内容比较简练,加以实际示例来帮助去理解 sed 的使用。 一、写在前边 1、sed介绍 sed 全名为 stream editor,流编辑器,用程序的方式来编辑文本,功能相当的强大。是贝尔实验室的 Lee… Read More