仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1207|回复: 11
打印 上一主题 下一主题

[其他Linux] Linux制作之简便的bash编程技能仓酷云

[复制链接]
谁可相欹 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:26:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
使用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:32 | 只看该作者
可以说自己收获很大,基本上完成了老师布置的任务,对于拔高的题目没有去做,因为我了解我的水平,没有时间和精力去做。?
admin 该用户已被删除
板凳
发表于 2015-1-27 05:05:41 | 只看该作者
在学习linux的工程中,linux学习方法有很多种,这里是小编的学习心得,给大家拿出来分享一下。
海妖 该用户已被删除
地板
发表于 2015-1-28 08:21:56 | 只看该作者
在学习的过程中,我们用的是VM虚拟机,开始时真的不真的该怎么去做,特别是我的是命令窗口界面,别人的是图形界面,我都不知道怎么调过来。
活着的死人 该用户已被删除
5#
发表于 2015-1-31 18:00:34 | 只看该作者
通过自学老师给的资料和向同学请教,掌握了一些基本的操作,比如挂载优盘,编译程序,在Linux环境下运行,转换目录等等。学了这些基础才能进行下面的模拟OS程序。?
因胸联盟 该用户已被删除
6#
发表于 2015-2-6 00:31:14 | 只看该作者
熟悉操作是日常学习Linux中的三大法宝。以下是作者学习Linux的一些个人经验,供参考:
老尸 该用户已被删除
7#
发表于 2015-2-9 03:21:06 | 只看该作者
查阅经典工具书和Howto,特别是Howto是全球数以万计的Linux、Unix的经验总结非常有参考价值通常40%的问题同样可以解决。
再见西城 该用户已被删除
8#
发表于 2015-2-9 22:49:48 | 只看该作者
随着实验课程的结束,理论课也该结束了,说实话教OS的这两位老师是我们遇到过的不错的老师(这话放这可能不太恰当).
变相怪杰 该用户已被删除
9#
发表于 2015-2-27 20:12:32 | 只看该作者
为什么要学Linux呢?每个人都有不同的看法,下面我说说自己的感想吧。?
不帅 该用户已被删除
10#
发表于 2015-3-9 12:41:03 | 只看该作者
Linux?最大的优点在于其作为服务器的强大功能,同时支持多种应用程序及开发工具,所以Linux操作系统有着广泛的应用空间。
简单生活 该用户已被删除
11#
发表于 2015-3-20 08:48:42 | 只看该作者
熟悉系统的基本操作,Linux的图形界面直观,操作简便,多加上机练习就可熟悉操作,在Linux下学习办公软件等常用软件。
爱飞 该用户已被删除
12#
发表于 2015-4-10 18:47:43 | 只看该作者
Linux最大的特点就是其开源性,这一点是十分难得的,这也是它能够存在到现在的原因之一。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-2 20:17

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表