仓酷云

标题: Linux制作之简便的bash编程技能仓酷云 [打印本页]

作者: 谁可相欹    时间: 2015-1-18 11:26
标题: Linux制作之简便的bash编程技能仓酷云
使用gcc或g++进行编译,使用gdb进行调试;
上面这几条是我本人在写shell代码的时分,对照喜好的几种写法,举一反三。
1)反省命令实行是不是乐成
第一种写法,对照罕见:
  1. echoabcdee|grep-qabcdif[$?-eq0];thenecho"Found"elseecho"Notfound"fi
复制代码
简便的写法:
  1. ifechoabcdee|grep-qabc;thenecho"Found"elseecho"Notfound"fi
复制代码
固然你也能够不要if/else,不外如许可读性对照差:
  1. [SunNov0405:58AM][kodango@devops]~/workspace$echoabcdee|grep-qabc&&echo"Found"||echo"Notfound"Found
复制代码
2)将尺度输入与尺度毛病输入重定向到/dev/null
第一种写法,对照罕见:
  1. grep"abc"test.txt1>/dev/null2>&1
复制代码
罕见的毛病写法:
  1. grep"abc"test.txt2>&11>/dev/null
复制代码
简便的写法:
  1. grep"abc"test.txt&>/dev/null
复制代码
3)awk的利用
举一个实践的例子,猎取XenDomU的id。
罕见的写法:
  1. sudoxmli|grepvm_name|awk{print$2}
复制代码
简便的写法:
  1. sudoxmli|awk/vm_name/{print$2}
复制代码
4)将一个文本的一切行用逗号毗连起来
假定文件内容以下所示:
  1. [SatNov0310:04PM][kodango@devops]~/workspace$cat/tmp/test.txt123
复制代码
利用Sed命令:
  1. [SatNov0310:14PM][kodango@devops]~/workspace$sed:a;$!N;s/
  2. /,/;ta/tmp/test.txt1,2,3
复制代码
简便的写法:
  1. ifechoabcdee|grep-qabc;thenecho"Found"elseecho"Notfound"fi0
复制代码
5)过滤反复行
假定文件内容以下所示:
  1. ifechoabcdee|grep-qabc;thenecho"Found"elseecho"Notfound"fi1
复制代码
经常使用的办法:
  1. ifechoabcdee|grep-qabc;thenecho"Found"elseecho"Notfound"fi2
复制代码
复杂的写法:
  1. ifechoabcdee|grep-qabc;thenecho"Found"elseecho"Notfound"fi3
复制代码
6)grep查找单词
假定一个文本的每行是一个ip地点,比方
  1. ifechoabcdee|grep-qabc;thenecho"Found"elseecho"Notfound"fi4
复制代码
利用grep查找是不是包含10.0.0.1这个ip地点。罕见的写法:
  1. ifechoabcdee|grep-qabc;thenecho"Found"elseecho"Notfound"fi5
复制代码
复杂的办法(实在这办法不见得复杂,只是为了申明-w这个参数仍是很有效的)
  1. ifechoabcdee|grep-qabc;thenecho"Found"elseecho"Notfound"fi6
复制代码
特地grep的-n/-H/-v/-f/-c这几参数都很有效。
7)一时设置情况变量
罕见的写法:
  1. ifechoabcdee|grep-qabc;thenecho"Found"elseecho"Notfound"fi7
复制代码
简便的写法:
  1. ifechoabcdee|grep-qabc;thenecho"Found"elseecho"Notfound"fi8
复制代码
在命令之前加上情况变动的设置,只是一时改动以后实行命令的情况。
8)$1,$2…等地位参数的利用
假定只想利用$2,$3..这几个参数,罕见的做法是:
  1. ifechoabcdee|grep-qabc;thenecho"Found"elseecho"Notfound"fi9
复制代码
为何不如许写呢?
  1. [SunNov0405:58AM][kodango@devops]~/workspace$echoabcdee|grep-qabc&&echo"Found"||echo"Notfound"Found0
复制代码
9)退而求其次的写法
信任人人会有这类需求,当一个参数值没有供应时,可使用默许值。罕见的写法是:
  1. [SunNov0405:58AM][kodango@devops]~/workspace$echoabcdee|grep-qabc&&echo"Found"||echo"Notfound"Found1
复制代码
简便的写法是如许的:
  1. [SunNov0405:58AM][kodango@devops]~/workspace$echoabcdee|grep-qabc&&echo"Found"||echo"Notfound"Found2
复制代码
10)bash特别参数–的用法
假定要用grep查找字符串中是不是包括-i,我们会如许实验:
  1. [SunNov0405:58AM][kodango@devops]~/workspace$echoabcdee|grep-qabc&&echo"Found"||echo"Notfound"Found3
复制代码
简便的办法是:
  1. [SunNov0405:58AM][kodango@devops]~/workspace$echoabcdee|grep-qabc&&echo"Found"||echo"Notfound"Found4
