- 浏览: 2509521 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (676)
- linux运维 (157)
- php (65)
- mysql (78)
- nginx (27)
- apche (18)
- framework (6)
- windows (9)
- IDE工具 (23)
- struts2 (7)
- java (13)
- 移动互联网 (14)
- memcache redis (23)
- shell基础/命令/语法 (37)
- shell (50)
- puppet (4)
- C (11)
- python (9)
- 产品经理 (27)
- Sphinx (4)
- svn (12)
- 设计构建 (12)
- 项目管理 (44)
- SEO (1)
- 网站架构 (26)
- 审时度势 (42)
- 网络 (14)
- 激发事业[书&视频] (81)
- 其它 (12)
- 摄影 (8)
- android (21)
最新评论
-
zhongmin2012:
原文的书在哪里
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器 -
renzhengzhi:
你好,请问个问题,从master同步数据到slave的时候,s ...
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器 -
ibc789:
你好,看了你的文章,我想请教个问题, 我在用 redis的时候 ...
redis 的两种持久化方式及原理 -
iijjll:
写得非常好
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器 -
iijjll:
写得非常好
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器
每一个在UNIX/Linux上工作的程序员 可能都擅长 shell脚本编程。 但大家解决问题的方式却不尽相同,这要取决于对专业知识的掌握程度、使用命令的种类、看待问题的方式等等。对于那些处在shell脚本编程初级阶段的程序 员来说,遵循一些恰当的做法可以帮助你更快、更好的学习这些编程技巧。下面,我们就来讨论这些能帮助你学习shell脚本编程的方法吧。
1、多动手
一些人会先通读整本教材后再上机练习。这种方法可能适用于一些人,但我却不太看好它。我的建议是,先学一些最基础的,能够让你开始编码的知识就可以了。之 后,动手写一些简单的程序。一旦你由于知识上的欠缺而不得不停止时,再回到书本上去读你想要了解的那部分,然后继续做你的项目。如此周而复始,不断提高你 的水平。这种边学边做的方法曾让我受益良多。
2、善用命令提示符
有时候,我们写的脚本中有一些错误。我们修改错误,运行脚本,但系统再次报错。并且这个改错报错的过程可能会发生很多次。碰到这些情况,首先需要找到有问 题的行或命令,这可以通过一些调试语句来轻松做到。一旦发现这条语句,尝试在命令提示符下执行相同的语句。如果它在命令提示符下开始正常运行,你就可以容 易的推断出它不能正常运行的原因了。可能是由于某些错误输入的命令,或者是某些环境变量不匹配,或者是从不同的地方引用了某个二进制文件等等。这种方法会 让调试变得简单易行。
3、考虑问题要全面
现在我们来看个问题。你想到了关于某个问题的解决方案,但这个解决方案只适用于处理小型文件。可是当处理比较大的文件时,你该怎么办?举个例子,我们想要得到一个文件的第一行内容:
|
sed -n '1p' file
|
这条语句当然会给出你想要的第一行内容。可是如果处理的文件包含上百万条记录呢?尽管上面的那条sed命令可以输出文件的第一行内容,但是想要处理大型文件一定会带来性能上的问题。
解决办法:
|
sed -n '1p;1q' file
|
这条命令将只输出第一行,同时退出程序。
4、经常尝试不同的方法
你在写脚本时碰到一个问题,然后你找到了一种独特的解决方法。下一次你偶然又碰到类似的问题,这时,不要再用以前你用过的方法来解决。试试另外一种方法吧。如果某一天再次遇到这种情况,再试试其它方法。
例如:
|
if [ $? -eq 0 ]
then
echo "Success"
fi
|
另一种方法:
|
[ $? -eq 0 ] && echo "Success"
|
现在你可能会明白这个博客里会有那么多以“……的不同解决方法”为题的文章了吧。所有这些文章的目的都是用来帮助订阅这个博客的开发者开阔视野,打开思路。
5、快速编码
脚本可以节省我们的时间,提高生产力。可是,难道我们花在写脚本和测试上的时间还少吗?我们想写一个脚本,于是打开一个文件,写下代码,保存文件, 之后运行脚本,系统报错,我们再打开文件修改、保存、运行……在这个过程中会花费很多时间。在此前的一篇题为《如何快速写shell脚本》的文章里,你可 以学会如何编写脚本和测试正在运行中的脚本,而不用再回顾命令提示符。这些方法可以加快编码的速度。当我写脚本的时候,我总是使用这些方法。而且我可以很 肯定的说,它们帮我节约了不少时间。
6、经常使用内部命令
无论碰到哪种情况,请尽量考虑使用内部命令而不是外部命令。在此前的一篇题为《内部命令和外部命令》的文章里,我们可以看到二者间的差异。用内部命令对你 永远都有好处。根据正在处理的输入文件的大小,内部命令可以在性能方面为你节省很多。虽然你并不总是有这样选择内部命令抑或外部命令的机会,但在某些情况 下,你一定能做出正确的选择。
7、没有必要使用cat命令
这是我们经常在论坛里讨论的话题之一。没有必要使用cat命令指的是在有些时候,我们会发现根本没有必要使用cat命令。有时候,使用了多余的cat命令会让你的代码看起来很丑陋,而且还会带来性能上的问题。
例如:
|
$ cat /etc/passwd | grep guru
|
正确的方法应该是:
|
$ grep guru /etc/passwd
|
8、仔细阅读错误信息
程序员常犯的一个错误是:当我们敲入的命令报错后,我们中的大多数人只是对错误信息一瞥而过,而不会去认真的读一读。很多时候,错误信息里就包含了解决办 法。更重要的是,有时候我们修改了某个错误并再次运行后,系统依旧会报错。然后我们再次修改,但系统再次报错。这可能会持续很长时间。但实际上,旧的错误 可能已经被纠正,只是由于出现了其它一些新错误才导致系统再次报错。而我们依旧在怀疑为什么修改好的代码依然不能正常运行。因此,请你养成仔细阅读错误信 息的习惯。
9、尽量避免臃肿的命令
你正在尝试去从一个大的文件中筛选某条信息。接下来你可能写一大堆命令来实现这一功能。可是,尽管你将得到正确的结果,你写的命令却不够好,且晦涩难懂。因此,我们应该尽量避免这种情况发生。下面这个例子就是代码优化的好例子。
例如:检索用户ID值为502的用户名。
下面的命令不好:
|
$ grep 502 /etc/passwd | cut -d: -f1
|
这条命令也不够好:
|
$ grep 502 /etc/passwd | awk -F ":" '{print $1}'
|
这才是一条好的命令:
|
$ awk -F ":" '$3==502{print $1}' /etc/passwd
|
正如以上示例,用一条简单的awk命令就可以完成检索任务。
10、别吝啬添加注释
写了一份脚本,一两个星期后,你再次打开脚本文件,如果没有注释在里面的话,你可能会花上很多时间才能理解这些代码。虽然代码是我们自己写的,但这依旧会 浪费我们很多的时间。脚本是用来节省时间的,因此,我们没有理由浪费时间去理解这些用来节省时间的文件。所以,请养成在脚本中添加注释的好习惯。 这些注释不必很详细,能让自己或别人读懂就行。
发表评论
-
Linux运维常用命令 (转载)
2013-01-31 10:23 24811 删除0字节文件find-type f - ... -
[汇总]shell笔试
2013-01-24 17:32 3316http://president.blog.51cto.co ... -
检测 mysql 的sleep进程数
2013-01-04 14:13 1592#!/bin/sh 注:这个脚 ... -
【汇总】shell show收藏
2012-11-29 14:03 1220================== shell从文本取对应的 ... -
Shell中脚本变量和函数变量的作用域
2012-11-28 16:21 1333在shell中定义函 ... -
开发自动化系统管理脚本(界面式shell)
2012-11-28 16:00 1288此工具具有如下功能: (一)用户管理 1、修改root密码 ... -
你可能不知道的Shell
2012-11-26 13:41 969!$ !$是一个特殊的环境变量,它代表了上一个命令的 ... -
批量修改远程linux服务器密码
2012-11-14 17:49 1497#!/bin/bash # BY kerryhu # MA ... -
清理/var/spool/clientmqueue目录下文件
2012-11-08 10:52 1097今天遇到和原文作者完全一样的情况:有一台机器需要改一下cron ... -
read case
2012-11-01 16:55 916read -p "请输入安装程序编号:" ... -
shell实现将2个文件逐行交替存入一个文件中
2012-10-24 15:31 1571#!/bin/bash P ... -
导出bin log时间段脚本datarecover.sh
2012-09-06 13:34 1182修改 _binlogdir='/data/mysql/m ... -
增量文件内容other.php
2012-08-31 16:13 1150#增量文件内容other.php i ... -
Linux一个简单的每秒执行命令shell脚本
2012-08-17 15:02 3255迁移了一台服务器,发现其中一个项目的数据没有更新,查询原服务器 ... -
[sh]php进程数过载后,平滑重启php
2012-07-27 11:24 2933#vim /usr/local/shell ... -
[sh]每天推送本地日志到log服务器
2012-07-27 11:24 1390#vim /u1/scp_all_logs ... -
慢查询日志分析脚本Mysql_slow_log_parser.pl
2012-07-03 13:43 1463使用方式: ./Mysql_slow_log_parser ... -
UNIX高手的20个习惯
2012-06-29 12:02 13801. 在单个命令中创建目 ... -
【书】linux shell 脚本攻略
2012-06-27 17:39 1856转载:http://jackyrong.iteye.com/b ... -
Linux磁盘空间监控的Shell脚本
2012-06-27 16:24 2784偶尔的测试失败,找了会儿原因才发现是磁盘空间不足引起的,所以就 ...
相关推荐
毕竟shell脚本这个东西不算是正经的编程语言,他更像是一个工具,用来杂糅不同的程序供我们调用。因此很多人在写的时候也是想到哪里写到哪里,基本上都像是一段超长的main函数,不忍直视。
Shell脚本编程100例。 融汇 shell 脚本知识点,集大成之作。 本书实在是学习、进修、面试、居家旅行必备精品!
最实用的Linux 命令行和shell脚本编程宝典,是最常用的参考手册。
Linux命令与shell 脚本大全,内容丰富,包含了shell脚本的技术命令 以及大量的实践内容
Linux 命令行和shell脚本编程宝典(清晰绝对完整版).pdf,绝对完整的版本,清晰度比160多M的还要好一些,有完整书签,在CSDN上花8分下载了4个part,结果解压不了,超级郁闷。辛苦找到的这个真正完整的可以分享给大家...
用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操作。在Linux GUI日益完善的今天,在系统管理等领域,Shell编程仍然起着不可忽视的作用。深入地了解和熟练地掌握Shell编程,是每一个Linux用户的...
Shell脚本编程.pdf
Shell脚本编程详解 Shell命令行的运行 编写、修改权限和执行Shell程序的步骤 在Shell程序中使用参数和变量 表达式比较、循环结构语句和条件结构语句 在Shell程序中使用函数和调用其他Shell程序
linux脚本+命令总结
LinuxShell脚本编程实例.doc
了如何发送邮件,如何构建一个菜单,不过 还有很多其他的用法。 本章将介绍以下内容: • 快速创建一个文件。 • 自动进入菜单。 • ftp传输。 • 连接至其他应用系统。 该命令的一般形式为: command t e x t w o ...
linux shell 脚本编程 linux shell 脚本编程 linux shell 脚本编程
LinuxShell脚本编程实例.pdf
这是shell中文chm文档,可供运维人员以及相关人员下载参考使用,详细的描述了shell开发中使用的各种指令和函数。
资源名称:Linux Shell脚本学习基础视频资源目录:【】11a00d99b60c4e2eba3440b8aa3a6bdd【】linux_shell脚本编程_01认识shell,如何编写shell脚本和执行【】linux_shell脚本编程_02vivim简单的常用操作【】linux_...
精通UNIX Shell脚本编程 作者:(美)Randal K.Michael著;詹文军,邓波等译 页数:502 【作 者】(美)Randal K.Michael著;詹文军,邓波等译 【形态项】 502 ; 26cm 【出版项】 北京市:电子工业出版社 , 2005....
shell sed awk作为shell编程的很好入门级文档,我开始学习的时候就是这个文档,现在遇到新手我就会推荐这个文档。
Shell也是一门编程语言,即shell脚本,shell是解释执行的脚本语言,可直接调用linux命令。 一个系统可以存在多个shell,可以通过cat /etc/shells命令查看系统中安装的shell,不同的shell可能支持的命令语法是不相同...
高级shell脚本编程指南.zip ,tuijianxuexi.