复制代码
bash中–前面的参数不会被看成选项剖析。
11)函数的前往值默许是最初一行语句的前往值
  1. [SunNov0405:58AM][kodango@devops]~/workspace$echoabcdee|grep-qabc&&echo"Found"||echo"Notfound"Found5
复制代码
不要多此一举再在前面加一行return$?了。
12)将printf格局化的了局赋值给变量
比方将数字转换成其十六进制情势,罕见的写法是:
  1. [SunNov0405:58AM][kodango@devops]~/workspace$echoabcdee|grep-qabc&&echo"Found"||echo"Notfound"Found6
复制代码
复杂的写法是:
  1. [SunNov0405:58AM][kodango@devops]~/workspace$echoabcdee|grep-qabc&&echo"Found"||echo"Notfound"Found7
复制代码
看看printf的help
  1. [SunNov0405:58AM][kodango@devops]~/workspace$echoabcdee|grep-qabc&&echo"Found"||echo"Notfound"Found8
复制代码
13)打印文件行
打印文件的第一行:
  1. [SunNov0405:58AM][kodango@devops]~/workspace$echoabcdee|grep-qabc&&echo"Found"||echo"Notfound"Found9
复制代码
打印文件的第2行:
  1. grep"abc"test.txt1>/dev/null2>&10
复制代码
打印文件的第2到5行:
  1. grep"abc"test.txt1>/dev/null2>&11
复制代码
打印文件的第2行始(包含第2行在内)5行的内容:
  1. grep"abc"test.txt1>/dev/null2>&12
复制代码
打印倒数第二行:
  1. grep"abc"test.txt1>/dev/null2>&13
复制代码
14)善用let大概(())命令做算术运算
怎样对一个数字做++运算,大概你会如许用:
  1. grep"abc"test.txt1>/dev/null2>&14
复制代码
为什么不必你熟习的:
  1. grep"abc"test.txt1>/dev/null2>&15
复制代码
15)猎取软毗连指定的实在文件名
假如你不晓得,你大概会如许猎取:
  1. grep"abc"test.txt1>/dev/null2>&16
复制代码
假如你晓得有一个叫readlink的命令,那末:
  1. grep"abc"test.txt1>/dev/null2>&17
复制代码
16)猎取一个字符的ASCII码
  1. grep"abc"test.txt1>/dev/null2>&18
复制代码
17)清空一个文件
罕见的用法:
  1. grep"abc"test.txt1>/dev/null2>&19
复制代码
复杂的写法:
  1. grep"abc"test.txt2>&11>/dev/null0
复制代码
18)不要健忘有heredocument
作者: 透明    时间: 2015-1-21 06:35
可以说自己收获很大,基本上完成了老师布置的任务,对于拔高的题目没有去做,因为我了解我的水平,没有时间和精力去做。?
作者: admin    时间: 2015-1-27 05:05
在学习linux的工程中,linux学习方法有很多种,这里是小编的学习心得,给大家拿出来分享一下。
作者: 海妖    时间: 2015-1-28 08:21
在学习的过程中,我们用的是VM虚拟机,开始时真的不真的该怎么去做,特别是我的是命令窗口界面,别人的是图形界面,我都不知道怎么调过来。
作者: 活着的死人    时间: 2015-1-31 18:00
通过自学老师给的资料和向同学请教,掌握了一些基本的操作,比如挂载优盘,编译程序,在Linux环境下运行,转换目录等等。学了这些基础才能进行下面的模拟OS程序。?
作者: 因胸联盟    时间: 2015-2-6 00:31
熟悉操作是日常学习Linux中的三大法宝。以下是作者学习Linux的一些个人经验,供参考:
作者: 老尸    时间: 2015-2-9 03:21
查阅经典工具书和Howto,特别是Howto是全球数以万计的Linux、Unix的经验总结非常有参考价值通常40%的问题同样可以解决。
作者: 再见西城    时间: 2015-2-9 22:49
随着实验课程的结束,理论课也该结束了,说实话教OS的这两位老师是我们遇到过的不错的老师(这话放这可能不太恰当).
作者: 变相怪杰    时间: 2015-2-27 20:12
为什么要学Linux呢?每个人都有不同的看法,下面我说说自己的感想吧。?
作者: 不帅    时间: 2015-3-9 12:41
Linux?最大的优点在于其作为服务器的强大功能,同时支持多种应用程序及开发工具,所以Linux操作系统有着广泛的应用空间。
作者: 简单生活    时间: 2015-3-20 08:48
熟悉系统的基本操作,Linux的图形界面直观,操作简便,多加上机练习就可熟悉操作,在Linux下学习办公软件等常用软件。
作者: 爱飞    时间: 2015-4-10 18:47
Linux最大的特点就是其开源性,这一点是十分难得的,这也是它能够存在到现在的原因之一。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2